diff options
author | Martin Peschke <mpeschke@linux.vnet.ibm.com> | 2012-09-04 15:23:36 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-13 05:28:09 +0900 |
commit | e4fdc6c38448878b53dff155020778df4de997d3 (patch) | |
tree | 0e5f354417d9adff37cd4006faa351932fd30ab2 /init/version.c | |
parent | 9745d6cb3feb21fd6d9098317a92f2f5c1371519 (diff) | |
download | kernel_samsung_smdk4412-e4fdc6c38448878b53dff155020778df4de997d3.zip kernel_samsung_smdk4412-e4fdc6c38448878b53dff155020778df4de997d3.tar.gz kernel_samsung_smdk4412-e4fdc6c38448878b53dff155020778df4de997d3.tar.bz2 |
SCSI: zfcp: only access zfcp_scsi_dev for valid scsi_device
commit d436de8ce25f53a8a880a931886821f632247943 upstream.
__scsi_remove_device (e.g. due to dev_loss_tmo) calls
zfcp_scsi_slave_destroy which in turn sends a close LUN FSF request to
the adapter. After 30 seconds without response,
zfcp_erp_timeout_handler kicks the ERP thread failing the close LUN
ERP action. zfcp_erp_wait in zfcp_erp_lun_shutdown_wait and thus
zfcp_scsi_slave_destroy returns and then scsi_device is no longer
valid. Sometime later the response to the close LUN FSF request may
finally come in. However, commit
b62a8d9b45b971a67a0f8413338c230e3117dff5
"[SCSI] zfcp: Use SCSI device data zfcp_scsi_dev instead of zfcp_unit"
introduced a number of attempts to unconditionally access struct
zfcp_scsi_dev through struct scsi_device causing a use-after-free.
This leads to an Oops due to kernel page fault in one of:
zfcp_fsf_abort_fcp_command_handler, zfcp_fsf_open_lun_handler,
zfcp_fsf_close_lun_handler, zfcp_fsf_req_trace,
zfcp_fsf_fcp_handler_common.
Move dereferencing of zfcp private data zfcp_scsi_dev allocated in
scsi_device via scsi_transport_reserve_device after the check for
potentially aborted FSF request and thus no longer valid scsi_device.
Only then assign sdev_to_zfcp(sdev) to the local auto variable struct
zfcp_scsi_dev *zfcp_sdev.
Signed-off-by: Martin Peschke <mpeschke@linux.vnet.ibm.com>
Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'init/version.c')
0 files changed, 0 insertions, 0 deletions