pn_dev.c (2d8ad8719591fa803b0d589ed057fa46f49b7155) | pn_dev.c (e67f88dd12f610da98ca838822f2c9b4e7c6100e) |
---|---|
1/* 2 * File: pn_dev.c 3 * 4 * Phonet network device 5 * 6 * Copyright (C) 2008 Nokia Corporation. 7 * 8 * Contact: Remi Denis-Courmont <remi.denis-courmont@nokia.com> --- 412 unchanged lines hidden (view full) --- 421 422 if (!dev) 423 return -ENOENT; 424 synchronize_rcu(); 425 dev_put(dev); 426 return 0; 427} 428 | 1/* 2 * File: pn_dev.c 3 * 4 * Phonet network device 5 * 6 * Copyright (C) 2008 Nokia Corporation. 7 * 8 * Contact: Remi Denis-Courmont <remi.denis-courmont@nokia.com> --- 412 unchanged lines hidden (view full) --- 421 422 if (!dev) 423 return -ENOENT; 424 synchronize_rcu(); 425 dev_put(dev); 426 return 0; 427} 428 |
429struct net_device *phonet_route_get(struct net *net, u8 daddr) | 429struct net_device *phonet_route_get_rcu(struct net *net, u8 daddr) |
430{ 431 struct phonet_net *pnn = phonet_pernet(net); 432 struct phonet_routes *routes = &pnn->routes; 433 struct net_device *dev; 434 | 430{ 431 struct phonet_net *pnn = phonet_pernet(net); 432 struct phonet_routes *routes = &pnn->routes; 433 struct net_device *dev; 434 |
435 ASSERT_RTNL(); /* no need to hold the device */ 436 | |
437 daddr >>= 2; | 435 daddr >>= 2; |
438 rcu_read_lock(); | |
439 dev = rcu_dereference(routes->table[daddr]); | 436 dev = rcu_dereference(routes->table[daddr]); |
440 rcu_read_unlock(); | |
441 return dev; 442} 443 444struct net_device *phonet_route_output(struct net *net, u8 daddr) 445{ 446 struct phonet_net *pnn = phonet_pernet(net); 447 struct phonet_routes *routes = &pnn->routes; 448 struct net_device *dev; --- 12 unchanged lines hidden --- | 437 return dev; 438} 439 440struct net_device *phonet_route_output(struct net *net, u8 daddr) 441{ 442 struct phonet_net *pnn = phonet_pernet(net); 443 struct phonet_routes *routes = &pnn->routes; 444 struct net_device *dev; --- 12 unchanged lines hidden --- |