On 22.04.2020 15:07, Juergen Gross wrote: > --- a/xen/common/grant_table.c > +++ b/xen/common/grant_table.c > @@ -3626,12 +3626,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; > } > > @@ -3641,7 +3641,7 @@ do_grant_table_op( > } > > out: > - if ( rc > 0 || opaque_out != 0 ) > + if ( rc > 0 || (opaque_out != 0 && rc == 0) )
I disagree with this part - opaque_out shouldn't end up non-zero when rc < 0, and it won't anymore with the change in the earlier hunk. Jan