Re: [PATCH v2] nbd: Fix NULL pointer in flush_workqueue
From: Sun Ke <hidden>
Date: 2021-02-02 01:37:43
Also in:
linux-block, lkml
hi,Markus 在 2021/2/2 3:05, Markus Elfring 写道:
…quoted
+++ b/drivers/block/nbd.c@@ -2011,12 +2011,14 @@ static int nbd_genl_disconnect(struct sk_buff *skb, struct genl_info *info) index); return -EINVAL; } + mutex_lock(&nbd->config_lock); if (!refcount_inc_not_zero(&nbd->refs)) { - mutex_unlock(&nbd_index_mutex); - printk(KERN_ERR "nbd: device at index %d is going down\n", - index); - return -EINVAL; + goto unlock; } + if (!nbd->recv_workq) { + goto unlock; + }How do you think about to use the following patch variant (so that unwanted curly brackets would be avoided for proposed single statements in two if branches)? + mutex_lock(&nbd->config_lock); - if (!refcount_inc_not_zero(&nbd->refs)) { + if (!refcount_inc_not_zero(&nbd->refs) || !nbd->recv_workq) { + mutex_unlock(&nbd->config_lock); mutex_unlock(&nbd_index_mutex); printk(KERN_ERR "nbd: device at index %d is going down\n",tter index); return -EINVAL; }
It looks better, thanks for your suggestion.
By the way: Would you like to replace the following two statements by the statement “goto put_nbd;” in another update step for this function implementation? nbd_put(nbd); return 0;
Sure, I will do it.
Regards, Markus
Thanks, Sun Ke
.