lkml.org 
[lkml]   [2020]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 056/138] netdevsim: fix unbalaced locking in nsim_create()
    Date
    From: Taehee Yoo <ap420073@gmail.com>

    [ Upstream commit 2c9d8e01f0c6017317eee7638496173d4a64e6bc ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/netdevsim/netdev.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c
    index 55f57f76d01bb..a6bbe93f29ef6 100644
    --- a/drivers/net/netdevsim/netdev.c
    +++ b/drivers/net/netdevsim/netdev.c
    @@ -301,7 +301,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);

    @@ -315,8 +315,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);
    }
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-07-27 16:16    [W:4.113 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site