summaryrefslogtreecommitdiffstats
path: root/queue-2.6.32/firmware-loader-allow-builtin-firmware-load-even-if-usermodehelper-is-disabled.patch
diff options
context:
space:
mode:
Diffstat (limited to 'queue-2.6.32/firmware-loader-allow-builtin-firmware-load-even-if-usermodehelper-is-disabled.patch')
-rw-r--r--queue-2.6.32/firmware-loader-allow-builtin-firmware-load-even-if-usermodehelper-is-disabled.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/queue-2.6.32/firmware-loader-allow-builtin-firmware-load-even-if-usermodehelper-is-disabled.patch b/queue-2.6.32/firmware-loader-allow-builtin-firmware-load-even-if-usermodehelper-is-disabled.patch
new file mode 100644
index 0000000..256c2c4
--- /dev/null
+++ b/queue-2.6.32/firmware-loader-allow-builtin-firmware-load-even-if-usermodehelper-is-disabled.patch
@@ -0,0 +1,71 @@
+From srivatsa.bhat@linux.vnet.ibm.com Thu Mar 1 13:31:42 2012
+From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
+Date: Wed, 29 Feb 2012 12:23:20 +0530
+Subject: firmware loader: allow builtin firmware load even if usermodehelper is disabled
+To: gregkh@linuxfoundation.org
+Cc: stable@vger.kernel.org, rjw@sisk.pl, valdis.kletnieks@vt.edu, cloos@hjcloos.com, riesebie@lxtec.de, torvalds@linux-foundation.org, penguin-kernel@i-love.sakura.ne.jp, srivatsa.bhat@linux.vnet.ibm.com
+Message-ID: <20120229065249.4761.69035.stgit@srivatsabhat.in.ibm.com>
+
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+[ Upstream commit caca9510ff4e5d842c0589110243d60927836222 ]
+
+In commit a144c6a6c924 ("PM: Print a warning if firmware is requested
+when tasks are frozen") we not only printed a warning if somebody tried
+to load the firmware when tasks are frozen - we also failed the load.
+
+But that check was done before the check for built-in firmware, and then
+when we disallowed usermode helpers during bootup (commit 288d5abec831:
+"Boot up with usermodehelper disabled"), that actually means that
+built-in modules can no longer load their firmware even if the firmware
+is built in too. Which used to work, and some people depended on it for
+the R100 driver.
+
+So move the test for usermodehelper_is_disabled() down, to after
+checking the built-in firmware.
+
+This should fix:
+
+ https://bugzilla.kernel.org/show_bug.cgi?id=40952
+
+Reported-by: James Cloos <cloos@hjcloos.com>
+Bisected-by: Elimar Riesebieter <riesebie@lxtec.de>
+Cc: Michel Dänzer <michel@daenzer.net>
+Cc: Rafael Wysocki <rjw@sisk.pl>
+Cc: Valdis Kletnieks <valdis.kletnieks@vt.edu>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+
+ drivers/base/firmware_class.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/base/firmware_class.c
++++ b/drivers/base/firmware_class.c
+@@ -489,11 +489,6 @@ _request_firmware(const struct firmware
+ if (!firmware_p)
+ return -EINVAL;
+
+- if (WARN_ON(usermodehelper_is_disabled())) {
+- dev_err(device, "firmware: %s will not be loaded\n", name);
+- return -EBUSY;
+- }
+-
+ *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL);
+ if (!firmware) {
+ dev_err(device, "%s: kmalloc(struct firmware) failed\n",
+@@ -513,6 +508,12 @@ _request_firmware(const struct firmware
+ return 0;
+ }
+
++ if (WARN_ON(usermodehelper_is_disabled())) {
++ dev_err(device, "firmware: %s will not be loaded\n", name);
++ retval = -EBUSY;
++ goto out;
++ }
++
+ if (uevent)
+ dev_info(device, "firmware: requesting %s\n", name);
+