diff options
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.patch | 71 |
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); + |