mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 15:29:16 +00:00
xenbus: remove transaction holder from list before freeing
After allocation the item is being placed on the list right away. Consequently it needs to be taken off the list before freeing in the case xenbus_dev_request_and_reply() failed, as in that case the callback (xenbus_dev_queue_reply()) is not being called (and if it was called, it should do both). Fixes: 5584ea250ae44f929feb4c7bd3877d1c5edbf813 Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Juergen Gross <jgross@suse.com> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
This commit is contained in:
parent
1914f0cd20
commit
ac4cde398a
@ -442,8 +442,10 @@ static int xenbus_write_transaction(unsigned msg_type,
|
|||||||
return xenbus_command_reply(u, XS_ERROR, "ENOENT");
|
return xenbus_command_reply(u, XS_ERROR, "ENOENT");
|
||||||
|
|
||||||
rc = xenbus_dev_request_and_reply(&u->u.msg, u);
|
rc = xenbus_dev_request_and_reply(&u->u.msg, u);
|
||||||
if (rc)
|
if (rc && trans) {
|
||||||
|
list_del(&trans->list);
|
||||||
kfree(trans);
|
kfree(trans);
|
||||||
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
return rc;
|
return rc;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user