diff options
| -rw-r--r-- | drivers/infiniband/core/addr.c | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c index 3a98439bba83..0abce004a959 100644 --- a/drivers/infiniband/core/addr.c +++ b/drivers/infiniband/core/addr.c @@ -647,13 +647,12 @@ static void process_one_req(struct work_struct *_work)  	req->callback = NULL;  	spin_lock_bh(&lock); +	/* +	 * Although the work will normally have been canceled by the workqueue, +	 * it can still be requeued as long as it is on the req_list. +	 */ +	cancel_delayed_work(&req->work);  	if (!list_empty(&req->list)) { -		/* -		 * Although the work will normally have been canceled by the -		 * workqueue, it can still be requeued as long as it is on the -		 * req_list. -		 */ -		cancel_delayed_work(&req->work);  		list_del_init(&req->list);  		kfree(req);  	}  | 
