|
2 | 2 |
|
3 | 3 | #include <linux/net_tstamp.h> |
4 | 4 | #include <linux/ptp_clock_kernel.h> |
| 5 | +#include <net/netdev_lock.h> |
5 | 6 |
|
6 | 7 | #include "bitset.h" |
7 | 8 | #include "common.h" |
@@ -57,7 +58,7 @@ static int tsconfig_prepare_data(const struct ethnl_req_info *req_base, |
57 | 58 | data->hwtst_config.flags = cfg.flags; |
58 | 59 |
|
59 | 60 | data->hwprov_desc.index = -1; |
60 | | - hwprov = rtnl_dereference(dev->hwprov); |
| 61 | + hwprov = netdev_ops_lock_dereference(dev->hwprov, dev); |
61 | 62 | if (hwprov) { |
62 | 63 | data->hwprov_desc.index = hwprov->desc.index; |
63 | 64 | data->hwprov_desc.qualifier = hwprov->desc.qualifier; |
@@ -213,7 +214,7 @@ static int tsconfig_send_reply(struct net_device *dev, struct genl_info *info) |
213 | 214 | return -ENOMEM; |
214 | 215 | } |
215 | 216 |
|
216 | | - ASSERT_RTNL(); |
| 217 | + netdev_assert_locked_ops_compat(dev); |
217 | 218 | reply_data->base.dev = dev; |
218 | 219 | ret = tsconfig_prepare_data(&req_info->base, &reply_data->base, info); |
219 | 220 | if (ret < 0) |
@@ -316,7 +317,7 @@ static int ethnl_set_tsconfig(struct ethnl_req_info *req_base, |
316 | 317 | struct hwtstamp_provider_desc __hwprov_desc = {.index = -1}; |
317 | 318 | struct hwtstamp_provider *__hwprov; |
318 | 319 |
|
319 | | - __hwprov = rtnl_dereference(dev->hwprov); |
| 320 | + __hwprov = netdev_ops_lock_dereference(dev->hwprov, dev); |
320 | 321 | if (__hwprov) { |
321 | 322 | __hwprov_desc.index = __hwprov->desc.index; |
322 | 323 | __hwprov_desc.qualifier = __hwprov->desc.qualifier; |
@@ -414,7 +415,8 @@ static int ethnl_set_tsconfig(struct ethnl_req_info *req_base, |
414 | 415 | goto err_free_hwprov; |
415 | 416 |
|
416 | 417 | /* Change the selected hwtstamp source */ |
417 | | - __hwprov = rcu_replace_pointer_rtnl(dev->hwprov, hwprov); |
| 418 | + __hwprov = rcu_replace_pointer(dev->hwprov, hwprov, |
| 419 | + netdev_is_locked_ops_compat(dev)); |
418 | 420 | if (__hwprov) |
419 | 421 | kfree_rcu(__hwprov, rcu_head); |
420 | 422 | } |
|
0 commit comments