| From 2280521719e81919283b82902ac24058f87dfc1b Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= <davispuh@gmail.com> |
| Date: Fri, 21 Aug 2015 07:29:22 +0300 |
| Subject: mvsas: Fix NULL pointer dereference in mvs_slot_task_free |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= <davispuh@gmail.com> |
| |
| commit 2280521719e81919283b82902ac24058f87dfc1b upstream. |
| |
| When pci_pool_alloc fails in mvs_task_prep then task->lldd_task stays |
| NULL but it's later used in mvs_abort_task as slot which is passed |
| to mvs_slot_task_free causing NULL pointer dereference. |
| |
| Just return from mvs_slot_task_free when passed with NULL slot. |
| |
| Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=101891 |
| Signed-off-by: Dāvis Mosāns <davispuh@gmail.com> |
| Reviewed-by: Tomas Henzl <thenzl@redhat.com> |
| Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> |
| Signed-off-by: James Bottomley <JBottomley@Odin.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/scsi/mvsas/mv_sas.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/scsi/mvsas/mv_sas.c |
| +++ b/drivers/scsi/mvsas/mv_sas.c |
| @@ -887,6 +887,8 @@ static void mvs_slot_free(struct mvs_inf |
| static void mvs_slot_task_free(struct mvs_info *mvi, struct sas_task *task, |
| struct mvs_slot_info *slot, u32 slot_idx) |
| { |
| + if (!slot) |
| + return; |
| if (!slot->task) |
| return; |
| if (!sas_protocol_ata(task->task_proto)) |