diff options
Diffstat (limited to 'queue-2.6.32/pm-sleep-fix-read_unlock_usermodehelper-call.patch')
-rw-r--r-- | queue-2.6.32/pm-sleep-fix-read_unlock_usermodehelper-call.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/queue-2.6.32/pm-sleep-fix-read_unlock_usermodehelper-call.patch b/queue-2.6.32/pm-sleep-fix-read_unlock_usermodehelper-call.patch new file mode 100644 index 0000000..eff200d --- /dev/null +++ b/queue-2.6.32/pm-sleep-fix-read_unlock_usermodehelper-call.patch @@ -0,0 +1,40 @@ +From srivatsa.bhat@linux.vnet.ibm.com Thu Mar 1 13:32:36 2012 +From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> +Date: Wed, 29 Feb 2012 12:24:56 +0530 +Subject: PM / Sleep: Fix read_unlock_usermodehelper() call. +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: <20120229065409.4761.81272.stgit@srivatsabhat.in.ibm.com> + + +From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> + +[ Upstream commit e4c89a508f4385a0cd8681c2749a2cd2fa476e40 ] + +Commit b298d289 + "PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled()" +added read_unlock_usermodehelper() but read_unlock_usermodehelper() is called +without read_lock_usermodehelper() when kmalloc() failed. + +Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> +Acked-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> +Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> +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 | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/base/firmware_class.c ++++ b/drivers/base/firmware_class.c +@@ -493,8 +493,7 @@ _request_firmware(const struct firmware + if (!firmware) { + dev_err(device, "%s: kmalloc(struct firmware) failed\n", + __func__); +- retval = -ENOMEM; +- goto out; ++ return -ENOMEM; + } + + for (builtin = __start_builtin_fw; builtin != __end_builtin_fw; |