hi,Markus 在 2021/1/29 3:42, Markus Elfring 写道:
…+++ b/drivers/block/nbd.c @@ -2011,12 +2011,20 @@ 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); + mutex_unlock(&nbd->config_lock);Can an other function call order become relevant for the unlocking of these mutexes?
Do you think the nbd->config_lock mutex here is useless?
printk(KERN_ERR "nbd: device at index %d is going down\n", index);May such an error message be moved into the lock scope?
Sure.
return -EINVAL; } + if (!nbd->recv_workq) { + mutex_unlock(&nbd->config_lock); + mutex_unlock(&nbd_index_mutex); + return -EINVAL; + }How do you think about to connect the code from this if branch with a jump target like “unlock” so that such statements would be shareable for the desired exception handling?
OK, I will improve it in V2 patch.
+ mutex_unlock(&nbd->config_lock); mutex_unlock(&nbd_index_mutex); if (!refcount_inc_not_zero(&nbd->config_refs)) { nbd_put(nbd);Regards, Markus .