firmware_class: Do not warn that system is not ready from async loads
authorRafael J. Wysocki <rjw@sisk.pl>
Wed, 28 Mar 2012 21:30:02 +0000 (23:30 +0200)
committerVarun Wadekar <vwadekar@nvidia.com>
Wed, 18 Apr 2012 13:07:28 +0000 (18:07 +0530)
commitcf05f6d46637bd20e648a86b9fa99a91b744e034
tree0ad0355d670056037447a7fd405f35c168195a20
parentc8c11ed1946e3361f2b1d5aed3b6cd78573146a8
firmware_class: Do not warn that system is not ready from async loads

If firmware is requested asynchronously, by calling
request_firmware_nowait(), there is no reason to fail the request
(and warn the user) when the system is (presumably temporarily)
unready to handle it (because user space is not available yet or
frozen).  For this reason, introduce an alternative routine for
read-locking umhelper_sem, usermodehelper_read_lock_wait(), that
will wait for usermodehelper_disabled to be unset (possibly with
a timeout) and make request_firmware_work_func() use it instead of
usermodehelper_read_trylock().

Accordingly, modify request_firmware() so that it uses
usermodehelper_read_trylock() to acquire umhelper_sem and remove
the code related to that lock from _request_firmware().

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: stable@vger.kernel.org
drivers/base/firmware_class.c
include/linux/kmod.h
kernel/kmod.c