diff --git a/drivers/infiniband/core/roce_gid_mgmt.c b/drivers/infiniband/core/roce_gid_mgmt.c index 2860def84f4d..b31c8969c8b2 100644 --- a/drivers/infiniband/core/roce_gid_mgmt.c +++ b/drivers/infiniband/core/roce_gid_mgmt.c @@ -626,6 +626,7 @@ static void netdevice_event_work_handler(struct work_struct *_work) work->cmds[i].ndev); dev_put(work->cmds[i].ndev); dev_put(work->cmds[i].filter_ndev); + put_device(&work->cmds[i].ndev->dev); } kfree(work); @@ -649,6 +650,7 @@ static int netdevice_queue_work(struct netdev_event_work_cmd *cmds, ndev_work->cmds[i].filter_ndev = ndev; dev_hold(ndev_work->cmds[i].ndev); dev_hold(ndev_work->cmds[i].filter_ndev); + get_device(&ndev_work->cmds[i].ndev->dev); } INIT_WORK(&ndev_work->work, netdevice_event_work_handler);