Patch "s390/sclp_ctl: fix potential information leak with /dev/sclp" has been added to the 3.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
s390/sclp_ctl: fix potential information leak with /dev/sclp
to the 3.14-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:
s390-sclp_ctl-fix-potential-information-leak-with-dev-sclp.patch
and it can be found in the queue-3.14 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
532c34b5fbf1687df63b3fcd5b2846312ac943c6Mon Sep 17 00:00:00 2001
From: Martin Schwidefsky <[email protected]>
Date: Mon, 25 Apr 2016 17:54:28 +0200
Subject: s390/sclp_ctl: fix potential information leak with /dev/sclp
From: Martin Schwidefsky <[email protected]>
commit 532c34b5fbf1687df63b3fcd5b2846312ac943c6 upstream.
The sclp_ctl_ioctl_sccb function uses two copy_from_user calls to retrieve the sclp request from user space. The first copy_from_user fetches the length of the request which is stored in the first two bytes of the request. The second copy_from_user gets the complete sclp request, but this copies the length field a second time. A malicious user may have changed the length in the meantime.
--- drivers/s390/char/sclp_ctl.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
drivers/s390/char/sclp_ctl.c +7 -5
@@ -56,6 +56,7 @@ static int sclp_ctl_ioctl_sccb(void __us {struct sclp_ctl_sccb ctl_sccb;struct sccb_header *sccb; +unsigned long copied;int rc;if (copy_from_user (&ctl_sccb, user_area,sizeof (ctl_sccb)))
@@ -65,14 +66,15 @@ static int sclp_ctl_ioctl_sccb(void __us sccb = (void *)get_zeroed_page (GFP_KERNEL |GFP_DMA );if (!sccb)return -ENOMEM ; -if (copy_from_user (sccb,u64_to_uptr (ctl_sccb.sccb),sizeof (*sccb))) { + copied =PAGE_SIZE - +copy_from_user (sccb,u64_to_uptr (ctl_sccb.sccb),PAGE_SIZE ); +if (offsetof(struct sccb_header , length) + +sizeof (sccb->length) > copied || sccb->length > copied) { rc = -EFAULT ; goto out_free; } -if (sccb->length >PAGE_SIZE || sccb->length <8 ) -return -EINVAL ; -if (copy_from_user (sccb,u64_to_uptr (ctl_sccb.sccb), sccb->length)) { - rc = -EFAULT ; +if (sccb->length <8 ) { + rc = -EINVAL ; goto out_free; } rc =sclp_sync_request (ctl_sccb.cmdw, sccb);
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/s390-sclp_ctl-fix-potential-information-leak-with-dev-sclp.patch