summaryrefslogtreecommitdiff
path: root/Kbuild
diff options
context:
space:
mode:
authorLukasz Dorau <lukasz.dorau@intel.com>2013-04-03 10:27:17 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-16 21:48:28 -0700
commit978ddcd80a05229e14d8f078ee99bbf2d0f71867 (patch)
treed4d1d20f88071eba20f3e805aa15f44e9f11140d /Kbuild
parent16deae329e6b9a0a500d70c0cc4023c799b644d9 (diff)
downloadlwn-978ddcd80a05229e14d8f078ee99bbf2d0f71867.tar.gz
lwn-978ddcd80a05229e14d8f078ee99bbf2d0f71867.zip
SCSI: libsas: fix handling vacant phy in sas_set_ex_phy()
commit d4a2618fa77b5e58ec15342972bd3505a1c3f551 upstream. 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> Signed-off-by: James Bottomley <JBottomley@Parallels.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'Kbuild')
0 files changed, 0 insertions, 0 deletions