diff options
author | Taehee Yoo <ap420073@gmail.com> | 2020-07-21 14:51:50 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-21 16:00:43 -0700 |
commit | 2c9d8e01f0c6017317eee7638496173d4a64e6bc (patch) | |
tree | 27d0fc555fabf7010c6a04f3d79588b28c002524 | |
parent | 3506b2f42dff66ea6814c3dfa1988bafb79e6f88 (diff) | |
download | lwn-2c9d8e01f0c6017317eee7638496173d4a64e6bc.tar.gz lwn-2c9d8e01f0c6017317eee7638496173d4a64e6bc.zip |
netdevsim: fix unbalaced locking in nsim_create()
In the nsim_create(), rtnl_lock() is called before nsim_bpf_init().
If nsim_bpf_init() is failed, rtnl_unlock() should be called,
but it isn't called.
So, unbalanced locking would occur.
Fixes: e05b2d141fef ("netdevsim: move netdev creation/destruction to dev probe")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/netdevsim/netdev.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index 2908e0a0d6e1..23950e7a0f81 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -302,7 +302,7 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port) rtnl_lock(); err = nsim_bpf_init(ns); if (err) - goto err_free_netdev; + goto err_rtnl_unlock; nsim_ipsec_init(ns); @@ -316,8 +316,8 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port) err_ipsec_teardown: nsim_ipsec_teardown(ns); nsim_bpf_uninit(ns); +err_rtnl_unlock: rtnl_unlock(); -err_free_netdev: free_netdev(dev); return ERR_PTR(err); } |