Patch "Fix missing sanity check in /dev/sg" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
Fix missing sanity check in /dev/sg
to the 4.4-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:
fix-missing-sanity-check-in-dev-sg.patch
and it can be found in the queue-4.4 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
137d01df511b3afe1f05499aea05f3bafc0fb221Mon Sep 17 00:00:00 2001
From: Al Viro <[email protected]>
Date: Sun, 19 Feb 2017 07:15:27 +0000
Subject: Fix missing sanity check in /dev/sg
From: Al Viro <[email protected]>
commit 137d01df511b3afe1f05499aea05f3bafc0fb221 upstream.
What happens is that a write to /dev/sg is given a request with non-zero ->iovec_count combined with zero ->dxfer_len. Or with ->dxferp pointing to an array full of empty iovecs.
Having write permission to /dev/sg shouldn't be equivalent to the ability to trigger BUG_ON() while holding spinlocks...
Found by Dmitry Vyukov and syzkaller.
[ The BUG_ON() got changed to a WARN_ON_ONCE(), but this fixes the
underlying issue. - Linus ]
--- drivers/scsi/sg.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/scsi/sg.c +4 -0
@@ -1763,6 +1763,10 @@ sg_start_req(Sg_request *srp, unsigned creturn res;iov_iter_truncate (&i, hp->dxfer_len); +if (!iov_iter_count (&i)) { +kfree (iov); +return -EINVAL ; + } res =blk_rq_map_user_iov (q, rq, md, &i,GFP_ATOMIC );kfree (iov);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/fix-missing-sanity-check-in-dev-sg.patch