File tree Expand file tree Collapse file tree 2 files changed +7
-3
lines changed Expand file tree Collapse file tree 2 files changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -7184,7 +7184,9 @@ static void __net_exit addrconf_exit_net(struct net *net)
71847184 NETCONFA_IFINDEX_ALL );
71857185#endif
71867186 kfree (net -> ipv6 .devconf_dflt );
7187+ net -> ipv6 .devconf_dflt = NULL ;
71877188 kfree (net -> ipv6 .devconf_all );
7189+ net -> ipv6 .devconf_all = NULL ;
71887190}
71897191
71907192static struct pernet_operations addrconf_ops = {
Original file line number Diff line number Diff line change @@ -1567,15 +1567,17 @@ static int ip6mr_sk_init(struct mr_table *mrt, struct sock *sk)
15671567
15681568int ip6mr_sk_done (struct sock * sk )
15691569{
1570- int err = - EACCES ;
15711570 struct net * net = sock_net (sk );
1571+ struct ipv6_devconf * devconf ;
15721572 struct mr_table * mrt ;
1573+ int err = - EACCES ;
15731574
15741575 if (sk -> sk_type != SOCK_RAW ||
15751576 inet_sk (sk )-> inet_num != IPPROTO_ICMPV6 )
15761577 return err ;
15771578
1578- if (!atomic_read (& net -> ipv6 .devconf_all -> mc_forwarding ))
1579+ devconf = net -> ipv6 .devconf_all ;
1580+ if (!devconf || !atomic_read (& devconf -> mc_forwarding ))
15791581 return err ;
15801582
15811583 rtnl_lock ();
@@ -1587,7 +1589,7 @@ int ip6mr_sk_done(struct sock *sk)
15871589 * so the RCU grace period before sk freeing
15881590 * is guaranteed by sk_destruct()
15891591 */
1590- atomic_dec (& net -> ipv6 . devconf_all -> mc_forwarding );
1592+ atomic_dec (& devconf -> mc_forwarding );
15911593 write_unlock_bh (& mrt_lock );
15921594 inet6_netconf_notify_devconf (net , RTM_NEWNETCONF ,
15931595 NETCONFA_MC_FORWARDING ,
You can’t perform that action at this time.
0 commit comments