The grant handle must be invalidated only in the error path. Signed-off-by: Jan Beulich --- a/drivers/xen/blktap2/device.c +++ b/drivers/xen/blktap2/device.c @@ -516,8 +516,8 @@ blktap_map_foreign(struct blktap *tap, WARN_ON(table->grants[grant].status == GNTST_eagain); BTERR("invalid user buffer: could not remap it\n"); err |= 1; + table->grants[grant].handle = INVALID_GRANT_HANDLE; } - table->grants[grant].handle = INVALID_GRANT_HANDLE; request->handles[i].user = table->grants[grant].handle; grant++; }