Skip to content

Commit 5c4e79e

Browse files
jbeulichjgross1
authored andcommitted
xenfs/xensyms: respect hypervisor's "next" indication
The interface specifies the symnum field as an input and output; the hypervisor sets it to the next sequential symbol's index. xensyms_next() incrementing the position explicitly (and xensyms_next_sym() decrementing it to "rewind") is only correct as long as the sequence of symbol indexes is non-sparse. Use the hypervisor-supplied value instead to update the position in xensyms_next(), and use the saved incoming index in xensyms_next_sym(). Cc: stable@kernel.org Fixes: a11f4f0 ("xen: xensyms support") Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Juergen Gross <jgross@suse.com> Message-ID: <15d5e7fa-ec5d-422f-9319-d28bed916349@suse.com> Signed-off-by: Juergen Gross <jgross@suse.com>
1 parent 1c3dfc7 commit 5c4e79e

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/xen/xenfs/xensyms.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ static int xensyms_next_sym(struct xensyms *xs)
4848
return -ENOMEM;
4949

5050
set_xen_guest_handle(symdata->name, xs->name);
51-
symdata->symnum--; /* Rewind */
51+
symdata->symnum = symnum; /* Rewind */
5252

5353
ret = HYPERVISOR_platform_op(&xs->op);
5454
if (ret < 0)
@@ -78,7 +78,7 @@ static void *xensyms_next(struct seq_file *m, void *p, loff_t *pos)
7878
{
7979
struct xensyms *xs = m->private;
8080

81-
xs->op.u.symdata.symnum = ++(*pos);
81+
*pos = xs->op.u.symdata.symnum;
8282

8383
if (xensyms_next_sym(xs))
8484
return NULL;

0 commit comments

Comments
 (0)