diff options
Diffstat (limited to 'net/l3mdev')
-rw-r--r-- | net/l3mdev/l3mdev.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/l3mdev/l3mdev.c b/net/l3mdev/l3mdev.c index 8e5ead366e7f..e925037fa0df 100644 --- a/net/l3mdev/l3mdev.c +++ b/net/l3mdev/l3mdev.c | |||
@@ -17,7 +17,7 @@ | |||
17 | * @dev: targeted interface | 17 | * @dev: targeted interface |
18 | */ | 18 | */ |
19 | 19 | ||
20 | int l3mdev_master_ifindex_rcu(struct net_device *dev) | 20 | int l3mdev_master_ifindex_rcu(const struct net_device *dev) |
21 | { | 21 | { |
22 | int ifindex = 0; | 22 | int ifindex = 0; |
23 | 23 | ||
@@ -28,8 +28,15 @@ int l3mdev_master_ifindex_rcu(struct net_device *dev) | |||
28 | ifindex = dev->ifindex; | 28 | ifindex = dev->ifindex; |
29 | } else if (netif_is_l3_slave(dev)) { | 29 | } else if (netif_is_l3_slave(dev)) { |
30 | struct net_device *master; | 30 | struct net_device *master; |
31 | struct net_device *_dev = (struct net_device *)dev; | ||
31 | 32 | ||
32 | master = netdev_master_upper_dev_get_rcu(dev); | 33 | /* netdev_master_upper_dev_get_rcu calls |
34 | * list_first_or_null_rcu to walk the upper dev list. | ||
35 | * list_first_or_null_rcu does not handle a const arg. We aren't | ||
36 | * making changes, just want the master device from that list so | ||
37 | * typecast to remove the const | ||
38 | */ | ||
39 | master = netdev_master_upper_dev_get_rcu(_dev); | ||
33 | if (master) | 40 | if (master) |
34 | ifindex = master->ifindex; | 41 | ifindex = master->ifindex; |
35 | } | 42 | } |