mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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:
1 parent
7d190bdde9
commit
f2e3b3b2e9
1 file changed
+8
-7
@@ -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;
|
||||
|
||||
|
||||