[PATCH] [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: Luben Tuikov <ltuikov@xxxxxxxxx> > --- > drivers/scsi/libsas/sas_expander.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/libsas/sas_expander.c > b/drivers/scsi/libsas/sas_expander.c > index 874e29d..f84084b 100644 > --- a/drivers/scsi/libsas/sas_expander.c > +++ b/drivers/scsi/libsas/sas_expander.c > @@ -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; > } > -- [Jack Wang] Looks reasonable, thanks for fix this. You can add my Reviewed-by: Jack Wang <jack_wang@xxxxxxxxx> if needed. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html