Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
xfrm6: fix inet6_dev refcount underflow problem
[ Upstream commit cc9b364 ] There are race conditions that may lead to inet6_dev refcount underflow in xfrm6_dst_destroy() and rt6_uncached_list_flush_dev(). One of the refcount underflow bugs is shown below: (cpu 1) | (cpu 2) xfrm6_dst_destroy() | ... | in6_dev_put() | | rt6_uncached_list_flush_dev() ... | ... | in6_dev_put() rt6_uncached_list_del() | ... ... | xfrm6_dst_destroy() calls rt6_uncached_list_del() after in6_dev_put(), so rt6_uncached_list_flush_dev() has a chance to call in6_dev_put() again for the same inet6_dev. Fix it by moving in6_dev_put() after rt6_uncached_list_del() in xfrm6_dst_destroy(). Fixes: 510c321 ("xfrm: reuse uncached_list to track xdsts") Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com> Reviewed-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- linux-5.15.137-mpi
- linux-5.15.138-mpi
- linux-5.15.139-mpi
- linux-5.15.140-mpi
- linux-5.15.141-mpi
- linux-5.15.142-mpi
- linux-5.15.143-mpi
- linux-5.15.144-mpi
- linux-5.15.145-mpi
- linux-5.15.146-mpi
- linux-5.15.147-mpi
- linux-5.15.148-mpi
- linux-5.15.149-mpi
- linux-5.15.150-mpi
- linux-5.15.151-mpi
- linux-5.15.152-mpi
- linux-5.15.153-mpi
- linux-5.15.154-mpi
- linux-5.15.155-mpi
- linux-5.15.156-mpi
- linux-5.15.157-mpi
- linux-5.15.158-mpi
- linux-5.15.159-mpi
- linux-5.15.160-mpi
- linux-5.15.161-mpi
- linux-5.15.162-mpi
- linux-5.15.163-mpi
- linux-5.15.164-mpi
- linux-5.15.165-mpi
- linux-5.15.166-mpi
- linux-5.15.167-mpi
- linux-5.15.168-mpi
- linux-5.15.169-mpi
- linux-5.15.170-mpi
- linux-5.15.171-mpi
- linux-5.15.172-mpi
- linux-5.15.173-mpi
- linux-5.15.174-mpi
- linux-5.15.175-mpi
- linux-5.15.176-mpi
- linux-5.15.177-mpi
- linux-5.15.178-mpi
- linux-5.15.179-mpi
- linux-5.15.180-mpi
- linux-5.15.181-mpi
- linux-5.15.182-mpi
- linux-5.15.183-mpi
- linux-5.15.184-mpi
- linux-5.15.185-mpi
- linux-5.15.186-mpi
- linux-5.15.187-mpi
- linux-5.15.188-mpi
- linux-5.15.189-mpi