diff --git a/drivers/char/diag/diagfwd_mhi.c b/drivers/char/diag/diagfwd_mhi.c index 5af2f40e90af..404f265beb2a 100644 --- a/drivers/char/diag/diagfwd_mhi.c +++ b/drivers/char/diag/diagfwd_mhi.c @@ -521,8 +521,10 @@ static int mhi_write(int id, unsigned char *buf, int len, int ctxt) spin_lock_irqsave(&ch->lock, flags); err = mhi_buf_tbl_add(&diag_mhi[id], TYPE_MHI_WRITE_CH, buf, len); - if (err) + if (err) { + spin_unlock_irqrestore(&ch->lock, flags); goto fail; + } err = mhi_queue_transfer(diag_mhi[id].mhi_dev, DMA_TO_DEVICE, buf, len, mhi_flags);