]> git.karo-electronics.de Git - karo-tx-linux.git/commit
xen/blkback: correctly respond to unknown, non-native requests
authorDavid Vrabel <david.vrabel@citrix.com>
Thu, 7 Mar 2013 17:32:01 +0000 (17:32 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Apr 2013 17:04:18 +0000 (10:04 -0700)
commit119016c59b6a83cf168f0f1202f2251122f0d5b3
tree8a9ccdc968b15db1a845276aaa9be4492c8b2986
parent2c0260b234031e0dd0266baafbc4d8e1eb580bb6
xen/blkback: correctly respond to unknown, non-native requests

commit 0e367ae46503cfe7791460c8ba8434a5d60b2bd5 upstream.

If the frontend is using a non-native protocol (e.g., a 64-bit
frontend with a 32-bit backend) and it sent an unrecognized request,
the request was not translated and the response would have the
incorrect ID.  This may cause the frontend driver to behave
incorrectly or crash.

Since the ID field in the request is always in the same place,
regardless of the request type we can get the correct ID and make a
valid response (which will report BLKIF_RSP_EOPNOTSUPP).

This bug affected 64-bit SLES 11 guests when using a 32-bit backend.
This guest does a BLKIF_OP_RESERVED_1 (BLKIF_OP_PACKET in the SLES
source) and would crash in blkif_int() as the ID in the response would
be invalid.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/xen-blkback/blkback.c
drivers/block/xen-blkback/common.h
include/xen/interface/io/blkif.h