mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
ipmr: add rcu protection over (struct vif_device)->dev
We will soon use RCU instead of rwlock in ipmr & ip6mr This preliminary patch adds proper rcu verbs to read/write (struct vif_device)->dev Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
0a24c43f54
commit
ebc3197963
@@ -26,7 +26,7 @@
|
||||
* @remote: Remote address for tunnels
|
||||
*/
|
||||
struct vif_device {
|
||||
struct net_device *dev;
|
||||
struct net_device __rcu *dev;
|
||||
netdevice_tracker dev_tracker;
|
||||
unsigned long bytes_in, bytes_out;
|
||||
unsigned long pkt_in, pkt_out;
|
||||
@@ -52,6 +52,7 @@ static inline int mr_call_vif_notifier(struct notifier_block *nb,
|
||||
unsigned short family,
|
||||
enum fib_event_type event_type,
|
||||
struct vif_device *vif,
|
||||
struct net_device *vif_dev,
|
||||
unsigned short vif_index, u32 tb_id,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
@@ -60,7 +61,7 @@ static inline int mr_call_vif_notifier(struct notifier_block *nb,
|
||||
.family = family,
|
||||
.extack = extack,
|
||||
},
|
||||
.dev = vif->dev,
|
||||
.dev = vif_dev,
|
||||
.vif_index = vif_index,
|
||||
.vif_flags = vif->flags,
|
||||
.tb_id = tb_id,
|
||||
@@ -73,6 +74,7 @@ static inline int mr_call_vif_notifiers(struct net *net,
|
||||
unsigned short family,
|
||||
enum fib_event_type event_type,
|
||||
struct vif_device *vif,
|
||||
struct net_device *vif_dev,
|
||||
unsigned short vif_index, u32 tb_id,
|
||||
unsigned int *ipmr_seq)
|
||||
{
|
||||
@@ -80,7 +82,7 @@ static inline int mr_call_vif_notifiers(struct net *net,
|
||||
.info = {
|
||||
.family = family,
|
||||
},
|
||||
.dev = vif->dev,
|
||||
.dev = vif_dev,
|
||||
.vif_index = vif_index,
|
||||
.vif_flags = vif->flags,
|
||||
.tb_id = tb_id,
|
||||
@@ -98,7 +100,8 @@ static inline int mr_call_vif_notifiers(struct net *net,
|
||||
#define MAXVIFS 32
|
||||
#endif
|
||||
|
||||
#define VIF_EXISTS(_mrt, _idx) (!!((_mrt)->vif_table[_idx].dev))
|
||||
/* Note: This helper is deprecated. */
|
||||
#define VIF_EXISTS(_mrt, _idx) (!!rcu_access_pointer((_mrt)->vif_table[_idx].dev))
|
||||
|
||||
/* mfc_flags:
|
||||
* MFC_STATIC - the entry was added statically (not by a routing daemon)
|
||||
|
||||
Reference in New Issue
Block a user