Message ID | 559BF613.7090904@virtuozzo.com |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Jul 7, 2015 at 8:53 AM, Vasily Averin <vvs@virtuozzo.com> wrote: > ipmr_free_table() calls unregister_netdevice_many() inside > and changes net_todo_list protected by rtnl_lock > Did you see any real bug? ipmr_free_table() is called in failure path, in this case there is no device registered yet, so unregister should be just a nop? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 07.07.2015 20:13, Cong Wang wrote: > On Tue, Jul 7, 2015 at 8:53 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >> ipmr_free_table() calls unregister_netdevice_many() inside >> and changes net_todo_list protected by rtnl_lock > > Did you see any real bug? No, it was result of manual code review. > ipmr_free_table() is called in failure path, in this case there is no > device registered yet, so unregister should be just a nop? However may be it's better to mark this place for future anyway? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Jul 7, 2015 at 10:25 AM, Vasily Averin <vvs@virtuozzo.com> wrote: > On 07.07.2015 20:13, Cong Wang wrote: >> On Tue, Jul 7, 2015 at 8:53 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >>> ipmr_free_table() calls unregister_netdevice_many() inside >>> and changes net_todo_list protected by rtnl_lock >> >> Did you see any real bug? > > No, it was result of manual code review. > >> ipmr_free_table() is called in failure path, in this case there is no >> device registered yet, so unregister should be just a nop? > > However may be it's better to mark this place for future anyway? Then add a comment there. ;) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 07.07.2015 20:30, Cong Wang wrote: > On Tue, Jul 7, 2015 at 10:25 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >> On 07.07.2015 20:13, Cong Wang wrote: >>> On Tue, Jul 7, 2015 at 8:53 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >>>> ipmr_free_table() calls unregister_netdevice_many() inside >>>> and changes net_todo_list protected by rtnl_lock >>> >>> Did you see any real bug? >> >> No, it was result of manual code review. >> >>> ipmr_free_table() is called in failure path, in this case there is no >>> device registered yet, so unregister should be just a nop? >> >> However may be it's better to mark this place for future anyway? > > Then add a comment there. ;) As you can see I'm not familiar with this code, so I would like to ask you to do it. :) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 07.07.2015 20:53, Vasily Averin wrote: > On 07.07.2015 20:30, Cong Wang wrote: >> On Tue, Jul 7, 2015 at 10:25 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >>> On 07.07.2015 20:13, Cong Wang wrote: >>>> On Tue, Jul 7, 2015 at 8:53 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >>>>> ipmr_free_table() calls unregister_netdevice_many() inside >>>>> and changes net_todo_list protected by rtnl_lock >>>> >>>> Did you see any real bug? >>> >>> No, it was result of manual code review. >>> >>>> ipmr_free_table() is called in failure path, in this case there is no >>>> device registered yet, so unregister should be just a nop? >>> >>> However may be it's better to mark this place for future anyway? >> >> Then add a comment there. ;) > > As you can see I'm not familiar with this code, > so I would like to ask you to do it. :) Seems I've found a better idea: to add ASSERT_RTNL() into unregister_netdevice_many() -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 08.07.2015 13:29, Vasily Averin wrote: > On 07.07.2015 20:53, Vasily Averin wrote: >> On 07.07.2015 20:30, Cong Wang wrote: >>> On Tue, Jul 7, 2015 at 10:25 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >>>> On 07.07.2015 20:13, Cong Wang wrote: >>>>> On Tue, Jul 7, 2015 at 8:53 AM, Vasily Averin <vvs@virtuozzo.com> wrote: >>>>>> ipmr_free_table() calls unregister_netdevice_many() inside >>>>>> and changes net_todo_list protected by rtnl_lock >>>>> >>>>> Did you see any real bug? >>>> >>>> No, it was result of manual code review. >>>> >>>>> ipmr_free_table() is called in failure path, in this case there is no >>>>> device registered yet, so unregister should be just a nop? >>>> >>>> However may be it's better to mark this place for future anyway? >>> >>> Then add a comment there. ;) >> >> As you can see I'm not familiar with this code, >> so I would like to ask you to do it. :) > > Seems I've found a better idea: > to add ASSERT_RTNL() into unregister_netdevice_many() It was done already, there is ASSERT_RTNL() in rollback_registered_many() called from unregister_netdevice_many(). Please drop this patch, seems it isn't required. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 74ceb73..9108636 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c @@ -250,7 +250,9 @@ static int __net_init ip6mr_rules_init(struct net *net) return 0; err2: + rtnl_lock(); ip6mr_free_table(mrt); + rtnl_unlock(); err1: fib_rules_unregister(ops); return err;
ipmr_free_table() calls unregister_netdevice_many() inside and changes net_todo_list protected by rtnl_lock Signed-off-by: Vasily Averin <vvs@virtuozzo.com> --- net/ipv6/ip6mr.c | 2 ++ 1 file changed, 2 insertions(+)