bsg: Check queue type before attaching to a queue
Since BSG only supports request queues for which struct scsi_request is the first member of their private request data, refuse to register block layer queues for which struct scsi_request is not the first member of their private data. References: commitbd1599d931
("scsi_transport_sas: fix BSG ioctl memory corruption") References: commit82ed4db499
("block: split scsi_request out of struct request") Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Cc: Omar Sandoval <osandov@fb.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
9efc160f4b
commit
d9f9726446
|
@ -750,6 +750,12 @@ static struct bsg_device *bsg_add_device(struct inode *inode,
|
||||||
#ifdef BSG_DEBUG
|
#ifdef BSG_DEBUG
|
||||||
unsigned char buf[32];
|
unsigned char buf[32];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!blk_queue_scsi_passthrough(rq)) {
|
||||||
|
WARN_ONCE(true, "Attempt to register a non-SCSI queue\n");
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
}
|
||||||
|
|
||||||
if (!blk_get_queue(rq))
|
if (!blk_get_queue(rq))
|
||||||
return ERR_PTR(-ENXIO);
|
return ERR_PTR(-ENXIO);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user