diff options
author | stephen hemminger <stephen@networkplumber.org> | 2017-07-19 11:53:16 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-19 22:20:05 -0700 |
commit | 9749fed5d43d84b86f1c98b70167c31c296bb6a6 (patch) | |
tree | 0ec6e775b34202d7725fc768cd0742f3ae6ebfcc /drivers/net/hyperv/hyperv_net.h | |
parent | ea383bf146be1e190f1d696e7db060afa8c93c31 (diff) | |
download | linux-9749fed5d43d84b86f1c98b70167c31c296bb6a6.tar.gz linux-9749fed5d43d84b86f1c98b70167c31c296bb6a6.tar.bz2 linux-9749fed5d43d84b86f1c98b70167c31c296bb6a6.zip |
netvsc: use ERR_PTR to avoid dereference issues
The rndis_filter_device_add function is called both in
probe context and RTNL context,and creates the netvsc_device
inner structure. It is easier to get the RTNL lock annotation
correct if it returns the object directly, rather than implicitly
by updating network device private data.
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/hyperv/hyperv_net.h')
-rw-r--r-- | drivers/net/hyperv/hyperv_net.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h index 5d541a1462c2..e620374727c8 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h @@ -183,8 +183,8 @@ struct rndis_device { /* Interface */ struct rndis_message; struct netvsc_device; -int netvsc_device_add(struct hv_device *device, - const struct netvsc_device_info *info); +struct netvsc_device *netvsc_device_add(struct hv_device *device, + const struct netvsc_device_info *info); void netvsc_device_remove(struct hv_device *device); int netvsc_send(struct hv_device *device, struct hv_netvsc_packet *packet, @@ -203,8 +203,8 @@ int netvsc_poll(struct napi_struct *napi, int budget); bool rndis_filter_opened(const struct netvsc_device *nvdev); int rndis_filter_open(struct netvsc_device *nvdev); int rndis_filter_close(struct netvsc_device *nvdev); -int rndis_filter_device_add(struct hv_device *dev, - struct netvsc_device_info *info); +struct netvsc_device *rndis_filter_device_add(struct hv_device *dev, + struct netvsc_device_info *info); void rndis_filter_update(struct netvsc_device *nvdev); void rndis_filter_device_remove(struct hv_device *dev, struct netvsc_device *nvdev); |