aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/xfrm4_policy.c
diff options
context:
space:
mode:
authorBernhard Walle <bwalle@suse.de>2007-02-26 15:10:32 -0500
committerDavid S. Miller <davem@davemloft.net>2007-02-26 15:10:32 -0500
commitaef8811abbc9249a2bd59bd2331bbe523df05d17 (patch)
tree2d29785cf77e69e80fc640d79850aba091b808b6 /net/ipv4/xfrm4_policy.c
parente4396b544fa5c85e3c263e0bc92b0743a24ba818 (diff)
[XFRM]: Fix oops in xfrm4_dst_destroy()
With 2.6.21-rc1, I get an oops when running 'ifdown eth0' and an IPsec connection is active. If I shut down the connection before running 'ifdown eth0', then there's no problem. The critical operation of this script is to kill dhcpd. The problem is probably caused by commit with git identifier 4337226228e1cfc1d70ee975789c6bd070fb597c (Linus tree) "[IPSEC]: IPv4 over IPv6 IPsec tunnel". This patch fixes that oops. I don't know the network code of the Linux kernel in deep, so if that fix is wrong, please change it. But please fix the oops. :) Signed-off-by: Bernhard Walle <bwalle@suse.de> Acked-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/xfrm4_policy.c')
-rw-r--r--net/ipv4/xfrm4_policy.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/xfrm4_policy.c b/net/ipv4/xfrm4_policy.c
index fef19c6bcb98..5d51a2af34c1 100644
--- a/net/ipv4/xfrm4_policy.c
+++ b/net/ipv4/xfrm4_policy.c
@@ -291,7 +291,7 @@ static void xfrm4_dst_destroy(struct dst_entry *dst)
291 291
292 if (likely(xdst->u.rt.idev)) 292 if (likely(xdst->u.rt.idev))
293 in_dev_put(xdst->u.rt.idev); 293 in_dev_put(xdst->u.rt.idev);
294 if (dst->xfrm->props.family == AF_INET && likely(xdst->u.rt.peer)) 294 if (dst->xfrm && dst->xfrm->props.family == AF_INET && likely(xdst->u.rt.peer))
295 inet_putpeer(xdst->u.rt.peer); 295 inet_putpeer(xdst->u.rt.peer);
296 xfrm_dst_destroy(xdst); 296 xfrm_dst_destroy(xdst);
297} 297}