From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
To: Xin Long <lucien.xin@gmail.com>,
network dev <netdev@vger.kernel.org>,
Steffen Klassert <steffen.klassert@secunet.com>
Cc: Cong Wang <cwang@twopensource.com>
Subject: Re: [PATCH] ip_tunnel: the lack of vti_link_ops' dellink() cause kernel panic
Date: Mon, 24 Nov 2014 15:18:38 +0100 [thread overview]
Message-ID: <54733E3E.7070702@6wind.com> (raw)
In-Reply-To: <1416726251-13088-1-git-send-email-lucien.xin@gmail.com>
Le 23/11/2014 08:04, Xin Long a écrit :
> Now the vti_link_ops do not point the .dellink, for fb tunnel device
> (ip_vti0), the net_device will be removed as the default .dellink is
> unregister_netdevice_queue,but the tunnel still in the tunnel list,
> then if we add a new vti tunnel, in ip_tunnel_find():
>
> hlist_for_each_entry_rcu(t, head, hash_node) {
> if (local == t->parms.iph.saddr &&
> remote == t->parms.iph.daddr &&
> link == t->parms.link &&
> ==> type == t->dev->type &&
> ip_tunnel_key_match(&t->parms, flags, key))
> break;
> }
>
> the panic will happen, cause dev of ip_tunnel *t is null:
> [ 3835.072977] IP: [<ffffffffa04103fd>] ip_tunnel_find+0x9d/0xc0 [ip_tunnel]
> [ 3835.073008] PGD b2c21067 PUD b7277067 PMD 0
> [ 3835.073008] Oops: 0000 [#1] SMP
> .....
> [ 3835.073008] Stack:
> [ 3835.073008] ffff8800b72d77f0 ffffffffa0411924 ffff8800bb956000 ffff8800b72d78e0
> [ 3835.073008] ffff8800b72d78a0 0000000000000000 ffffffffa040d100 ffff8800b72d7858
> [ 3835.073008] ffffffffa040b2e3 0000000000000000 0000000000000000 0000000000000000
> [ 3835.073008] Call Trace:
> [ 3835.073008] [<ffffffffa0411924>] ip_tunnel_newlink+0x64/0x160 [ip_tunnel]
> [ 3835.073008] [<ffffffffa040b2e3>] vti_newlink+0x43/0x70 [ip_vti]
> [ 3835.073008] [<ffffffff8150d4da>] rtnl_newlink+0x4fa/0x5f0
> [ 3835.073008] [<ffffffff812f68bb>] ? nla_strlcpy+0x5b/0x70
> [ 3835.073008] [<ffffffff81508fb0>] ? rtnl_link_ops_get+0x40/0x60
> [ 3835.073008] [<ffffffff8150d11f>] ? rtnl_newlink+0x13f/0x5f0
> [ 3835.073008] [<ffffffff81509cf4>] rtnetlink_rcv_msg+0xa4/0x270
> [ 3835.073008] [<ffffffff8126adf5>] ? sock_has_perm+0x75/0x90
> [ 3835.073008] [<ffffffff81509c50>] ? rtnetlink_rcv+0x30/0x30
> [ 3835.073008] [<ffffffff81529e39>] netlink_rcv_skb+0xa9/0xc0
> [ 3835.073008] [<ffffffff81509c48>] rtnetlink_rcv+0x28/0x30
> ....
>
> modprobe ip_vti
> ip link del ip_vti0 type vti
> ip link add ip_vti0 type vti
> rmmod ip_vti
>
> do that one or more times, kernel will panic.
>
> fix it by assigning ip_tunnel_dellink to vti_link_ops' dellink, in
> which we skip the unregister of fb tunnel device. do the same on ip6_vti.
>
> Signed-off-by: Xin Long <lucien.xin@gmail.com>
> Signed-off-by: Cong Wang <cwang@twopensource.com>
> ---
> net/ipv4/ip_vti.c | 1 +
> net/ipv6/ip6_vti.c | 11 +++++++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
> index 3e86101..1a7e979 100644
> --- a/net/ipv4/ip_vti.c
> +++ b/net/ipv4/ip_vti.c
> @@ -528,6 +528,7 @@ static struct rtnl_link_ops vti_link_ops __read_mostly = {
> .validate = vti_tunnel_validate,
> .newlink = vti_newlink,
> .changelink = vti_changelink,
> + .dellink = ip_tunnel_dellink,
Nitpicking: please, use a tab instead of space to align the '=', like other
lines.
next prev parent reply other threads:[~2014-11-24 14:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-23 7:04 [PATCH] ip_tunnel: the lack of vti_link_ops' dellink() cause kernel panic Xin Long
2014-11-24 14:18 ` Nicolas Dichtel [this message]
2014-11-25 5:53 ` lucien xin
2014-11-25 6:08 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54733E3E.7070702@6wind.com \
--to=nicolas.dichtel@6wind.com \
--cc=cwang@twopensource.com \
--cc=lucien.xin@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=steffen.klassert@secunet.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.