On Fri, Aug 15, 2025 at 02:04:57AM +0200, Andrew Lunn wrote: > > If it is more cleaner bellow? > > > > static int mucse_fw_send_cmd_wait(struct mucse_hw *hw, > > struct mbx_fw_cmd_req *req, > > struct mbx_fw_cmd_reply *reply) > > { > > int len = le16_to_cpu(req->datalen) + MBX_REQ_HDR_LEN; > > int retry_cnt = 3; > > int err; > > > > err = mutex_lock_interruptible(&hw->mbx.lock); > > if (err) > > return err; > > err = hw->mbx.ops->write_posted(hw, (u32 *)req, > > L_WD(len)); > > if (err) > > goto quit; > > do { > > err = hw->mbx.ops->read_posted(hw, (u32 *)reply, > > L_WD(sizeof(*reply))); > > if (err) > > goto quit; > > } while (--retry_cnt >= 0 && reply->opcode != req->opcode); > > > > mutex_unlock(&hw->mbx.lock); > > if (retry_cnt < 0) > > return -ETIMEDOUT; > > if (reply->error_code) > > return -EIO; > > return 0; > > quit: > > mutex_unlock(&hw->mbx.lock); > > return err; > > } > > You might want a read a few other drivers in mailine. Look at the > naming. I doubt you will find many using "quit" for a label. "out" or > "unlock" is more popular. > > When it comes to locks, it is better to have one lock statement and > one unlock statement. It then becomes easy to see all paths lead to > the unlock. > > Andrew > Got it, I will change label 'quit' to 'out'. And I will try to keep 'one lock statement and one unlock statement' principle in mind. Thanks for your feedback.