lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 21 Feb 2018 10:26:34 +0530 From: Asutosh Das <asutoshd@...eaurora.org> To: subhashj@...eaurora.org, cang@...eaurora.org, vivek.gautam@...eaurora.org, rnayak@...eaurora.org, vinholikatti@...il.com, jejb@...ux.vnet.ibm.com, martin.petersen@...cle.com Cc: linux-scsi@...r.kernel.org, Maya Erez <merez@...eaurora.org>, Asutosh Das <asutoshd@...eaurora.org>, linux-kernel@...r.kernel.org (open list) Subject: [PATCH 3/9] scsi: ufs: fix exception event handling From: Maya Erez <merez@...eaurora.org> The device can set the exception event bit in one of the response UPIU, for example to notify the need for urgent BKOPs operation. In such a case the host driver calls ufshcd_exception_event_handler to handle this notification. When trying to check the exception event status (for finding the cause for the exception event), the device may be busy with additional SCSI commands handling and may not respond within the 100ms timeout. To prevent that, we need to block SCSI commands during handling of exception events and allow retransmissions of the query requests, in case of timeout. Signed-off-by: Subhash Jadavani <subhashj@...eaurora.org> Signed-off-by: Maya Erez <merez@...eaurora.org> Signed-off-by: Can Guo <cang@...eaurora.org> Signed-off-by: Asutosh Das <asutoshd@...eaurora.org> --- drivers/scsi/ufs/ufshcd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index cc7eb1e..8d3f8ce 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4972,6 +4972,7 @@ static void ufshcd_exception_event_handler(struct work_struct *work) hba = container_of(work, struct ufs_hba, eeh_work); pm_runtime_get_sync(hba->dev); + scsi_block_requests(hba->host); err = ufshcd_get_ee_status(hba, &status); if (err) { dev_err(hba->dev, "%s: failed to get exception status %d\n", @@ -4985,6 +4986,7 @@ static void ufshcd_exception_event_handler(struct work_struct *work) ufshcd_bkops_exception_event_handler(hba); out: + scsi_unblock_requests(hba->host); pm_runtime_put_sync(hba->dev); return; } -- Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
Powered by blists - more mailing lists