diff options
Diffstat (limited to 'include/linux/inetdevice.h')
-rw-r--r-- | include/linux/inetdevice.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index ccd5b07d678d..ae8fdc54e0c0 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
@@ -41,10 +41,12 @@ enum | |||
41 | __IPV4_DEVCONF_MAX | 41 | __IPV4_DEVCONF_MAX |
42 | }; | 42 | }; |
43 | 43 | ||
44 | #define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1) | ||
45 | |||
44 | struct ipv4_devconf { | 46 | struct ipv4_devconf { |
45 | void *sysctl; | 47 | void *sysctl; |
46 | int data[__IPV4_DEVCONF_MAX - 1]; | 48 | int data[IPV4_DEVCONF_MAX]; |
47 | DECLARE_BITMAP(state, __IPV4_DEVCONF_MAX - 1); | 49 | DECLARE_BITMAP(state, IPV4_DEVCONF_MAX); |
48 | }; | 50 | }; |
49 | 51 | ||
50 | struct in_device { | 52 | struct in_device { |
@@ -52,9 +54,8 @@ struct in_device { | |||
52 | atomic_t refcnt; | 54 | atomic_t refcnt; |
53 | int dead; | 55 | int dead; |
54 | struct in_ifaddr *ifa_list; /* IP ifaddr chain */ | 56 | struct in_ifaddr *ifa_list; /* IP ifaddr chain */ |
55 | rwlock_t mc_list_lock; | 57 | struct ip_mc_list __rcu *mc_list; /* IP multicast filter chain */ |
56 | struct ip_mc_list *mc_list; /* IP multicast filter chain */ | 58 | int mc_count; /* Number of installed mcasts */ |
57 | int mc_count; /* Number of installed mcasts */ | ||
58 | spinlock_t mc_tomb_lock; | 59 | spinlock_t mc_tomb_lock; |
59 | struct ip_mc_list *mc_tomb; | 60 | struct ip_mc_list *mc_tomb; |
60 | unsigned long mr_v1_seen; | 61 | unsigned long mr_v1_seen; |
@@ -91,7 +92,7 @@ static inline void ipv4_devconf_set(struct in_device *in_dev, int index, | |||
91 | 92 | ||
92 | static inline void ipv4_devconf_setall(struct in_device *in_dev) | 93 | static inline void ipv4_devconf_setall(struct in_device *in_dev) |
93 | { | 94 | { |
94 | bitmap_fill(in_dev->cnf.state, __IPV4_DEVCONF_MAX - 1); | 95 | bitmap_fill(in_dev->cnf.state, IPV4_DEVCONF_MAX); |
95 | } | 96 | } |
96 | 97 | ||
97 | #define IN_DEV_CONF_GET(in_dev, attr) \ | 98 | #define IN_DEV_CONF_GET(in_dev, attr) \ |
@@ -221,7 +222,7 @@ static inline struct in_device *in_dev_get(const struct net_device *dev) | |||
221 | 222 | ||
222 | static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev) | 223 | static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev) |
223 | { | 224 | { |
224 | return rcu_dereference_check(dev->ip_ptr, lockdep_rtnl_is_held()); | 225 | return rtnl_dereference(dev->ip_ptr); |
225 | } | 226 | } |
226 | 227 | ||
227 | extern void in_dev_finish_destroy(struct in_device *idev); | 228 | extern void in_dev_finish_destroy(struct in_device *idev); |