Hello Pierre-Louis Bossart,
Commit bb5cb09eedce ("soundwire: debugfs: add interface for BPT/BRA
transfers") from Feb 27, 2025 (linux-next), leads to the following
Smatch static checker warning:
drivers/soundwire/debugfs.c:301 cmd_go() error: uninitialized symbol 'finish_t'.
drivers/soundwire/debugfs.c:301 cmd_go() error: uninitialized symbol 'start_t'.
drivers/soundwire/debugfs.c
236 static int cmd_go(void *data, u64 value)
237 {
238 const struct firmware *fw = NULL;
239 struct sdw_slave *slave = data;
240 ktime_t start_t;
241 ktime_t finish_t;
242 int ret;
243
244 if (value != 1)
245 return -EINVAL;
246
247 /* one last check */
248 if (start_addr > SDW_REG_MAX ||
249 num_bytes == 0 || num_bytes > MAX_CMD_BYTES)
250 return -EINVAL;
251
252 ret = pm_runtime_get_sync(&slave->dev);
253 if (ret < 0 && ret != -EACCES) {
254 pm_runtime_put_noidle(&slave->dev);
255 return ret;
256 }
257
258 if (cmd == 0) {
259 ret = request_firmware(&fw, firmware_file, &slave->dev);
260 if (ret < 0) {
261 dev_err(&slave->dev, "firmware %s not found\n", firmware_file);
262 goto out;
start_t and finish_t are not initialized
263 }
264 if (fw->size < num_bytes) {
265 dev_err(&slave->dev,
266 "firmware %s: firmware size %zd, desired %zd\n",
267 firmware_file, fw->size, num_bytes);
268 goto out;
269 }
270 }
271
272 /* Userspace changed the hardware state behind the kernel's back */
273 add_taint(TAINT_USER, LOCKDEP_STILL_OK);
274
275 dev_dbg(&slave->dev, "starting command\n");
276 start_t = ktime_get();
277
278 if (cmd == 0) {
279 if (cmd_type)
280 ret = do_bpt_sequence(slave, true, (u8 *)fw->data);
281 else
282 ret = sdw_nwrite_no_pm(slave, start_addr, num_bytes, fw->data);
283 } else {
284 memset(read_buffer, 0, sizeof(read_buffer));
285
286 if (cmd_type)
287 ret = do_bpt_sequence(slave, false, read_buffer);
288 else
289 ret = sdw_nread_no_pm(slave, start_addr, num_bytes, read_buffer);
290 }
291
292 finish_t = ktime_get();
293
294 out:
295 if (fw)
296 release_firmware(fw);
297
298 pm_runtime_mark_last_busy(&slave->dev);
299 pm_runtime_put(&slave->dev);
300
--> 301 dev_dbg(&slave->dev, "command completed, num_byte %zu status %d, time %lld ms\n",
302 num_bytes, ret, div_u64(finish_t - start_t, NSEC_PER_MSEC));
^^^^^^^^^^^^^^^^^^
Uninitialized
303
304 return ret;
305 }
regards,
dan carpenter
[Index of Archives]
[Pulseaudio]
[Linux Audio Users]
[ALSA Devel]
[Fedora Desktop]
[Fedora SELinux]
[Big List of Linux Books]
[Yosemite News]
[KDE Users]