Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5911e963 authored by Luben Tuikov's avatar Luben Tuikov Committed by James Bottomley
Browse files

[SCSI] libsas: remove expander from dev list on error



If expander discovery fails (sas_discover_expander()), remove the
expander from the port device list (sas_ex_discover_expander()),
before freeing it. Else the list is corrupted and, e.g., when we
attempt to send SMP commands to other devices, the kernel oopses.

Signed-off-by: default avatarLuben Tuikov <ltuikov@yahoo.com>
Cc: stable@kernel.org
Reviewed-by: default avatarJack Wang <jack_wang@usish.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent e1703585
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -849,6 +849,9 @@ static struct domain_device *sas_ex_discover_expander(

	res = sas_discover_expander(child);
	if (res) {
		spin_lock_irq(&parent->port->dev_list_lock);
		list_del(&child->dev_list_node);
		spin_unlock_irq(&parent->port->dev_list_lock);
		kfree(child);
		return NULL;
	}