Lukasz Dorau d4a2618fa7 [SCSI] libsas: fix handling vacant phy in sas_set_ex_phy()
If a result of the SMP discover function is PHY VACANT,
the content of discover response structure (dr) is not valid.
It sometimes happens that dr->attached_sas_addr can contain
even SAS address of other phy. In such case an invalid phy
is created, what causes NULL pointer dereference during
destruction of expander's phys.

So if a result of SMP function is PHY VACANT, the content of discover
response structure (dr) must not be copied to phy structure.

This patch fixes the following bug:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
IP: [<ffffffff811c9002>] sysfs_find_dirent+0x12/0x90
Call Trace:
  [<ffffffff811c95f5>] sysfs_get_dirent+0x35/0x80
  [<ffffffff811cb55e>] sysfs_unmerge_group+0x1e/0xb0
  [<ffffffff813329f4>] dpm_sysfs_remove+0x24/0x90
  [<ffffffff8132b0f4>] device_del+0x44/0x1d0
  [<ffffffffa016fc59>] sas_rphy_delete+0x9/0x20 [scsi_transport_sas]
  [<ffffffffa01a16f6>] sas_destruct_devices+0xe6/0x110 [libsas]
  [<ffffffff8107ac7c>] process_one_work+0x16c/0x350
  [<ffffffff8107d84a>] worker_thread+0x17a/0x410
  [<ffffffff81081b76>] kthread+0x96/0xa0
  [<ffffffff81464944>] kernel_thread_helper+0x4/0x10

Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Reviewed-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-04-06 11:36:54 +01:00
..
2013-04-05 19:29:36 -07:00
2013-03-23 12:33:36 -07:00
2013-02-21 15:27:22 -08:00
2013-02-27 19:10:15 -08:00
2013-02-27 19:10:15 -08:00
2013-04-04 08:40:14 -07:00
2013-04-05 19:29:36 -07:00
2013-03-01 13:39:00 -08:00
2013-03-18 08:17:14 -07:00
2013-03-27 09:25:11 -07:00
2013-03-15 12:58:12 -07:00
2013-03-18 08:27:41 -07:00
2013-02-27 19:10:18 -08:00
2013-02-26 09:34:29 -08:00
2013-02-27 19:10:18 -08:00
2013-03-21 13:35:39 +01:00
2013-04-05 10:04:41 -07:00
2013-03-28 15:53:33 -07:00
2013-02-27 19:10:19 -08:00
2013-03-27 12:56:25 -07:00
2013-02-22 23:31:31 -05:00
2013-02-21 13:57:13 -08:00