Re: [PATCH v2] firmware_loader: Abort new fw load request once firmware core knows about reboot

From: kernel test robot
Date: Wed Oct 04 2023 - 18:03:39 EST


Hi Mukesh,

kernel test robot noticed the following build warnings:

[auto build test WARNING on driver-core/driver-core-testing]
[also build test WARNING on driver-core/driver-core-next driver-core/driver-core-linus linus/master v6.6-rc4 next-20231004]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Mukesh-Ojha/firmware_loader-Abort-new-fw-load-request-once-firmware-core-knows-about-reboot/20231004-225910
base: driver-core/driver-core-testing
patch link: https://lore.kernel.org/r/1696431327-7369-1-git-send-email-quic_mojha%40quicinc.com
patch subject: [PATCH v2] firmware_loader: Abort new fw load request once firmware core knows about reboot
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20231005/202310050525.CcwD9rYd-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231005/202310050525.CcwD9rYd-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310050525.CcwD9rYd-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

In file included from drivers/base/firmware_loader/fallback.h:9,
from drivers/base/firmware_loader/fallback.c:11:
drivers/base/firmware_loader/sysfs.h:87:20: error: 'fw_load_abort' redeclared as different kind of symbol
87 | static inline void fw_load_abort(struct fw_sysfs *fw_sysfs)
| ^~~~~~~~~~~~~
In file included from drivers/base/firmware_loader/fallback.h:8:
drivers/base/firmware_loader/firmware.h:89:13: note: previous declaration of 'fw_load_abort' with type 'bool' {aka '_Bool'}
89 | extern bool fw_load_abort;
| ^~~~~~~~~~~~~
drivers/base/firmware_loader/fallback.c: In function 'kill_pending_fw_fallback_reqs':
drivers/base/firmware_loader/fallback.c:62:31: error: lvalue required as left operand of assignment
62 | fw_load_abort = true;
| ^
drivers/base/firmware_loader/fallback.c: In function 'fw_load_sysfs_fallback':
>> drivers/base/firmware_loader/fallback.c:93:13: warning: the address of 'fw_load_abort' will always evaluate as 'true' [-Waddress]
93 | if (fw_load_abort || fw_state_is_aborted(fw_priv)) {
| ^~~~~~~~~~~~~


vim +93 drivers/base/firmware_loader/fallback.c

66
67 /**
68 * fw_load_sysfs_fallback() - load a firmware via the sysfs fallback mechanism
69 * @fw_sysfs: firmware sysfs information for the firmware to load
70 * @timeout: timeout to wait for the load
71 *
72 * In charge of constructing a sysfs fallback interface for firmware loading.
73 **/
74 static int fw_load_sysfs_fallback(struct fw_sysfs *fw_sysfs, long timeout)
75 {
76 int retval = 0;
77 struct device *f_dev = &fw_sysfs->dev;
78 struct fw_priv *fw_priv = fw_sysfs->fw_priv;
79
80 /* fall back on userspace loading */
81 if (!fw_priv->data)
82 fw_priv->is_paged_buf = true;
83
84 dev_set_uevent_suppress(f_dev, true);
85
86 retval = device_add(f_dev);
87 if (retval) {
88 dev_err(f_dev, "%s: device_register failed\n", __func__);
89 goto err_put_dev;
90 }
91
92 mutex_lock(&fw_lock);
> 93 if (fw_load_abort || fw_state_is_aborted(fw_priv)) {
94 mutex_unlock(&fw_lock);
95 retval = -EINTR;
96 goto out;
97 }
98 list_add(&fw_priv->pending_list, &pending_fw_head);
99 mutex_unlock(&fw_lock);
100
101 if (fw_priv->opt_flags & FW_OPT_UEVENT) {
102 fw_priv->need_uevent = true;
103 dev_set_uevent_suppress(f_dev, false);
104 dev_dbg(f_dev, "firmware: requesting %s\n", fw_priv->fw_name);
105 kobject_uevent(&fw_sysfs->dev.kobj, KOBJ_ADD);
106 } else {
107 timeout = MAX_JIFFY_OFFSET;
108 }
109
110 retval = fw_sysfs_wait_timeout(fw_priv, timeout);
111 if (retval < 0 && retval != -ENOENT) {
112 mutex_lock(&fw_lock);
113 fw_load_abort(fw_sysfs);
114 mutex_unlock(&fw_lock);
115 }
116
117 if (fw_state_is_aborted(fw_priv)) {
118 if (retval == -ERESTARTSYS)
119 retval = -EINTR;
120 } else if (fw_priv->is_paged_buf && !fw_priv->data)
121 retval = -ENOMEM;
122
123 out:
124 device_del(f_dev);
125 err_put_dev:
126 put_device(f_dev);
127 return retval;
128 }
129

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki