Description
In the Linux kernel, the following vulnerability has been resolved: ipv4: igmp: Fix potential memory leaks in igmp_mod_timer() and igmp_stop_timer() When a timer is deleted and not re-armed in igmp_mod_timer(), or stopped in igmp_stop_timer(), the code currently decrements the reference counter of the multicast list entry @im using refcount_dec(&im->refcnt). However, both functions can be called from the RCU reader path: - igmp_mod_timer() via igmp_heard_query() -> for_each_pmc_rcu() - igmp_stop_timer() via igmp_rcv() -> igmp_heard_report() If the group im was concurrently removed from the list by ip_mc_dec_group(), its reference count might have already been decremented to 1. In this case, timer_delete() succeeds, and refcount_dec() decrements the refcount from 1 to 0. Since refcount_dec() does not free the object when it hits 0 (unlike ip_ma_put()), the im structure is leaked. Fix this by using ip_ma_put(im) instead of refcount_dec(&im->refcnt), and deferring the put until after the spinlock is released.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < d4fe30f4671033a27fba077b3976dc113ffc0169affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 2d0effadf8d2cc9d006e4c4ab0ab6737aed28d77affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 40d6360ccf9bcbe17b5cb248a84e8e004aac2faaaffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < f60ec3058a85447008b88b762c859d336163acb3affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 95128dc74425ec19ed4f2077ccc651e791ff4b75affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 3546deaa0c30a14c7cdb5dc8f2432cb428f0cd36affected
Linux Linux
Default version status: affected
2.6.12affected0 to < 2.6.12unaffected6.1.191 to ≤ 6.1.*unaffected6.6.160 to ≤ 6.6.*unaffected6.12.114 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/d4fe30f4671033a27fba077b3976dc113ffc0169 ↗
- https://git.kernel.org/stable/c/2d0effadf8d2cc9d006e4c4ab0ab6737aed28d77 ↗
- https://git.kernel.org/stable/c/40d6360ccf9bcbe17b5cb248a84e8e004aac2faa ↗
- https://git.kernel.org/stable/c/f60ec3058a85447008b88b762c859d336163acb3 ↗
- https://git.kernel.org/stable/c/95128dc74425ec19ed4f2077ccc651e791ff4b75 ↗
- https://git.kernel.org/stable/c/3546deaa0c30a14c7cdb5dc8f2432cb428f0cd36 ↗