|
@@ -351,7 +351,7 @@ static int inet_insert_ifa(struct in_ifaddr *ifa)
|
|
|
|
|
|
static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa)
|
|
|
{
|
|
|
- struct in_device *in_dev = __in_dev_get(dev);
|
|
|
+ struct in_device *in_dev = __in_dev_get_rtnl(dev);
|
|
|
|
|
|
ASSERT_RTNL();
|
|
|
|
|
@@ -449,7 +449,7 @@ static int inet_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg
|
|
|
goto out;
|
|
|
|
|
|
rc = -ENOBUFS;
|
|
|
- if ((in_dev = __in_dev_get(dev)) == NULL) {
|
|
|
+ if ((in_dev = __in_dev_get_rtnl(dev)) == NULL) {
|
|
|
in_dev = inetdev_init(dev);
|
|
|
if (!in_dev)
|
|
|
goto out;
|
|
@@ -584,7 +584,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
|
|
|
if (colon)
|
|
|
*colon = ':';
|
|
|
|
|
|
- if ((in_dev = __in_dev_get(dev)) != NULL) {
|
|
|
+ if ((in_dev = __in_dev_get_rtnl(dev)) != NULL) {
|
|
|
if (tryaddrmatch) {
|
|
|
/* Matthias Andree */
|
|
|
/* compare label and address (4.4BSD style) */
|
|
@@ -748,7 +748,7 @@ rarok:
|
|
|
|
|
|
static int inet_gifconf(struct net_device *dev, char __user *buf, int len)
|
|
|
{
|
|
|
- struct in_device *in_dev = __in_dev_get(dev);
|
|
|
+ struct in_device *in_dev = __in_dev_get_rtnl(dev);
|
|
|
struct in_ifaddr *ifa;
|
|
|
struct ifreq ifr;
|
|
|
int done = 0;
|
|
@@ -791,7 +791,7 @@ u32 inet_select_addr(const struct net_device *dev, u32 dst, int scope)
|
|
|
struct in_device *in_dev;
|
|
|
|
|
|
rcu_read_lock();
|
|
|
- in_dev = __in_dev_get(dev);
|
|
|
+ in_dev = __in_dev_get_rcu(dev);
|
|
|
if (!in_dev)
|
|
|
goto no_in_dev;
|
|
|
|
|
@@ -818,7 +818,7 @@ no_in_dev:
|
|
|
read_lock(&dev_base_lock);
|
|
|
rcu_read_lock();
|
|
|
for (dev = dev_base; dev; dev = dev->next) {
|
|
|
- if ((in_dev = __in_dev_get(dev)) == NULL)
|
|
|
+ if ((in_dev = __in_dev_get_rcu(dev)) == NULL)
|
|
|
continue;
|
|
|
|
|
|
for_primary_ifa(in_dev) {
|
|
@@ -887,7 +887,7 @@ u32 inet_confirm_addr(const struct net_device *dev, u32 dst, u32 local, int scop
|
|
|
|
|
|
if (dev) {
|
|
|
rcu_read_lock();
|
|
|
- if ((in_dev = __in_dev_get(dev)))
|
|
|
+ if ((in_dev = __in_dev_get_rcu(dev)))
|
|
|
addr = confirm_addr_indev(in_dev, dst, local, scope);
|
|
|
rcu_read_unlock();
|
|
|
|
|
@@ -897,7 +897,7 @@ u32 inet_confirm_addr(const struct net_device *dev, u32 dst, u32 local, int scop
|
|
|
read_lock(&dev_base_lock);
|
|
|
rcu_read_lock();
|
|
|
for (dev = dev_base; dev; dev = dev->next) {
|
|
|
- if ((in_dev = __in_dev_get(dev))) {
|
|
|
+ if ((in_dev = __in_dev_get_rcu(dev))) {
|
|
|
addr = confirm_addr_indev(in_dev, dst, local, scope);
|
|
|
if (addr)
|
|
|
break;
|
|
@@ -957,7 +957,7 @@ static int inetdev_event(struct notifier_block *this, unsigned long event,
|
|
|
void *ptr)
|
|
|
{
|
|
|
struct net_device *dev = ptr;
|
|
|
- struct in_device *in_dev = __in_dev_get(dev);
|
|
|
+ struct in_device *in_dev = __in_dev_get_rtnl(dev);
|
|
|
|
|
|
ASSERT_RTNL();
|
|
|
|
|
@@ -1078,7 +1078,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
|
|
|
if (idx > s_idx)
|
|
|
s_ip_idx = 0;
|
|
|
rcu_read_lock();
|
|
|
- if ((in_dev = __in_dev_get(dev)) == NULL) {
|
|
|
+ if ((in_dev = __in_dev_get_rcu(dev)) == NULL) {
|
|
|
rcu_read_unlock();
|
|
|
continue;
|
|
|
}
|
|
@@ -1149,7 +1149,7 @@ void inet_forward_change(void)
|
|
|
for (dev = dev_base; dev; dev = dev->next) {
|
|
|
struct in_device *in_dev;
|
|
|
rcu_read_lock();
|
|
|
- in_dev = __in_dev_get(dev);
|
|
|
+ in_dev = __in_dev_get_rcu(dev);
|
|
|
if (in_dev)
|
|
|
in_dev->cnf.forwarding = on;
|
|
|
rcu_read_unlock();
|