From: Willy Tarreau <w@1wt.eu>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Dave Carroll <david.carroll@microsemi.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Willy Tarreau <w@1wt.eu>
Subject: [PATCH 3.10 07/16] aacraid: Check size values after double-fetch from user
Date: Thu, 20 Oct 2016 00:49:31 +0200 [thread overview]
Message-ID: <1476917380-28311-8-git-send-email-w@1wt.eu> (raw)
In-Reply-To: <1476917380-28311-1-git-send-email-w@1wt.eu>
From: Dave Carroll <david.carroll@microsemi.com>
commit fa00c437eef8dc2e7b25f8cd868cfa405fcc2bb3 upstream.
In aacraid's ioctl_send_fib() we do two fetches from userspace, one the
get the fib header's size and one for the fib itself. Later we use the
size field from the second fetch to further process the fib. If for some
reason the size from the second fetch is different than from the first
fix, we may encounter an out-of- bounds access in aac_fib_send(). We
also check the sender size to insure it is not out of bounds. This was
reported in https://bugzilla.kernel.org/show_bug.cgi?id=116751 and was
assigned CVE-2016-6480.
Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
Fixes: 7c00ffa31 '[SCSI] 2.6 aacraid: Variable FIB size (updated patch)'
Cc: stable@vger.kernel.org
Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
---
drivers/scsi/aacraid/commctrl.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
index ee6cadd..d6fcadd 100644
--- a/drivers/scsi/aacraid/commctrl.c
+++ b/drivers/scsi/aacraid/commctrl.c
@@ -63,7 +63,7 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg)
struct fib *fibptr;
struct hw_fib * hw_fib = (struct hw_fib *)0;
dma_addr_t hw_fib_pa = (dma_addr_t)0LL;
- unsigned size;
+ unsigned int size, osize;
int retval;
if (dev->in_reset) {
@@ -87,7 +87,8 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg)
* will not overrun the buffer when we copy the memory. Return
* an error if we would.
*/
- size = le16_to_cpu(kfib->header.Size) + sizeof(struct aac_fibhdr);
+ osize = size = le16_to_cpu(kfib->header.Size) +
+ sizeof(struct aac_fibhdr);
if (size < le16_to_cpu(kfib->header.SenderSize))
size = le16_to_cpu(kfib->header.SenderSize);
if (size > dev->max_fib_size) {
@@ -118,6 +119,14 @@ static int ioctl_send_fib(struct aac_dev * dev, void __user *arg)
goto cleanup;
}
+ /* Sanity check the second copy */
+ if ((osize != le16_to_cpu(kfib->header.Size) +
+ sizeof(struct aac_fibhdr))
+ || (size < le16_to_cpu(kfib->header.SenderSize))) {
+ retval = -EINVAL;
+ goto cleanup;
+ }
+
if (kfib->header.Command == cpu_to_le16(TakeABreakPt)) {
aac_adapter_interrupt(dev);
/*
--
2.8.0.rc2.1.gbe9624a
next prev parent reply other threads:[~2016-10-19 22:53 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-19 22:49 [PATCH 3.10 00/16] 3.10.104-stable review Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 01/16] Revert "powerpc/tm: Always reclaim in start_thread() for exec() class syscalls" Willy Tarreau
2016-10-20 3:07 ` Guenter Roeck
2016-10-20 6:12 ` Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 02/16] PCI: Support PCIe devices with short cfg_size Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 03/16] PCI: Add Netronome vendor and device IDs Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 04/16] PCI: Limit config space size for Netronome NFP6000 family Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 05/16] PCI: Add Netronome NFP4000 PF device ID Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 06/16] PCI: Limit config space size for Netronome NFP4000 Willy Tarreau
2016-10-19 22:49 ` Willy Tarreau [this message]
2016-10-19 22:49 ` [PATCH 3.10 08/16] megaraid_sas: Fix probing cards without io port Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 09/16] crypto: nx - off by one bug in nx_of_update_msc() Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 10/16] staging: comedi: daqboard2000: bug fix board type matching code Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 11/16] ACPI / sysfs: fix error code in get_status() Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 12/16] mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 13/16] MIPS: KVM: Check for pfn noslot case Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 14/16] security: let security modules use PTRACE_MODE_* with bitmasks Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 15/16] xen-netback: ref count shared rings Willy Tarreau
2016-10-19 22:49 ` [PATCH 3.10 16/16] mm: remove gup_flags FOLL_WRITE games from __get_user_pages() Willy Tarreau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1476917380-28311-8-git-send-email-w@1wt.eu \
--to=w@1wt.eu \
--cc=david.carroll@microsemi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®