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

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

diff --git a/queue-5.4/driver-core-fix-probe_count-imbalance-in-really_probe.patch b/queue-5.4/driver-core-fix-probe_count-imbalance-in-really_probe.patch
new file mode 100644 (file)
index 0000000..28cf939
--- /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
+@@ -518,7 +518,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;
+       }
+ re_probe:
+@@ -639,7 +640,7 @@ pinctrl_bind_failed:
+       ret = 0;
+ done:
+       atomic_dec(&probe_count);
+-      wake_up(&probe_waitqueue);
++      wake_up_all(&probe_waitqueue);
+       return ret;
+ }
index b96d78d645d7c57e37c8b0450475d9e476acc7c3..768dd47d563ed3abecfdf66a3724be5a236d19d3 100644 (file)
@@ -18,3 +18,4 @@ bpf-fix-sysfs-export-of-empty-btf-section.patch
 bpf-prevent-.btf-section-elimination.patch
 platform-x86-intel-vbtn-switch-to-an-allow-list-for-sw_tablet_mode-reporting.patch
 platform-x86-thinkpad_acpi-re-initialize-acpi-buffer-size-when-reuse.patch
+driver-core-fix-probe_count-imbalance-in-really_probe.patch