]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scsi: virtio_scsi: Add validation for residual bytes from response
authorXie Yongji <xieyongji@bytedance.com>
Tue, 15 Jun 2021 10:52:18 +0000 (18:52 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 29 Jun 2021 20:54:08 +0000 (16:54 -0400)
This ensures that the residual bytes in response (might come from an
untrusted device) will not exceed the data buffer length.

Link: https://lore.kernel.org/r/20210615105218.214-1-xieyongji@bytedance.com
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/virtio_scsi.c

index ad78bf631900b78f589aebb62090561ff3820092..b0deaf4af5a37bad00c6ac203b26332ab8706451 100644 (file)
@@ -97,7 +97,7 @@ static inline struct Scsi_Host *virtio_scsi_host(struct virtio_device *vdev)
 static void virtscsi_compute_resid(struct scsi_cmnd *sc, u32 resid)
 {
        if (resid)
-               scsi_set_resid(sc, resid);
+               scsi_set_resid(sc, min(resid, scsi_bufflen(sc)));
 }
 
 /*