]> xenbits.xensource.com Git - qemu-upstream-4.3-testing.git/commit
xen_disk: mark ioreq as mapped before unmapping in error case qemu-xen-4.3.1 qemu-xen-4.3.1-rc2 qemu-xen-4.3.2 qemu-xen-4.3.2-rc1 qemu-xen-4.3.3
authorMatthew Daley <mattjd@gmail.com>
Thu, 10 Oct 2013 14:15:47 +0000 (14:15 +0000)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Thu, 10 Oct 2013 14:20:18 +0000 (14:20 +0000)
commite16435c95be86244bd92c5c26579bd4298aa65a6
tree39b77204e4561862799be59c77b519075dba7f47
parent5fefb0fa48e72488f37f0012ee18c93beeac1388
xen_disk: mark ioreq as mapped before unmapping in error case

Commit 4472beae modified the semantics of ioreq_{un,}map so that they are
idempotent if called when they're not needed (ie., twice in a row). However,
it neglected to handle the case where batch mapping is not being used (the
default), and one of the grants fails to map. In this case, ioreq_unmap will
be called to unwind and unmap any mappings already performed, but ioreq_unmap
simply returns due to the aforementioned change (the ioreq has not already
been marked as mapped).

The frontend user can therefore force xen_disk to leak grant mappings, a
per-domain limited resource.

Fix by marking the ioreq as mapped before calling ioreq_unmap in this
situation.

Signed-off-by: Matthew Daley <mattjd@gmail.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
hw/xen_disk.c