In the Linux kernel, the following vulnerability has been resolved:
of: dynamic: Synchronize of_changeset_destroy() with the devlink removals
In the following sequence:
During the step 1, devices are destroyed and devlinks are removed. During the step 2, OF nodes are destroyed but __of_changeset_entry_destroy() can raise warnings related to missing of_node_put(): ERROR: memory leak, expected refcount 1 instead of 2 ...
Indeed, during the devlink removals performed at step 1, the removal itself releasing the device (and the attached of_node) is done by a job queued in a workqueue and so, it is done asynchronously with respect to function calls. When the warning is present, of_node_put() will be called but wrongly too late from the workqueue job.
In order to be sure that any ongoing devlink removals are done before the of_node destruction, synchronize the of_changeset_destroy() with the devlink removals.
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 5.10.42 | 5.10.215 |
| linux / linux_kernel | 5.12.9 | 5.13 |
| linux / linux_kernel | 5.13.1 | 5.15.154 |
| linux / linux_kernel | 5.16 | 6.1.85 |
| linux / linux_kernel | 6.2 | 6.6.26 |
| linux / linux_kernel | 6.7 | 6.8.5 |
| linux / linux_kernel | 5.13 | 5.13.x |
| linux / linux_kernel | 5.13-rc4 | 5.13-rc4.x |
| linux / linux_kernel | 5.13-rc5 | 5.13-rc5.x |
| linux / linux_kernel | 5.13-rc6 | 5.13-rc6.x |
| linux / linux_kernel | 5.13-rc7 | 5.13-rc7.x |
| linux / linux_kernel | 6.9-rc1 | 6.9-rc1.x |
| linux / linux_kernel | 6.9-rc2 | 6.9-rc2.x |
| debian / debian_linux | 10.0 | 10.0.x |