* [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
@ 2012-09-20 5:25 Gao feng
2012-09-21 17:16 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Gao feng @ 2012-09-20 5:25 UTC (permalink / raw)
To: davem; +Cc: netdev, Gao feng
as we hold dst_entry before we call __ip6_del_rt,
so we should alse call dst_release not only return
-ENOENT when the rt6_info is ip6_null_entry.
and we already hold the dst entry, so I think it's
safe to call dst_release out of the write-read lock.
Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
---
net/ipv6/route.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 854e401..46eff42 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1589,17 +1589,18 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info)
struct fib6_table *table;
struct net *net = dev_net(rt->dst.dev);
- if (rt == net->ipv6.ip6_null_entry)
- return -ENOENT;
+ if (rt == net->ipv6.ip6_null_entry) {
+ err = -ENOENT;
+ goto out;
+ }
table = rt->rt6i_table;
write_lock_bh(&table->tb6_lock);
-
err = fib6_del(rt, info);
- dst_release(&rt->dst);
-
write_unlock_bh(&table->tb6_lock);
+out:
+ dst_release(&rt->dst);
return err;
}
--
1.7.7.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
2012-09-20 5:25 [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt Gao feng
@ 2012-09-21 17:16 ` David Miller
2012-09-24 4:32 ` Gao feng
0 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2012-09-21 17:16 UTC (permalink / raw)
To: gaofeng; +Cc: netdev
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Thu, 20 Sep 2012 13:25:34 +0800
> as we hold dst_entry before we call __ip6_del_rt,
> so we should alse call dst_release not only return
> -ENOENT when the rt6_info is ip6_null_entry.
>
> and we already hold the dst entry, so I think it's
> safe to call dst_release out of the write-read lock.
>
> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
I cannot find a code path where we can actually end up
with an ip6_null_entry here and I'd much rather declare
this condition as a bug.
Patrick McHardy added this check back in 2006:
commit 6c813a7297e3af4cd7c3458e09e9ee3d161c6830
Author: Patrick McHardy <kaber@trash.net>
Date: Sun Aug 6 22:22:47 2006 -0700
[IPV6]: Fix crash in ip6_del_rt
But the ipv6 code has changed substantially since then.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
2012-09-21 17:16 ` David Miller
@ 2012-09-24 4:32 ` Gao feng
2012-10-04 2:55 ` Gao feng
0 siblings, 1 reply; 6+ messages in thread
From: Gao feng @ 2012-09-24 4:32 UTC (permalink / raw)
To: David Miller; +Cc: netdev
于 2012年09月22日 01:16, David Miller 写道:
> From: Gao feng <gaofeng@cn.fujitsu.com>
> Date: Thu, 20 Sep 2012 13:25:34 +0800
>
>> as we hold dst_entry before we call __ip6_del_rt,
>> so we should alse call dst_release not only return
>> -ENOENT when the rt6_info is ip6_null_entry.
>>
>> and we already hold the dst entry, so I think it's
>> safe to call dst_release out of the write-read lock.
>>
>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
>
> I cannot find a code path where we can actually end up
> with an ip6_null_entry here and I'd much rather declare
> this condition as a bug.
>
> Patrick McHardy added this check back in 2006:
>
> commit 6c813a7297e3af4cd7c3458e09e9ee3d161c6830
> Author: Patrick McHardy <kaber@trash.net>
> Date: Sun Aug 6 22:22:47 2006 -0700
>
> [IPV6]: Fix crash in ip6_del_rt
>
> But the ipv6 code has changed substantially since then.
ip -6 route del ::/0 will end up with an ip6_null_entry.
so I think this checking and this patch is needed .
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
2012-09-24 4:32 ` Gao feng
@ 2012-10-04 2:55 ` Gao feng
2012-10-04 3:02 ` David Miller
2012-10-04 20:00 ` David Miller
0 siblings, 2 replies; 6+ messages in thread
From: Gao feng @ 2012-10-04 2:55 UTC (permalink / raw)
To: David Miller; +Cc: netdev
于 2012年09月24日 12:32, Gao feng 写道:
> 于 2012年09月22日 01:16, David Miller 写道:
>> From: Gao feng <gaofeng@cn.fujitsu.com>
>> Date: Thu, 20 Sep 2012 13:25:34 +0800
>>
>>> as we hold dst_entry before we call __ip6_del_rt,
>>> so we should alse call dst_release not only return
>>> -ENOENT when the rt6_info is ip6_null_entry.
>>>
>>> and we already hold the dst entry, so I think it's
>>> safe to call dst_release out of the write-read lock.
>>>
>>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
>>
>> I cannot find a code path where we can actually end up
>> with an ip6_null_entry here and I'd much rather declare
>> this condition as a bug.
>>
>> Patrick McHardy added this check back in 2006:
>>
>> commit 6c813a7297e3af4cd7c3458e09e9ee3d161c6830
>> Author: Patrick McHardy <kaber@trash.net>
>> Date: Sun Aug 6 22:22:47 2006 -0700
>>
>> [IPV6]: Fix crash in ip6_del_rt
>>
>> But the ipv6 code has changed substantially since then.
>
> ip -6 route del ::/0 will end up with an ip6_null_entry.
> so I think this checking and this patch is needed .
>
Hi David
Can you apply this patch?
thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
2012-10-04 2:55 ` Gao feng
@ 2012-10-04 3:02 ` David Miller
2012-10-04 20:00 ` David Miller
1 sibling, 0 replies; 6+ messages in thread
From: David Miller @ 2012-10-04 3:02 UTC (permalink / raw)
To: gaofeng; +Cc: netdev
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Thu, 04 Oct 2012 10:55:18 +0800
> 于 2012年09月24日 12:32, Gao feng 写道:
>> 于 2012年09月22日 01:16, David Miller 写道:
>>> From: Gao feng <gaofeng@cn.fujitsu.com>
>>> Date: Thu, 20 Sep 2012 13:25:34 +0800
>>>
>>>> as we hold dst_entry before we call __ip6_del_rt,
>>>> so we should alse call dst_release not only return
>>>> -ENOENT when the rt6_info is ip6_null_entry.
>>>>
>>>> and we already hold the dst entry, so I think it's
>>>> safe to call dst_release out of the write-read lock.
>>>>
>>>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
...
> Can you apply this patch?
Sorry, I've been really busy this week. I will try to get to
this soon.
Thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt
2012-10-04 2:55 ` Gao feng
2012-10-04 3:02 ` David Miller
@ 2012-10-04 20:00 ` David Miller
1 sibling, 0 replies; 6+ messages in thread
From: David Miller @ 2012-10-04 20:00 UTC (permalink / raw)
To: gaofeng; +Cc: netdev
From: Gao feng <gaofeng@cn.fujitsu.com>
Date: Thu, 04 Oct 2012 10:55:18 +0800
> 于 2012年09月24日 12:32, Gao feng 写道:
>> 于 2012年09月22日 01:16, David Miller 写道:
>>> From: Gao feng <gaofeng@cn.fujitsu.com>
>>> Date: Thu, 20 Sep 2012 13:25:34 +0800
>>>
>>>> as we hold dst_entry before we call __ip6_del_rt,
>>>> so we should alse call dst_release not only return
>>>> -ENOENT when the rt6_info is ip6_null_entry.
>>>>
>>>> and we already hold the dst entry, so I think it's
>>>> safe to call dst_release out of the write-read lock.
>>>>
>>>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
...
> Can you apply this patch?
Applied and queued up for -stable, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-10-04 20:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-20 5:25 [PATCH] ipv6: release referenct of ip6_null_entry's dst entry in __ip6_del_rt Gao feng
2012-09-21 17:16 ` David Miller
2012-09-24 4:32 ` Gao feng
2012-10-04 2:55 ` Gao feng
2012-10-04 3:02 ` David Miller
2012-10-04 20:00 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).