* [PATCH v2] virtio_blk: Fix an SG_IO regression
@ 2017-10-25 9:56 Bart Van Assche
2017-10-25 18:23 ` Jens Axboe
0 siblings, 1 reply; 11+ messages in thread
From: Bart Van Assche @ 2017-10-25 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: linux-block, Christoph Hellwig, Bart Van Assche,
Michael S . Tsirkin, Dann Frazier, stable
Avoid that submitting an SG_IO ioctl triggers a kernel oops that
is preceded by:
usercopy: kernel memory overwrite attempt detected to (null) (<null>) (6 bytes)
kernel BUG at mm/usercopy.c:72!
Reported-by: Dann Frazier <dann.frazier@canonical.com>
Fixes: commit ca18d6f769d2 ("block: Make most scsi_req_init() calls implicit")
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Tested-by: Dann Frazier <dann.frazier@canonical.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Dann Frazier <dann.frazier@canonical.com>
Cc: <stable@vger.kernel.org> # v4.13
---
drivers/block/Kconfig | 1 +
drivers/block/virtio_blk.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index 4a438b8abe27..b0b2100763bf 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -450,6 +450,7 @@ config VIRTIO_BLK_SCSI
bool "SCSI passthrough request for the Virtio block driver"
depends on VIRTIO_BLK
select BLK_SCSI_REQUEST
+ select SCSI_MOD
---help---
Enable support for SCSI passthrough (e.g. the SG_IO ioctl) on
virtio-blk devices. This is only supported for the legacy
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 34e17ee799be..15e11a519801 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -597,6 +597,7 @@ static const struct blk_mq_ops virtio_mq_ops = {
.queue_rq = virtio_queue_rq,
.complete = virtblk_request_done,
.init_request = virtblk_init_request,
+ .initialize_rq_fn = scsi_initialize_rq,
.map_queues = virtblk_map_queues,
};
--
2.14.2
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-25 9:56 [PATCH v2] virtio_blk: Fix an SG_IO regression Bart Van Assche @ 2017-10-25 18:23 ` Jens Axboe 2017-10-25 19:25 ` Bart Van Assche 0 siblings, 1 reply; 11+ messages in thread From: Jens Axboe @ 2017-10-25 18:23 UTC (permalink / raw) To: Bart Van Assche Cc: linux-block, Christoph Hellwig, Michael S . Tsirkin, Dann Frazier, stable On 10/25/2017 02:56 AM, Bart Van Assche wrote: > Avoid that submitting an SG_IO ioctl triggers a kernel oops that > is preceded by: > > usercopy: kernel memory overwrite attempt detected to (null) (<null>) (6 bytes) > kernel BUG at mm/usercopy.c:72! Seems I saw a note on a runtime oops triggered by this patch yesterday, but now I can't seem to find it... Did you see it? > diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig > index 4a438b8abe27..b0b2100763bf 100644 > --- a/drivers/block/Kconfig > +++ b/drivers/block/Kconfig > @@ -450,6 +450,7 @@ config VIRTIO_BLK_SCSI > bool "SCSI passthrough request for the Virtio block driver" > depends on VIRTIO_BLK > select BLK_SCSI_REQUEST > + select SCSI_MOD Should this be SCSI? That's what libata does. It may be correct as-is, didn't look too deeply, just curious why it's different. -- Jens Axboe ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-25 18:23 ` Jens Axboe @ 2017-10-25 19:25 ` Bart Van Assche 0 siblings, 0 replies; 11+ messages in thread From: Bart Van Assche @ 2017-10-25 19:25 UTC (permalink / raw) To: axboe@kernel.dk Cc: hch@lst.de, linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com T24gV2VkLCAyMDE3LTEwLTI1IGF0IDExOjIzIC0wNzAwLCBKZW5zIEF4Ym9lIHdyb3RlOg0KPiBP biAxMC8yNS8yMDE3IDAyOjU2IEFNLCBCYXJ0IFZhbiBBc3NjaGUgd3JvdGU6DQo+ID4gQXZvaWQg dGhhdCBzdWJtaXR0aW5nIGFuIFNHX0lPIGlvY3RsIHRyaWdnZXJzIGEga2VybmVsIG9vcHMgdGhh dA0KPiA+IGlzIHByZWNlZGVkIGJ5Og0KPiA+IA0KPiA+IHVzZXJjb3B5OiBrZXJuZWwgbWVtb3J5 IG92ZXJ3cml0ZSBhdHRlbXB0IGRldGVjdGVkIHRvIChudWxsKSAoPG51bGw+KSAoNiBieXRlcykN Cj4gPiBrZXJuZWwgQlVHIGF0IG1tL3VzZXJjb3B5LmM6NzIhDQo+IA0KPiBTZWVtcyBJIHNhdyBh IG5vdGUgb24gYSBydW50aW1lIG9vcHMgdHJpZ2dlcmVkIGJ5IHRoaXMgcGF0Y2ggeWVzdGVyZGF5 LA0KPiBidXQgbm93IEkgY2FuJ3Qgc2VlbSB0byBmaW5kIGl0Li4uIERpZCB5b3Ugc2VlIGl0Pw0K DQpEbyB5b3UgcGVyaGFwcyB3YW50IG1lIHRvIGFkZCB0aGUgc3RhY2sgdHJhY2UgZnJvbSB0aGUg Zm9sbG93aW5nIGUtbWFpbCB0bw0KdGhlIHBhdGNoIGRlc2NyaXB0aW9uOiBodHRwczovL21hcmMu aW5mby8/bD1saW51eC1hcm0ta2VybmVsJm09MTUwODU0MDEwMzIxODMzID8NCg0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL0tjb25maWcgYi9kcml2ZXJzL2Jsb2NrL0tjb25maWcNCj4g PiBpbmRleCA0YTQzOGI4YWJlMjcuLmIwYjIxMDA3NjNiZiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2 ZXJzL2Jsb2NrL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL2Jsb2NrL0tjb25maWcNCj4gPiBA QCAtNDUwLDYgKzQ1MCw3IEBAIGNvbmZpZyBWSVJUSU9fQkxLX1NDU0kNCj4gPiAgCWJvb2wgIlND U0kgcGFzc3Rocm91Z2ggcmVxdWVzdCBmb3IgdGhlIFZpcnRpbyBibG9jayBkcml2ZXIiDQo+ID4g IAlkZXBlbmRzIG9uIFZJUlRJT19CTEsNCj4gPiAgCXNlbGVjdCBCTEtfU0NTSV9SRVFVRVNUDQo+ ID4gKwlzZWxlY3QgU0NTSV9NT0QNCj4gDQo+IFNob3VsZCB0aGlzIGJlIFNDU0k/IFRoYXQncyB3 aGF0IGxpYmF0YSBkb2VzLiBJdCBtYXkgYmUgY29ycmVjdCBhcy1pcywNCj4gZGlkbid0IGxvb2sg dG9vIGRlZXBseSwganVzdCBjdXJpb3VzIHdoeSBpdCdzIGRpZmZlcmVudC4NCg0KVGhhdCBpcyB3 aGF0IEkgY2FtZSB1cCB3aXRoIGFmdGVyIGhhdmluZyBoYWQgYSBsb29rIGF0IGRyaXZlcnMvc2Nz aS9NYWtlZmlsZS4NCkJ1dCBhZnRlciBoYXZpbmcgY2hlY2tlZCBkcml2ZXJzL3Njc2kvS2NvbmZp ZyBJIHRoaW5rIHdlIGluZGVlZCBuZWVkIHRvIHNlbGVjdA0KU0NTSSBpbnN0ZWFkIG9mIFNDU0lf TU9ELg0KDQpCYXJ0Lg== ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression @ 2017-10-25 19:25 ` Bart Van Assche 0 siblings, 0 replies; 11+ messages in thread From: Bart Van Assche @ 2017-10-25 19:25 UTC (permalink / raw) To: axboe@kernel.dk Cc: hch@lst.de, linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com On Wed, 2017-10-25 at 11:23 -0700, Jens Axboe wrote: > On 10/25/2017 02:56 AM, Bart Van Assche wrote: > > Avoid that submitting an SG_IO ioctl triggers a kernel oops that > > is preceded by: > > > > usercopy: kernel memory overwrite attempt detected to (null) (<null>) (6 bytes) > > kernel BUG at mm/usercopy.c:72! > > Seems I saw a note on a runtime oops triggered by this patch yesterday, > but now I can't seem to find it... Did you see it? Do you perhaps want me to add the stack trace from the following e-mail to the patch description: https://marc.info/?l=linux-arm-kernel&m=150854010321833 ? > > diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig > > index 4a438b8abe27..b0b2100763bf 100644 > > --- a/drivers/block/Kconfig > > +++ b/drivers/block/Kconfig > > @@ -450,6 +450,7 @@ config VIRTIO_BLK_SCSI > > bool "SCSI passthrough request for the Virtio block driver" > > depends on VIRTIO_BLK > > select BLK_SCSI_REQUEST > > + select SCSI_MOD > > Should this be SCSI? That's what libata does. It may be correct as-is, > didn't look too deeply, just curious why it's different. That is what I came up with after having had a look at drivers/scsi/Makefile. But after having checked drivers/scsi/Kconfig I think we indeed need to select SCSI instead of SCSI_MOD. Bart. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-25 19:25 ` Bart Van Assche (?) @ 2017-10-25 19:34 ` Jens Axboe 2017-10-25 19:37 ` hch 2017-10-26 4:44 ` Bart Van Assche -1 siblings, 2 replies; 11+ messages in thread From: Jens Axboe @ 2017-10-25 19:34 UTC (permalink / raw) To: Bart Van Assche Cc: hch@lst.de, linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com On 10/25/2017 12:25 PM, Bart Van Assche wrote: > On Wed, 2017-10-25 at 11:23 -0700, Jens Axboe wrote: >> On 10/25/2017 02:56 AM, Bart Van Assche wrote: >>> Avoid that submitting an SG_IO ioctl triggers a kernel oops that >>> is preceded by: >>> >>> usercopy: kernel memory overwrite attempt detected to (null) (<null>) (6 bytes) >>> kernel BUG at mm/usercopy.c:72! >> >> Seems I saw a note on a runtime oops triggered by this patch yesterday, >> but now I can't seem to find it... Did you see it? > > Do you perhaps want me to add the stack trace from the following e-mail to > the patch description: https://marc.info/?l=linux-arm-kernel&m=150854010321833 ? It was an oops reported against the current patch, unless I'm mistaken. Hard to say, when I can't find the email this morning, may have been deleted... That's why I asked if you saw it. >>> diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig >>> index 4a438b8abe27..b0b2100763bf 100644 >>> --- a/drivers/block/Kconfig >>> +++ b/drivers/block/Kconfig >>> @@ -450,6 +450,7 @@ config VIRTIO_BLK_SCSI >>> bool "SCSI passthrough request for the Virtio block driver" >>> depends on VIRTIO_BLK >>> select BLK_SCSI_REQUEST >>> + select SCSI_MOD >> >> Should this be SCSI? That's what libata does. It may be correct as-is, >> didn't look too deeply, just curious why it's different. > > That is what I came up with after having had a look at drivers/scsi/Makefile. > But after having checked drivers/scsi/Kconfig I think we indeed need to select > SCSI instead of SCSI_MOD. I think so. -- Jens Axboe ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-25 19:34 ` Jens Axboe @ 2017-10-25 19:37 ` hch 2017-10-26 4:33 ` Bart Van Assche 2017-10-26 4:44 ` Bart Van Assche 1 sibling, 1 reply; 11+ messages in thread From: hch @ 2017-10-25 19:37 UTC (permalink / raw) To: Jens Axboe Cc: Bart Van Assche, hch@lst.de, linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com Honestly I think the right fix is to just kill the SCSI passthrough in virtio. It has been replaced by virtio-scsi a long time ago, and has been disabled by default in qemu for a long time (and I don't think any other hypervisor ever supported it). It should never have been added (saying that as the person who added it). ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-25 19:37 ` hch @ 2017-10-26 4:33 ` Bart Van Assche 0 siblings, 0 replies; 11+ messages in thread From: Bart Van Assche @ 2017-10-26 4:33 UTC (permalink / raw) To: hch@lst.de, axboe@kernel.dk Cc: linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com T24gV2VkLCAyMDE3LTEwLTI1IGF0IDIxOjM3ICswMjAwLCBoY2hAbHN0LmRlIHdyb3RlOg0KPiBI b25lc3RseSBJIHRoaW5rIHRoZSByaWdodCBmaXggaXMgdG8ganVzdCBraWxsIHRoZSBTQ1NJIHBh c3N0aHJvdWdoDQo+IGluIHZpcnRpby4gIEl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHZpcnRpby1z Y3NpIGEgbG9uZyB0aW1lIGFnbywgYW5kDQo+IGhhcyBiZWVuIGRpc2FibGVkIGJ5IGRlZmF1bHQg aW4gcWVtdSBmb3IgYSBsb25nIHRpbWUgKGFuZCBJIGRvbid0DQo+IHRoaW5rIGFueSBvdGhlciBo eXBlcnZpc29yIGV2ZXIgc3VwcG9ydGVkIGl0KS4NCj4gDQo+IEl0IHNob3VsZCBuZXZlciBoYXZl IGJlZW4gYWRkZWQgKHNheWluZyB0aGF0IGFzIHRoZSBwZXJzb24gd2hvIGFkZGVkDQo+IGl0KS4N Cg0KSGVsbG8gQ2hyaXN0b3BoLA0KDQpTb3JyeSBidXQgSSdtIG5vdCBmYW1pbGlhciBlbm91Z2gg d2l0aCB0aGUgdmlydGlvX2JsayBkcml2ZXIgdG8gZG8gdGhhdA0KcmVtb3ZhbCBteXNlbGYuIFNp bmNlIHRoZSBwYXRjaCBhdCB0aGUgc3RhcnQgb2YgdGhpcyBlLW1haWwgdGhyZWFkIGhhcw0KYSAi Q2M6IHN0YWJsZSIgdGFnLCBjYW4geW91IHN1Ym1pdCBzdWNoIGEgcGF0Y2ggYWZ0ZXIgdGhpcyBw YXRjaCB3ZW50DQppbj8NCg0KVGhhbmtzLA0KDQpCYXJ0Lg== ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression @ 2017-10-26 4:33 ` Bart Van Assche 0 siblings, 0 replies; 11+ messages in thread From: Bart Van Assche @ 2017-10-26 4:33 UTC (permalink / raw) To: hch@lst.de, axboe@kernel.dk Cc: linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com On Wed, 2017-10-25 at 21:37 +0200, hch@lst.de wrote: > Honestly I think the right fix is to just kill the SCSI passthrough > in virtio. It has been replaced by virtio-scsi a long time ago, and > has been disabled by default in qemu for a long time (and I don't > think any other hypervisor ever supported it). > > It should never have been added (saying that as the person who added > it). Hello Christoph, Sorry but I'm not familiar enough with the virtio_blk driver to do that removal myself. Since the patch at the start of this e-mail thread has a "Cc: stable" tag, can you submit such a patch after this patch went in? Thanks, Bart. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-26 4:33 ` Bart Van Assche (?) @ 2017-10-26 4:38 ` Jens Axboe -1 siblings, 0 replies; 11+ messages in thread From: Jens Axboe @ 2017-10-26 4:38 UTC (permalink / raw) To: Bart Van Assche, hch@lst.de Cc: linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com On 10/25/2017 09:33 PM, Bart Van Assche wrote: > On Wed, 2017-10-25 at 21:37 +0200, hch@lst.de wrote: >> Honestly I think the right fix is to just kill the SCSI passthrough >> in virtio. It has been replaced by virtio-scsi a long time ago, and >> has been disabled by default in qemu for a long time (and I don't >> think any other hypervisor ever supported it). >> >> It should never have been added (saying that as the person who added >> it). > > Hello Christoph, > > Sorry but I'm not familiar enough with the virtio_blk driver to do that > removal myself. Since the patch at the start of this e-mail thread has > a "Cc: stable" tag, can you submit such a patch after this patch went > in? Something like the below. But yes, we should probably get the simple fix in, then kill it after, since the fix is targeting stable and the current series. diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig index 2dfe99b328f8..9fac2b724577 100644 --- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -446,16 +446,6 @@ config VIRTIO_BLK This is the virtual block driver for virtio. It can be used with QEMU based VMMs (like KVM or Xen). Say Y or M. -config VIRTIO_BLK_SCSI - bool "SCSI passthrough request for the Virtio block driver" - depends on VIRTIO_BLK - select BLK_SCSI_REQUEST - ---help--- - Enable support for SCSI passthrough (e.g. the SG_IO ioctl) on - virtio-blk devices. This is only supported for the legacy - virtio protocol and not enabled by default by any hypervisor. - You probably want to use virtio-scsi instead. - config BLK_DEV_RBD tristate "Rados block device (RBD)" depends on INET && BLOCK diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 34e17ee799be..1764df4f1c60 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -10,7 +10,6 @@ #include <linux/virtio_blk.h> #include <linux/scatterlist.h> #include <linux/string_helpers.h> -#include <scsi/scsi_cmnd.h> #include <linux/idr.h> #include <linux/blk-mq.h> #include <linux/blk-mq-virtio.h> @@ -54,11 +53,6 @@ struct virtio_blk { }; struct virtblk_req { -#ifdef CONFIG_VIRTIO_BLK_SCSI - struct scsi_request sreq; /* for SCSI passthrough, must be first */ - u8 sense[SCSI_SENSE_BUFFERSIZE]; - struct virtio_scsi_inhdr in_hdr; -#endif struct virtio_blk_outhdr out_hdr; u8 status; struct scatterlist sg[]; @@ -76,80 +70,6 @@ static inline blk_status_t virtblk_result(struct virtblk_req *vbr) } } -/* - * If this is a packet command we need a couple of additional headers. Behind - * the normal outhdr we put a segment with the scsi command block, and before - * the normal inhdr we put the sense data and the inhdr with additional status - * information. - */ -#ifdef CONFIG_VIRTIO_BLK_SCSI -static int virtblk_add_req_scsi(struct virtqueue *vq, struct virtblk_req *vbr, - struct scatterlist *data_sg, bool have_data) -{ - struct scatterlist hdr, status, cmd, sense, inhdr, *sgs[6]; - unsigned int num_out = 0, num_in = 0; - - sg_init_one(&hdr, &vbr->out_hdr, sizeof(vbr->out_hdr)); - sgs[num_out++] = &hdr; - sg_init_one(&cmd, vbr->sreq.cmd, vbr->sreq.cmd_len); - sgs[num_out++] = &cmd; - - if (have_data) { - if (vbr->out_hdr.type & cpu_to_virtio32(vq->vdev, VIRTIO_BLK_T_OUT)) - sgs[num_out++] = data_sg; - else - sgs[num_out + num_in++] = data_sg; - } - - sg_init_one(&sense, vbr->sense, SCSI_SENSE_BUFFERSIZE); - sgs[num_out + num_in++] = &sense; - sg_init_one(&inhdr, &vbr->in_hdr, sizeof(vbr->in_hdr)); - sgs[num_out + num_in++] = &inhdr; - sg_init_one(&status, &vbr->status, sizeof(vbr->status)); - sgs[num_out + num_in++] = &status; - - return virtqueue_add_sgs(vq, sgs, num_out, num_in, vbr, GFP_ATOMIC); -} - -static inline void virtblk_scsi_request_done(struct request *req) -{ - struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); - struct virtio_blk *vblk = req->q->queuedata; - struct scsi_request *sreq = &vbr->sreq; - - sreq->resid_len = virtio32_to_cpu(vblk->vdev, vbr->in_hdr.residual); - sreq->sense_len = virtio32_to_cpu(vblk->vdev, vbr->in_hdr.sense_len); - sreq->result = virtio32_to_cpu(vblk->vdev, vbr->in_hdr.errors); -} - -static int virtblk_ioctl(struct block_device *bdev, fmode_t mode, - unsigned int cmd, unsigned long data) -{ - struct gendisk *disk = bdev->bd_disk; - struct virtio_blk *vblk = disk->private_data; - - /* - * Only allow the generic SCSI ioctls if the host can support it. - */ - if (!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_SCSI)) - return -ENOTTY; - - return scsi_cmd_blk_ioctl(bdev, mode, cmd, - (void __user *)data); -} -#else -static inline int virtblk_add_req_scsi(struct virtqueue *vq, - struct virtblk_req *vbr, struct scatterlist *data_sg, - bool have_data) -{ - return -EIO; -} -static inline void virtblk_scsi_request_done(struct request *req) -{ -} -#define virtblk_ioctl NULL -#endif /* CONFIG_VIRTIO_BLK_SCSI */ - static int virtblk_add_req(struct virtqueue *vq, struct virtblk_req *vbr, struct scatterlist *data_sg, bool have_data) { @@ -176,13 +96,6 @@ static inline void virtblk_request_done(struct request *req) { struct virtblk_req *vbr = blk_mq_rq_to_pdu(req); - switch (req_op(req)) { - case REQ_OP_SCSI_IN: - case REQ_OP_SCSI_OUT: - virtblk_scsi_request_done(req); - break; - } - blk_mq_end_request(req, virtblk_result(vbr)); } @@ -237,10 +150,6 @@ static blk_status_t virtio_queue_rq(struct blk_mq_hw_ctx *hctx, case REQ_OP_FLUSH: type = VIRTIO_BLK_T_FLUSH; break; - case REQ_OP_SCSI_IN: - case REQ_OP_SCSI_OUT: - type = VIRTIO_BLK_T_SCSI_CMD; - break; case REQ_OP_DRV_IN: type = VIRTIO_BLK_T_GET_ID; break; @@ -265,10 +174,7 @@ static blk_status_t virtio_queue_rq(struct blk_mq_hw_ctx *hctx, } spin_lock_irqsave(&vblk->vqs[qid].lock, flags); - if (blk_rq_is_scsi(req)) - err = virtblk_add_req_scsi(vblk->vqs[qid].vq, vbr, vbr->sg, num); - else - err = virtblk_add_req(vblk->vqs[qid].vq, vbr, vbr->sg, num); + err = virtblk_add_req(vblk->vqs[qid].vq, vbr, vbr->sg, num); if (err) { virtqueue_kick(vblk->vqs[qid].vq); blk_mq_stop_hw_queue(hctx); @@ -336,7 +242,6 @@ static int virtblk_getgeo(struct block_device *bd, struct hd_geometry *geo) } static const struct block_device_operations virtblk_fops = { - .ioctl = virtblk_ioctl, .owner = THIS_MODULE, .getgeo = virtblk_getgeo, }; @@ -579,9 +484,6 @@ static int virtblk_init_request(struct blk_mq_tag_set *set, struct request *rq, struct virtio_blk *vblk = set->driver_data; struct virtblk_req *vbr = blk_mq_rq_to_pdu(rq); -#ifdef CONFIG_VIRTIO_BLK_SCSI - vbr->sreq.sense = vbr->sense; -#endif sg_init_table(vbr->sg, vblk->sg_elems); return 0; } @@ -871,9 +773,6 @@ static const struct virtio_device_id id_table[] = { static unsigned int features_legacy[] = { VIRTIO_BLK_F_SEG_MAX, VIRTIO_BLK_F_SIZE_MAX, VIRTIO_BLK_F_GEOMETRY, VIRTIO_BLK_F_RO, VIRTIO_BLK_F_BLK_SIZE, -#ifdef CONFIG_VIRTIO_BLK_SCSI - VIRTIO_BLK_F_SCSI, -#endif VIRTIO_BLK_F_FLUSH, VIRTIO_BLK_F_TOPOLOGY, VIRTIO_BLK_F_CONFIG_WCE, VIRTIO_BLK_F_MQ, } -- Jens Axboe ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression 2017-10-25 19:34 ` Jens Axboe @ 2017-10-26 4:44 ` Bart Van Assche 2017-10-26 4:44 ` Bart Van Assche 1 sibling, 0 replies; 11+ messages in thread From: Bart Van Assche @ 2017-10-26 4:44 UTC (permalink / raw) To: axboe@kernel.dk Cc: hch@lst.de, linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com T24gV2VkLCAyMDE3LTEwLTI1IGF0IDEyOjM0IC0wNzAwLCBKZW5zIEF4Ym9lIHdyb3RlOg0KPiBP biAxMC8yNS8yMDE3IDEyOjI1IFBNLCBCYXJ0IFZhbiBBc3NjaGUgd3JvdGU6DQo+ID4gT24gV2Vk LCAyMDE3LTEwLTI1IGF0IDExOjIzIC0wNzAwLCBKZW5zIEF4Ym9lIHdyb3RlOg0KPiA+ID4gT24g MTAvMjUvMjAxNyAwMjo1NiBBTSwgQmFydCBWYW4gQXNzY2hlIHdyb3RlOg0KPiA+ID4gPiBBdm9p ZCB0aGF0IHN1Ym1pdHRpbmcgYW4gU0dfSU8gaW9jdGwgdHJpZ2dlcnMgYSBrZXJuZWwgb29wcyB0 aGF0DQo+ID4gPiA+IGlzIHByZWNlZGVkIGJ5Og0KPiA+ID4gPiANCj4gPiA+ID4gdXNlcmNvcHk6 IGtlcm5lbCBtZW1vcnkgb3ZlcndyaXRlIGF0dGVtcHQgZGV0ZWN0ZWQgdG8gKG51bGwpICg8bnVs bD4pICg2IGJ5dGVzKQ0KPiA+ID4gPiBrZXJuZWwgQlVHIGF0IG1tL3VzZXJjb3B5LmM6NzIhDQo+ ID4gPiANCj4gPiA+IFNlZW1zIEkgc2F3IGEgbm90ZSBvbiBhIHJ1bnRpbWUgb29wcyB0cmlnZ2Vy ZWQgYnkgdGhpcyBwYXRjaCB5ZXN0ZXJkYXksDQo+ID4gPiBidXQgbm93IEkgY2FuJ3Qgc2VlbSB0 byBmaW5kIGl0Li4uIERpZCB5b3Ugc2VlIGl0Pw0KPiA+IA0KPiA+IERvIHlvdSBwZXJoYXBzIHdh bnQgbWUgdG8gYWRkIHRoZSBzdGFjayB0cmFjZSBmcm9tIHRoZSBmb2xsb3dpbmcgZS1tYWlsIHRv DQo+ID4gdGhlIHBhdGNoIGRlc2NyaXB0aW9uOiBodHRwczovL21hcmMuaW5mby8/bD1saW51eC1h cm0ta2VybmVsJm09MTUwODU0MDEwMzIxODMzID8NCj4gDQo+IEl0IHdhcyBhbiBvb3BzIHJlcG9y dGVkIGFnYWluc3QgdGhlIGN1cnJlbnQgcGF0Y2gsIHVubGVzcyBJJ20gbWlzdGFrZW4uIEhhcmQN Cj4gdG8gc2F5LCB3aGVuIEkgY2FuJ3QgZmluZCB0aGUgZW1haWwgdGhpcyBtb3JuaW5nLCBtYXkg aGF2ZSBiZWVuIGRlbGV0ZWQuLi4NCj4gVGhhdCdzIHdoeSBJIGFza2VkIGlmIHlvdSBzYXcgaXQu DQoNCkp1c3QgZm91bmQgaXQ6IGE1NzA4NDNlZTkgKCJ2aXJ0aW9fYmxrOiBGaXggYW4gU0dfSU8g cmVncmVzc2lvbiIpOiBrZXJuZWwgQlVHIGF0DQppbmNsdWRlL2xpbnV4L3NjYXR0ZXJsaXN0Lmg6 OTIhIChodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNy8xMC8yNC8xMTE3KS4gV2lsbCBoYXZlDQph IGxvb2suDQoNCkJhcnQuDQo= ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] virtio_blk: Fix an SG_IO regression @ 2017-10-26 4:44 ` Bart Van Assche 0 siblings, 0 replies; 11+ messages in thread From: Bart Van Assche @ 2017-10-26 4:44 UTC (permalink / raw) To: axboe@kernel.dk Cc: hch@lst.de, linux-block@vger.kernel.org, mst@redhat.com, stable@vger.kernel.org, dann.frazier@canonical.com On Wed, 2017-10-25 at 12:34 -0700, Jens Axboe wrote: > On 10/25/2017 12:25 PM, Bart Van Assche wrote: > > On Wed, 2017-10-25 at 11:23 -0700, Jens Axboe wrote: > > > On 10/25/2017 02:56 AM, Bart Van Assche wrote: > > > > Avoid that submitting an SG_IO ioctl triggers a kernel oops that > > > > is preceded by: > > > > > > > > usercopy: kernel memory overwrite attempt detected to (null) (<null>) (6 bytes) > > > > kernel BUG at mm/usercopy.c:72! > > > > > > Seems I saw a note on a runtime oops triggered by this patch yesterday, > > > but now I can't seem to find it... Did you see it? > > > > Do you perhaps want me to add the stack trace from the following e-mail to > > the patch description: https://marc.info/?l=linux-arm-kernel&m=150854010321833 ? > > It was an oops reported against the current patch, unless I'm mistaken. Hard > to say, when I can't find the email this morning, may have been deleted... > That's why I asked if you saw it. Just found it: a570843ee9 ("virtio_blk: Fix an SG_IO regression"): kernel BUG at include/linux/scatterlist.h:92! (https://lkml.org/lkml/2017/10/24/1117). Will have a look. Bart. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-10-26 4:44 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-10-25 9:56 [PATCH v2] virtio_blk: Fix an SG_IO regression Bart Van Assche 2017-10-25 18:23 ` Jens Axboe 2017-10-25 19:25 ` Bart Van Assche 2017-10-25 19:25 ` Bart Van Assche 2017-10-25 19:34 ` Jens Axboe 2017-10-25 19:37 ` hch 2017-10-26 4:33 ` Bart Van Assche 2017-10-26 4:33 ` Bart Van Assche 2017-10-26 4:38 ` Jens Axboe 2017-10-26 4:44 ` Bart Van Assche 2017-10-26 4:44 ` Bart Van Assche
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.