]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.4
authorSasha Levin <sashal@kernel.org>
Fri, 17 Apr 2020 03:43:41 +0000 (23:43 -0400)
committerSasha Levin <sashal@kernel.org>
Fri, 17 Apr 2020 03:43:41 +0000 (23:43 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/mfd-dln2-fix-sanity-checking-for-endpoints.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/mfd-dln2-fix-sanity-checking-for-endpoints.patch b/queue-4.4/mfd-dln2-fix-sanity-checking-for-endpoints.patch
new file mode 100644 (file)
index 0000000..d6350ce
--- /dev/null
@@ -0,0 +1,61 @@
+From e95b17634d42a524b0695c6c17c4b359e29d7b5b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 26 Feb 2020 16:51:58 +0200
+Subject: mfd: dln2: Fix sanity checking for endpoints
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+[ Upstream commit fb945c95a482200876993977008b67ea658bd938 ]
+
+While the commit 2b8bd606b1e6 ("mfd: dln2: More sanity checking for endpoints")
+tries to harden the sanity checks it made at the same time a regression,
+i.e.  mixed in and out endpoints. Obviously it should have been not tested on
+real hardware at that time, but unluckily it didn't happen.
+
+So, fix above mentioned typo and make device being enumerated again.
+
+While here, introduce an enumerator for magic values to prevent similar issue
+to happen in the future.
+
+Fixes: 2b8bd606b1e6 ("mfd: dln2: More sanity checking for endpoints")
+Cc: Oliver Neukum <oneukum@suse.com>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/mfd/dln2.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c
+index 95d0f2df0ad42..672831d5ee32e 100644
+--- a/drivers/mfd/dln2.c
++++ b/drivers/mfd/dln2.c
+@@ -93,6 +93,11 @@ struct dln2_mod_rx_slots {
+       spinlock_t lock;
+ };
++enum dln2_endpoint {
++      DLN2_EP_OUT     = 0,
++      DLN2_EP_IN      = 1,
++};
++
+ struct dln2_dev {
+       struct usb_device *usb_dev;
+       struct usb_interface *interface;
+@@ -740,10 +745,10 @@ static int dln2_probe(struct usb_interface *interface,
+           hostif->desc.bNumEndpoints < 2)
+               return -ENODEV;
+-      epin = &hostif->endpoint[0].desc;
+-      epout = &hostif->endpoint[1].desc;
++      epout = &hostif->endpoint[DLN2_EP_OUT].desc;
+       if (!usb_endpoint_is_bulk_out(epout))
+               return -ENODEV;
++      epin = &hostif->endpoint[DLN2_EP_IN].desc;
+       if (!usb_endpoint_is_bulk_in(epin))
+               return -ENODEV;
+-- 
+2.20.1
+
index 80159804f57668b7bcb7ac41236f5a825d9eafe4..9adcfb5e66eb936525374981ac7c70d59128a0f0 100644 (file)
@@ -52,3 +52,4 @@ drm-dp_mst-fix-clearing-payload-state-on-topology-di.patch
 ipmi-fix-hung-processes-in-__get_guid.patch
 powerpc-fsl_booke-avoid-creating-duplicate-tlb1-entr.patch
 misc-echo-remove-unnecessary-parentheses-and-simplif.patch
+mfd-dln2-fix-sanity-checking-for-endpoints.patch