Commit aef8811a authored by Bernhard Walle's avatar Bernhard Walle Committed by David S. Miller

[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
43372262 (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: default avatarBernhard Walle <bwalle@suse.de>
Acked-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e4396b54
...@@ -291,7 +291,7 @@ static void xfrm4_dst_destroy(struct dst_entry *dst) ...@@ -291,7 +291,7 @@ static void xfrm4_dst_destroy(struct dst_entry *dst)
if (likely(xdst->u.rt.idev)) if (likely(xdst->u.rt.idev))
in_dev_put(xdst->u.rt.idev); in_dev_put(xdst->u.rt.idev);
if (dst->xfrm->props.family == AF_INET && likely(xdst->u.rt.peer)) if (dst->xfrm && dst->xfrm->props.family == AF_INET && likely(xdst->u.rt.peer))
inet_putpeer(xdst->u.rt.peer); inet_putpeer(xdst->u.rt.peer);
xfrm_dst_destroy(xdst); xfrm_dst_destroy(xdst);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment