Patch "sg_write()/bsg_write() is not fit to be called under KERNEL_DS" has been added to the 4.9-stable tree
Subsystems (5)
This is a note to let you know that I've just added the patch titled
sg_write()/bsg_write() is not fit to be called under KERNEL_DS
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sg_write-bsg_write-is-not-fit-to-be-called-under-kernel_ds.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
128394eff343fc6d2f32172f03e24829539c5835Mon Sep 17 00:00:00 2001
From: Al Viro <[email protected]>
Date: Fri, 16 Dec 2016 13:42:06 -0500
Subject: sg_write()/bsg_write() is not fit to be called under KERNEL_DS
From: Al Viro <[email protected]>
commit 128394eff343fc6d2f32172f03e24829539c5835 upstream.
Both damn things interpret userland pointers embedded into the payload; worse, they are actually traversing those. Leaving aside the bad API design, this is very much _not_ safe to call with KERNEL_DS. Bail out early if that happens.
--- block/bsg.c | 3 +++ drivers/scsi/sg.c | 3 +++ 2 files changed, 6 insertions(+)
block/bsg.c +3 -0
@@ -655,6 +655,9 @@ bsg_write(struct file *file, const chardprintk ("%s: write %Zd bytes\n" , bd->name, count); +if (unlikely (segment_eq (get_fs (),KERNEL_DS ))) +return -EINVAL ; +bsg_set_block (bd, file); bytes_written =0 ;
drivers/scsi/sg.c +3 -0
@@ -581,6 +581,9 @@ sg_write(struct file *filp, const char _sg_io_hdr_t *hp;unsigned char cmnd[SG_MAX_CDB_SIZE ]; +if (unlikely (segment_eq (get_fs (),KERNEL_DS ))) +return -EINVAL ; +if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))return -ENXIO ; SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sdp,
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/sg_write-bsg_write-is-not-fit-to-be-called-under-kernel_ds.patch queue-4.9/nfs_write_end-fix-handling-of-short-copies.patch