@ -313,19 +313,14 @@ static struct notifier_block phonet_device_notifier = {
/* Per-namespace Phonet devices handling */
static int phonet_init_net ( struct net * net )
{
struct phonet_net * pnn = kzalloc ( sizeof ( * pnn ) , GFP_KERNEL ) ;
if ( ! pnn )
return - ENOMEM ;
struct phonet_net * pnn = net_generic ( net , phonet_net_id ) ;
if ( ! proc_net_fops_create ( net , " phonet " , 0 , & pn_sock_seq_fops ) ) {
kfree ( pnn ) ;
if ( ! proc_net_fops_create ( net , " phonet " , 0 , & pn_sock_seq_fops ) )
return - ENOMEM ;
}
INIT_LIST_HEAD ( & pnn - > pndevs . list ) ;
mutex_init ( & pnn - > pndevs . lock ) ;
mutex_init ( & pnn - > routes . lock ) ;
net_assign_generic ( net , phonet_net_id , pnn ) ;
return 0 ;
}
@ -349,18 +344,19 @@ static void phonet_exit_net(struct net *net)
rtnl_unlock ( ) ;
proc_net_remove ( net , " phonet " ) ;
kfree ( pnn ) ;
}
static struct pernet_operations phonet_net_ops = {
. init = phonet_init_net ,
. exit = phonet_exit_net ,
. id = & phonet_net_id ,
. size = sizeof ( struct phonet_net ) ,
} ;
/* Initialize Phonet devices list */
int __init phonet_device_init ( void )
{
int err = register_pernet_gen_ device ( & phonet_net_id , & phonet_net_ops ) ;
int err = register_pernet_device ( & phonet_net_ops ) ;
if ( err )
return err ;
@ -375,7 +371,7 @@ void phonet_device_exit(void)
{
rtnl_unregister_all ( PF_PHONET ) ;
unregister_netdevice_notifier ( & phonet_device_notifier ) ;
unregister_pernet_gen_ device ( phonet_net_id , & phonet_net_ops ) ;
unregister_pernet_device ( & phonet_net_ops ) ;
}
int phonet_route_add ( struct net_device * dev , u8 daddr )