> + > +/** > + * ufshcd_abort - abort a specific command > + * @cmd: SCSI command pointer > + * > + * Returns 0 on success, non-zero value on failure > + */ > +static int ufshcd_abort(struct scsi_cmnd *cmd) > +{ > + struct Scsi_Host *host; > + struct ufs_hba *hba; > + unsigned long flags; > + unsigned int tag; > + unsigned int pos; > + int err; > + > + host = cmd->device->host; > + hba = (struct ufs_hba *) host->hostdata; > + tag = cmd->request->tag; > + > + spin_lock_irqsave(host->host_lock, flags); > + pos = (1 << tag); > + > + /* check if command is still pending */ > + if (!(hba->outstanding_reqs & pos)) { > + err = -1; > + spin_unlock_irqrestore(host->host_lock, flags); > + goto out; > + } > + > + err = ufshcd_issue_tm_cmd(hba, &hba->lrb[tag], UFS_ABORT_TASK); Hi. You called spin_lock_irqsave in ufshcd_issue_tm_cmd() without spin_unlock_irqrestore. > + if (!err) { > + spin_lock_irqsave(host->host_lock, flags); This case is same also. Thanks. > + scsi_dma_unmap(cmd); > + > + /* clear the respective UTRLCLR bit */ > + writel(~pos, > + (UFSHCD_MMIO_BASE + > + REG_UTP_TRANSFER_REQ_LIST_CLEAR)); > + hba->outstanding_reqs &= ~pos; > + hba->lrb[tag].cmd = NULL; > + spin_unlock_irqrestore(host->host_lock, flags); > + } > +out: > + return err; > +} > + -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html