From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
To: Romain KUNTZ <r.kuntz@ipflavors.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
Eric Dumazet <eric.dumazet@gmail.com>,
yoshfuji@linux-ipv6.org, davem@davemloft.net
Subject: Re: [PATCH 1/2] ipv6: avoid blackhole and prohibited entries upon prefix purge [v2]
Date: Mon, 07 Jan 2013 11:25:15 +0100 [thread overview]
Message-ID: <50EAA28B.1080300@6wind.com> (raw)
In-Reply-To: <2A507F9D-3D53-475F-8FA9-9E6CFEE9C97A@ipflavors.com>
Le 05/01/2013 22:44, Romain KUNTZ a écrit :
> Mobile IPv6 provokes a kernel Oops since commit 64c6d08e (ipv6:
> del unreachable route when an addr is deleted on lo), because
> ip6_route_lookup() may also return blackhole and prohibited
> entry. However, these entries have a NULL rt6i_table argument,
> which provokes an Oops in __ip6_del_rt() when trying to lock
> rt6i_table->tb6_lock.
>
> Beside, when purging a prefix, blakhole and prohibited entries
> should not be selected because they are not what we are looking
> for.
>
> We fix this by adding two new lookup flags (RT6_LOOKUP_F_NO_BLK_HOLE
> and RT6_LOOKUP_F_NO_PROHIBIT) in order to ensure that such entries
> are skipped during lookup and that the correct entry is returned.
>
> [v2]: use 'goto out;' instead of 'goto again;' to avoid unnecessary
> oprations on rt (as suggested by Eric Dumazet).
>
> Signed-off-by: Romain Kuntz <r.kuntz@ipflavors.com>
> ---
> include/net/ip6_route.h | 2 ++
> net/ipv6/addrconf.c | 4 +++-
> net/ipv6/fib6_rules.c | 4 ++++
> 3 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
> index 27d8318..3c93743 100644
> --- a/include/net/ip6_route.h
> +++ b/include/net/ip6_route.h
> @@ -30,6 +30,8 @@ struct route_info {
> #define RT6_LOOKUP_F_SRCPREF_TMP 0x00000008
> #define RT6_LOOKUP_F_SRCPREF_PUBLIC 0x00000010
> #define RT6_LOOKUP_F_SRCPREF_COA 0x00000020
> +#define RT6_LOOKUP_F_NO_BLK_HOLE 0x00000040
> +#define RT6_LOOKUP_F_NO_PROHIBIT 0x00000080
>
> /*
> * rt6_srcprefs2flags() and rt6_flags2srcprefs() translate
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index 408cac4a..1891e23 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -948,7 +948,9 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
> fl6.flowi6_oif = ifp->idev->dev->ifindex;
> fl6.daddr = prefix;
> rt = (struct rt6_info *)ip6_route_lookup(net, &fl6,
> - RT6_LOOKUP_F_IFACE);
> + RT6_LOOKUP_F_IFACE |
> + RT6_LOOKUP_F_NO_BLK_HOLE |
> + RT6_LOOKUP_F_NO_PROHIBIT);
>
> if (rt != net->ipv6.ip6_null_entry &&
Is it not simpler to test the result here (net->ipv6.ip6_blk_hole_entry and
net->ipv6.ip6_prohibit_entry) like for the null_entry?
It will also avoid adding more flags.
next prev parent reply other threads:[~2013-01-07 10:25 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-05 16:13 [PATCH 1/2] ipv6: avoid blackhole and prohibited entries upon prefix purge Romain KUNTZ
2013-01-05 16:19 ` [PATCH 2/2] ipv6: fix packet corruption when Dest/RT2 options are used Romain KUNTZ
2013-01-07 10:49 ` Nicolas Dichtel
2013-01-07 12:41 ` Steffen Klassert
2013-01-11 7:27 ` Romain KUNTZ
2013-01-14 7:21 ` Romain KUNTZ
2013-01-05 19:59 ` [PATCH 1/2] ipv6: avoid blackhole and prohibited entries upon prefix purge Eric Dumazet
2013-01-05 21:44 ` [PATCH 1/2] ipv6: avoid blackhole and prohibited entries upon prefix purge [v2] Romain KUNTZ
2013-01-07 10:25 ` Nicolas Dichtel [this message]
2013-01-07 11:30 ` Romain KUNTZ
2013-01-07 15:43 ` Nicolas Dichtel
2013-01-08 11:38 ` Romain KUNTZ
2013-01-08 16:22 ` Nicolas Dichtel
2013-01-08 17:18 ` YOSHIFUJI Hideaki
2013-01-09 14:37 ` [PATCH 1/2] ipv6: avoid blackhole and prohibited entries upon prefix purge [v3] Romain KUNTZ
2013-01-09 15:11 ` Nicolas Dichtel
2013-01-10 7:06 ` Romain KUNTZ
2013-01-10 9:44 ` [PATCH 1/1] ipv6: use addrconf_get_prefix_route for prefix route lookup [v2] (was [PATCH 1/2] ipv6: avoid blackhole and prohibited entries upon prefix purge [v3]) YOSHIFUJI Hideaki
2013-01-10 22:39 ` [PATCH 1/1] ipv6: use addrconf_get_prefix_route for prefix route lookup [v2] 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=50EAA28B.1080300@6wind.com \
--to=nicolas.dichtel@6wind.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=r.kuntz@ipflavors.com \
--cc=yoshfuji@linux-ipv6.org \
/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.