]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Oct 2020 09:39:40 +0000 (11:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Oct 2020 09:39:40 +0000 (11:39 +0200)
added patches:
driver-core-fix-probe_count-imbalance-in-really_probe.patch

queue-4.4/driver-core-fix-probe_count-imbalance-in-really_probe.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/driver-core-fix-probe_count-imbalance-in-really_probe.patch b/queue-4.4/driver-core-fix-probe_count-imbalance-in-really_probe.patch
new file mode 100644 (file)
index 0000000..a771a35
--- /dev/null
@@ -0,0 +1,55 @@
+From b292b50b0efcc7095d8bf15505fba6909bb35dce Mon Sep 17 00:00:00 2001
+From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Date: Mon, 13 Jul 2020 11:12:54 +0900
+Subject: driver core: Fix probe_count imbalance in really_probe()
+
+From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+
+commit b292b50b0efcc7095d8bf15505fba6909bb35dce upstream.
+
+syzbot is reporting hung task in wait_for_device_probe() [1]. At least,
+we always need to decrement probe_count if we incremented probe_count in
+really_probe().
+
+However, since I can't find "Resources present before probing" message in
+the console log, both "this message simply flowed off" and "syzbot is not
+hitting this path" will be possible. Therefore, while we are at it, let's
+also prepare for concurrent wait_for_device_probe() calls by replacing
+wake_up() with wake_up_all().
+
+[1] https://syzkaller.appspot.com/bug?id=25c833f1983c9c1d512f4ff860dd0d7f5a2e2c0f
+
+Reported-by: syzbot <syzbot+805f5f6ae37411f15b64@syzkaller.appspotmail.com>
+Fixes: 7c35e699c88bd607 ("driver core: Print device when resources present in really_probe()")
+Cc: Geert Uytterhoeven <geert+renesas@glider.be>
+Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Cc: stable <stable@kernel.org>
+Link: https://lore.kernel.org/r/20200713021254.3444-1-penguin-kernel@I-love.SAKURA.ne.jp
+[iwamatsu: Drop patch for deferred_probe_timeout_work_func()]
+Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/base/dd.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/base/dd.c
++++ b/drivers/base/dd.c
+@@ -285,7 +285,8 @@ static int really_probe(struct device *d
+                drv->bus->name, __func__, drv->name, dev_name(dev));
+       if (!list_empty(&dev->devres_head)) {
+               dev_crit(dev, "Resources present before probing\n");
+-              return -EBUSY;
++              ret = -EBUSY;
++              goto done;
+       }
+       dev->driver = drv;
+@@ -363,7 +364,7 @@ probe_failed:
+       ret = 0;
+ done:
+       atomic_dec(&probe_count);
+-      wake_up(&probe_waitqueue);
++      wake_up_all(&probe_waitqueue);
+       return ret;
+ }
index b82d57035811cdf4277bcdf6e600f04d7b40315c..bb6c8d08be34dbdb0952215d61e91ecf57d53096 100644 (file)
@@ -22,3 +22,4 @@ net-wireless-nl80211-fix-out-of-bounds-access-in-nl80211_del_key.patch
 usermodehelper-reset-umask-to-default-before-executing-user-process.patch
 platform-x86-thinkpad_acpi-initialize-tp_nvram_state-variable.patch
 platform-x86-thinkpad_acpi-re-initialize-acpi-buffer-size-when-reuse.patch
+driver-core-fix-probe_count-imbalance-in-really_probe.patch