diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-05-25 16:11:09 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-05-30 17:20:04 -0400 |
commit | 8c9ce606a60e4a0cb447bdc082ce383b96b227b4 (patch) | |
tree | 75fccf7e0e44f2b863c951e013b17dc215461701 /ipc/util.h | |
parent | 8605067fb9b8e34aecf44ec258657c9cc009fc5a (diff) | |
download | blackbird-op-linux-8c9ce606a60e4a0cb447bdc082ce383b96b227b4.tar.gz blackbird-op-linux-8c9ce606a60e4a0cb447bdc082ce383b96b227b4.zip |
xen/blkback: Copy id field when doing BLKIF_DISCARD.
We weren't copying the id field so when we sent the response
back to the frontend (especially with a 64-bit host and 32-bit
guest), we ended up using a random value. This lead to the
frontend crashing as it would try to pass to __blk_end_request_all
a NULL 'struct request' (b/c it would use the 'id' to find the
proper 'struct request' in its shadow array) and end up crashing:
BUG: unable to handle kernel NULL pointer dereference at 000000e4
IP: [<c0646d4c>] __blk_end_request_all+0xc/0x40
.. snip..
EIP is at __blk_end_request_all+0xc/0x40
.. snip..
[<ed95db72>] blkif_interrupt+0x172/0x330 [xen_blkfront]
This fixes the bug by passing in the proper id for the response.
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=824641
CC: stable@kernel.org
Tested-by: William Dauchy <wdauchy@gmail.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'ipc/util.h')
0 files changed, 0 insertions, 0 deletions