]> git.baikalelectronics.ru Git - kernel.git/commit
ipsec: Fix deadlock in xfrm_state management.
authorDavid S. Miller <davem@davemloft.net>
Wed, 3 Sep 2008 03:14:15 +0000 (20:14 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 3 Sep 2008 03:14:15 +0000 (20:14 -0700)
commitf408824566197ac9dc5dce1762158ed2e689b1ae
tree8d0cc32bdbfda4d992177aeda56700bea0f918dd
parent5f1ba25626700d0edb4ceb9695096429b0652030
ipsec: Fix deadlock in xfrm_state management.

Ever since commit 01c45a948e637258a65693ce9a62c33dfc31e20b
("[XFRM]: Speed up xfrm_policy and xfrm_state walking") it is
illegal to call __xfrm_state_destroy (and thus xfrm_state_put())
with xfrm_state_lock held.  If we do, we'll deadlock since we
have the lock already and __xfrm_state_destroy() tries to take
it again.

Fix this by pushing the xfrm_state_put() calls after the lock
is dropped.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/xfrm/xfrm_state.c