[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging-4.12] xen/grants: fix hypercall continuation for GNTTABOP_cache_flush
commit 9756cbede6772a2c4b225fef4875be65ef75e1f7 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Thu May 7 14:53:13 2020 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu May 7 14:53:13 2020 +0200 xen/grants: fix hypercall continuation for GNTTABOP_cache_flush The GNTTABOP_cache_flush hypercall has a wrong test for hypercall continuation, the test today is: if ( rc > 0 || opaque_out != 0 ) Unfortunately this will be true even in case of an error (rc < 0), possibly leading to very long lasting hypercalls (times of more than an hour have been observed in a test case). Correct the test condition to result in false with rc < 0 and set opaque_out only if no error occurred, to be on the safe side. Partially-suggested-by: Jan Beulich <jbeulich@xxxxxxxx> Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> master commit: 46d8f69d466a05863737fb81d8c9ef39c3be8b45 master date: 2020-04-29 14:12:50 +0100 --- xen/common/grant_table.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 38d5524a0e..1adb173e06 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -3571,12 +3571,12 @@ do_grant_table_op( if ( unlikely(!guest_handle_okay(cflush, count)) ) goto out; rc = gnttab_cache_flush(cflush, &opaque_in, count); - if ( rc > 0 ) + if ( rc >= 0 ) { guest_handle_add_offset(cflush, rc); uop = guest_handle_cast(cflush, void); + opaque_out = opaque_in; } - opaque_out = opaque_in; break; } @@ -3586,7 +3586,7 @@ do_grant_table_op( } out: - if ( rc > 0 || opaque_out != 0 ) + if ( rc > 0 || (opaque_out != 0 && rc == 0) ) { /* Adjust rc, see gnttab_copy() for why this is needed. */ if ( cmd == GNTTABOP_copy ) -- generated by git-patchbot for /home/xen/git/xen.git#staging-4.12
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |