correct gnttab_get_status_frames()

In gnttab_get_status_frames() all accesses to nr_status_frames should
be done with the grant table lock held.

While at it correct coding style: labels should be indented by one
space.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
Juergen Gross authored and Jan Beulich committed 2017-09-19 17:48:23 +02:00
1 parent 7d190bdde9
commit f2e3b3b2e9
1 file changed
+8 -7
+8 -7
View File
@@ -2866,19 +2866,19 @@ gnttab_get_status_frames(XEN_GUEST_HANDLE_PARAM(gnttab_get_status_frames_t) uop,
gt = d->grant_table;
op.status = GNTST_okay;
grant_read_lock(gt);
if ( unlikely(op.nr_frames > nr_status_frames(gt)) )
{
gdprintk(XENLOG_INFO, "Guest requested addresses for %d grant status "
"frames, but only %d are available.\n",
op.nr_frames, nr_status_frames(gt));
op.status = GNTST_general_error;
goto out2;
goto unlock;
}
op.status = GNTST_okay;
grant_read_lock(gt);
for ( i = 0; i < op.nr_frames; i++ )
{
gmfn = gnttab_status_gmfn(d, gt, i);
@@ -2886,10 +2886,11 @@ gnttab_get_status_frames(XEN_GUEST_HANDLE_PARAM(gnttab_get_status_frames_t) uop,
op.status = GNTST_bad_virt_addr;
}
unlock:
grant_read_unlock(gt);
out2:
out2:
rcu_unlock_domain(d);
out1:
out1:
if ( unlikely(__copy_field_to_guest(uop, &op, status)) )
return -EFAULT;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.