Re: [PATCH] interconnect: debugfs: fix devm_kstrdup and kfree mismatch
Markus Elfring <[email protected]>
| Newsgroups | org.kernel.vger.kernel-janitors,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm |
|---|---|
| Message-ID | <[email protected]> |
> debugfs_write_file_str() uses standard kfree() to release old strings. Why would such information matter here? > Initializing src_node and dst_node with devm_kstrdup() creates a memory > management mismatch. If a user writes to these debugfs nodes, the > devm-allocated memory is freed via kfree(), leaving a dangling pointer > in the device resource list that can lead to a double free. Would an other description approach be clearer for involved dependencies? > Fix this by using standard kstrdup() instead. Interesting … https://elixir.bootlin.com/linux/v7.0-rc4/source/drivers/interconnect/debugfs-client.c#L139-L169 > Since the interconnect > subsystem is strictly built-in and cannot be unloaded as a module, there > is no exit path requiring manual cleanup of these strings. Should string lifetimes be reconsidered for the mentioned function implementation? > The error > handling path is also simplified by taking advantage of the fact that > kfree(NULL) is a safe no-op. I tend to interpret source code simplifications in other directions. See also once more: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/stable-kernel-rules.rst?h=v7.0-rc4#n34 Regards, Markus