File tree Expand file tree Collapse file tree 7 files changed +30
-11
lines changed Expand file tree Collapse file tree 7 files changed +30
-11
lines changed Original file line number Diff line number Diff line change @@ -204,7 +204,7 @@ struct rtnl_af_ops {
204
204
size_t (* get_stats_af_size )(const struct net_device * dev );
205
205
};
206
206
207
- void rtnl_af_register (struct rtnl_af_ops * ops );
207
+ int rtnl_af_register (struct rtnl_af_ops * ops );
208
208
void rtnl_af_unregister (struct rtnl_af_ops * ops );
209
209
210
210
struct net * rtnl_link_get_net (struct net * src_net , struct nlattr * tb []);
Original file line number Diff line number Diff line change @@ -1924,7 +1924,9 @@ int __init br_netlink_init(void)
1924
1924
if (err )
1925
1925
goto out ;
1926
1926
1927
- rtnl_af_register (& br_af_ops );
1927
+ err = rtnl_af_register (& br_af_ops );
1928
+ if (err )
1929
+ goto out_vlan ;
1928
1930
1929
1931
err = rtnl_link_register (& br_link_ops );
1930
1932
if (err )
@@ -1934,6 +1936,8 @@ int __init br_netlink_init(void)
1934
1936
1935
1937
out_af :
1936
1938
rtnl_af_unregister (& br_af_ops );
1939
+ out_vlan :
1940
+ br_vlan_rtnl_uninit ();
1937
1941
out :
1938
1942
return err ;
1939
1943
}
Original file line number Diff line number Diff line change @@ -686,11 +686,13 @@ static const struct rtnl_af_ops *rtnl_af_lookup(const int family)
686
686
*
687
687
* Returns 0 on success or a negative error code.
688
688
*/
689
- void rtnl_af_register (struct rtnl_af_ops * ops )
689
+ int rtnl_af_register (struct rtnl_af_ops * ops )
690
690
{
691
691
rtnl_lock ();
692
692
list_add_tail_rcu (& ops -> list , & rtnl_af_ops );
693
693
rtnl_unlock ();
694
+
695
+ return 0 ;
694
696
}
695
697
EXPORT_SYMBOL_GPL (rtnl_af_register );
696
698
Original file line number Diff line number Diff line change @@ -2827,7 +2827,8 @@ void __init devinet_init(void)
2827
2827
register_pernet_subsys (& devinet_ops );
2828
2828
register_netdevice_notifier (& ip_netdev_notifier );
2829
2829
2830
- rtnl_af_register (& inet_af_ops );
2830
+ if (rtnl_af_register (& inet_af_ops ))
2831
+ panic ("Unable to register inet_af_ops\n" );
2831
2832
2832
2833
rtnl_register_many (devinet_rtnl_msg_handlers );
2833
2834
}
Original file line number Diff line number Diff line change @@ -7468,7 +7468,9 @@ int __init addrconf_init(void)
7468
7468
7469
7469
addrconf_verify (& init_net );
7470
7470
7471
- rtnl_af_register (& inet6_ops );
7471
+ err = rtnl_af_register (& inet6_ops );
7472
+ if (err )
7473
+ goto erraf ;
7472
7474
7473
7475
err = rtnl_register_many (addrconf_rtnl_msg_handlers );
7474
7476
if (err )
@@ -7482,6 +7484,7 @@ int __init addrconf_init(void)
7482
7484
errout :
7483
7485
rtnl_unregister_all (PF_INET6 );
7484
7486
rtnl_af_unregister (& inet6_ops );
7487
+ erraf :
7485
7488
unregister_netdevice_notifier (& ipv6_dev_notf );
7486
7489
errlo :
7487
7490
destroy_workqueue (addrconf_wq );
Original file line number Diff line number Diff line change @@ -535,14 +535,20 @@ int __init mctp_device_init(void)
535
535
int err ;
536
536
537
537
register_netdevice_notifier (& mctp_dev_nb );
538
- rtnl_af_register (& mctp_af_ops );
538
+
539
+ err = rtnl_af_register (& mctp_af_ops );
540
+ if (err )
541
+ goto err_notifier ;
539
542
540
543
err = rtnl_register_many (mctp_device_rtnl_msg_handlers );
541
- if (err ) {
542
- rtnl_af_unregister (& mctp_af_ops );
543
- unregister_netdevice_notifier (& mctp_dev_nb );
544
- }
544
+ if (err )
545
+ goto err_af ;
545
546
547
+ return 0 ;
548
+ err_af :
549
+ rtnl_af_unregister (& mctp_af_ops );
550
+ err_notifier :
551
+ unregister_netdevice_notifier (& mctp_dev_nb );
546
552
return err ;
547
553
}
548
554
Original file line number Diff line number Diff line change @@ -2753,7 +2753,9 @@ static int __init mpls_init(void)
2753
2753
2754
2754
dev_add_pack (& mpls_packet_type );
2755
2755
2756
- rtnl_af_register (& mpls_af_ops );
2756
+ err = rtnl_af_register (& mpls_af_ops );
2757
+ if (err )
2758
+ goto out_unregister_dev_type ;
2757
2759
2758
2760
err = rtnl_register_many (mpls_rtnl_msg_handlers );
2759
2761
if (err )
@@ -2773,6 +2775,7 @@ static int __init mpls_init(void)
2773
2775
rtnl_unregister_many (mpls_rtnl_msg_handlers );
2774
2776
out_unregister_rtnl_af :
2775
2777
rtnl_af_unregister (& mpls_af_ops );
2778
+ out_unregister_dev_type :
2776
2779
dev_remove_pack (& mpls_packet_type );
2777
2780
out_unregister_pernet :
2778
2781
unregister_pernet_subsys (& mpls_net_ops );
You can’t perform that action at this time.
0 commit comments