diff options
author | Johan Hovold <johan@kernel.org> | 2017-03-13 08:40:22 -0400 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2017-03-16 10:31:27 -0400 |
commit | 181302dc7239add8ab1449c23ecab193f52ee6ab (patch) | |
tree | 6ac9e1a0bbcb741cd1029027d43aabd045a38e44 /drivers/mmc/host/ushc.c | |
parent | 2ce0c7b65505e0d915e99389cced45b478dc935d (diff) |
mmc: ushc: fix NULL-deref at probe
Make sure to check the number of endpoints to avoid dereferencing a
NULL-pointer should a malicious device lack endpoints.
Fixes: 53f3a9e26ed5 ("mmc: USB SD Host Controller (USHC) driver")
Cc: stable <stable@vger.kernel.org> # 2.6.37
Cc: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc/host/ushc.c')
-rw-r--r-- | drivers/mmc/host/ushc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mmc/host/ushc.c b/drivers/mmc/host/ushc.c index d2c386f09d69..1d843357422e 100644 --- a/drivers/mmc/host/ushc.c +++ b/drivers/mmc/host/ushc.c | |||
@@ -426,6 +426,9 @@ static int ushc_probe(struct usb_interface *intf, const struct usb_device_id *id | |||
426 | struct ushc_data *ushc; | 426 | struct ushc_data *ushc; |
427 | int ret; | 427 | int ret; |
428 | 428 | ||
429 | if (intf->cur_altsetting->desc.bNumEndpoints < 1) | ||
430 | return -ENODEV; | ||
431 | |||
429 | mmc = mmc_alloc_host(sizeof(struct ushc_data), &intf->dev); | 432 | mmc = mmc_alloc_host(sizeof(struct ushc_data), &intf->dev); |
430 | if (mmc == NULL) | 433 | if (mmc == NULL) |
431 | return -ENOMEM; | 434 | return -ENOMEM; |