* [PATCH] scsi: hisi_sas: Fix NULL pointer dereference
@ 2018-10-18 16:41 Gustavo A. R. Silva
2018-10-18 16:44 ` Gustavo A. R. Silva
0 siblings, 1 reply; 2+ messages in thread
From: Gustavo A. R. Silva @ 2018-10-18 16:41 UTC (permalink / raw)
To: John Garry, James E.J. Bottomley, Martin K. Petersen, Xiang Chen
Cc: linux-scsi, linux-kernel, Gustavo A. R. Silva
There is a NULL pointer dereference in case *slot* happens to
be NULL at line 1878:
struct hisi_sas_cq *cq =
&hisi_hba->cq[slot->dlvry_queue];
Notice that *slot* is being NULL checked at line 1881: if (slot),
which implies it may be NULL.
Fix this by placing the declaration and definition of variable cq,
which contains the pointer dereference slot->dlvry_queue, after
*slot* has been properly NULL checked.
Addresses-Coverity-ID: 1474515 ("Dereference before null check")
Fixes: 584f53fe5f52 ("scsi: hisi_sas: Fix the race between IO completion and timeout for SMP/internal IO")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
drivers/scsi/hisi_sas/hisi_sas_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 2e5eaf1..e3f7c7b 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -1875,10 +1875,10 @@ hisi_sas_internal_task_abort(struct hisi_hba *hisi_hba,
if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
struct hisi_sas_slot *slot = task->lldd_task;
- struct hisi_sas_cq *cq =
- &hisi_hba->cq[slot->dlvry_queue];
if (slot) {
+ struct hisi_sas_cq *cq =
+ &hisi_hba->cq[slot->dlvry_queue];
/*
* flush tasklet to avoid free'ing task
* before using task in IO completion
--
2.7.4
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] scsi: hisi_sas: Fix NULL pointer dereference
2018-10-18 16:41 [PATCH] scsi: hisi_sas: Fix NULL pointer dereference Gustavo A. R. Silva
@ 2018-10-18 16:44 ` Gustavo A. R. Silva
0 siblings, 0 replies; 2+ messages in thread
From: Gustavo A. R. Silva @ 2018-10-18 16:44 UTC (permalink / raw)
To: John Garry, James E.J. Bottomley, Martin K. Petersen, Xiang Chen
Cc: linux-scsi, linux-kernel
Hi,
I just found another instance of this same issue at line 1053.
Please, drop this patch and I'll send v2 addressing both instances, shortly.
Thanks
--
Gustavo
On 10/18/18 6:41 PM, Gustavo A. R. Silva wrote:
> There is a NULL pointer dereference in case *slot* happens to
> be NULL at line 1878:
>
> struct hisi_sas_cq *cq =
> &hisi_hba->cq[slot->dlvry_queue];
>
> Notice that *slot* is being NULL checked at line 1881: if (slot),
> which implies it may be NULL.
>
> Fix this by placing the declaration and definition of variable cq,
> which contains the pointer dereference slot->dlvry_queue, after
> *slot* has been properly NULL checked.
>
> Addresses-Coverity-ID: 1474515 ("Dereference before null check")
> Fixes: 584f53fe5f52 ("scsi: hisi_sas: Fix the race between IO completion and timeout for SMP/internal IO")
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
> drivers/scsi/hisi_sas/hisi_sas_main.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
> index 2e5eaf1..e3f7c7b 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_main.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
> @@ -1875,10 +1875,10 @@ hisi_sas_internal_task_abort(struct hisi_hba *hisi_hba,
> if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
> if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
> struct hisi_sas_slot *slot = task->lldd_task;
> - struct hisi_sas_cq *cq =
> - &hisi_hba->cq[slot->dlvry_queue];
>
> if (slot) {
> + struct hisi_sas_cq *cq =
> + &hisi_hba->cq[slot->dlvry_queue];
> /*
> * flush tasklet to avoid free'ing task
> * before using task in IO completion
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-10-18 16:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-18 16:41 [PATCH] scsi: hisi_sas: Fix NULL pointer dereference Gustavo A. R. Silva
2018-10-18 16:44 ` Gustavo A. R. Silva
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.