[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@yahoo.com> Cc: stable@kernel.org Reviewed-by: Jack Wang <jack_wang@usish.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
		
							parent
							
								
									e17035851a
								
							
						
					
					
						commit
						5911e963d3
					
				| @ -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; | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user