aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/firmware_class.c
diff options
context:
space:
mode:
authorMing Lei <ming.lei@canonical.com>2013-06-03 22:01:13 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-04 13:24:40 -0400
commitddf1f0648e8cd6d2208b1d3bfabd6501f5a9407f (patch)
tree4af7376a3b1913efcc8157d2e66b4241a4d4ff5b /drivers/base/firmware_class.c
parent17c057a35f2672ba2e4d4f9bd7b5652ca0e11b92 (diff)
firmware loader: fix build failure with !CONFIG_FW_LOADER_USER_HELPER
This patch fixes one build failure which is introduced by the patch below: driver core: firmware loader: kill FW_ACTION_NOHOTPLUG requests before suspend When CONFIG_FW_LOADER_USER_HELPER is unset, kill_requests_without_uevent() should be nop because no userspace loading is involved. Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/firmware_class.c')
-rw-r--r--drivers/base/firmware_class.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index c4150431185f..c31fc295500a 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -916,6 +916,21 @@ static int fw_load_from_user_helper(struct firmware *firmware,
916 fw_priv->buf = firmware->priv; 916 fw_priv->buf = firmware->priv;
917 return _request_firmware_load(fw_priv, uevent, timeout); 917 return _request_firmware_load(fw_priv, uevent, timeout);
918} 918}
919
920/* kill pending requests without uevent to avoid blocking suspend */
921static void kill_requests_without_uevent(void)
922{
923 struct firmware_buf *buf;
924 struct firmware_buf *next;
925
926 mutex_lock(&fw_lock);
927 list_for_each_entry_safe(buf, next, &pending_fw_head, pending_list) {
928 if (!buf->need_uevent)
929 fw_load_abort(buf);
930 }
931 mutex_unlock(&fw_lock);
932}
933
919#else /* CONFIG_FW_LOADER_USER_HELPER */ 934#else /* CONFIG_FW_LOADER_USER_HELPER */
920static inline int 935static inline int
921fw_load_from_user_helper(struct firmware *firmware, const char *name, 936fw_load_from_user_helper(struct firmware *firmware, const char *name,
@@ -928,6 +943,8 @@ fw_load_from_user_helper(struct firmware *firmware, const char *name,
928/* No abort during direct loading */ 943/* No abort during direct loading */
929#define is_fw_load_aborted(buf) false 944#define is_fw_load_aborted(buf) false
930 945
946static inline void kill_requests_without_uevent(void) { }
947
931#endif /* CONFIG_FW_LOADER_USER_HELPER */ 948#endif /* CONFIG_FW_LOADER_USER_HELPER */
932 949
933 950
@@ -1414,20 +1431,6 @@ static void __device_uncache_fw_images(void)
1414 spin_unlock(&fwc->name_lock); 1431 spin_unlock(&fwc->name_lock);
1415} 1432}
1416 1433
1417/* kill pending requests without uevent to avoid blocking suspend */
1418static void kill_requests_without_uevent(void)
1419{
1420 struct firmware_buf *buf;
1421 struct firmware_buf *next;
1422
1423 mutex_lock(&fw_lock);
1424 list_for_each_entry_safe(buf, next, &pending_fw_head, pending_list) {
1425 if (!buf->need_uevent)
1426 fw_load_abort(buf);
1427 }
1428 mutex_unlock(&fw_lock);
1429}
1430
1431/** 1434/**
1432 * device_cache_fw_images - cache devices' firmware 1435 * device_cache_fw_images - cache devices' firmware
1433 * 1436 *