mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-18 19:13:06 +00:00
clang static analysis flags this problem
stream.c:844:9: warning: Use of memory after
it is freed
kfree(bus->defer_msg.msg->buf);
^~~~~~~~~~~~~~~~~~~~~~~
This happens in an error handler cleaning up memory
allocated for elements in a list.
list_for_each_entry(m_rt, &stream->master_list, stream_node) {
bus = m_rt->bus;
kfree(bus->defer_msg.msg->buf);
kfree(bus->defer_msg.msg);
}
And is triggered when the call to sdw_bank_switch() fails.
There are a two problems.
First, when sdw_bank_switch() fails, though it frees memory it
does not clear bus's reference 'defer_msg.msg' to that memory.
The second problem is the freeing msg->buf. In some cases
msg will be NULL so this will dereference a null pointer.
Need to check before freeing.
Fixes:
|
||
|---|---|---|
| .. | ||
| bus_type.c | ||
| bus.c | ||
| bus.h | ||
| cadence_master.c | ||
| cadence_master.h | ||
| debugfs.c | ||
| intel_init.c | ||
| intel.c | ||
| intel.h | ||
| Kconfig | ||
| Makefile | ||
| master.c | ||
| mipi_disco.c | ||
| qcom.c | ||
| slave.c | ||
| stream.c | ||
| sysfs_local.h | ||
| sysfs_slave_dpn.c | ||
| sysfs_slave.c | ||