aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libiscsi.c
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2006-07-24 16:47:29 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-07-28 12:49:01 -0400
commit63f75cc8a7e6ce453e38a7b90cdcae83d63f1ea7 (patch)
treea85cfe4591f704ba163334c310ce824bff8fa9b5 /drivers/scsi/libiscsi.c
parent1c83469d36a9dd30dbf1fb9fc5ca3be3a0e64ff4 (diff)
[SCSI] iscsi bugfixes: fix oops when removing session
We are touching the cls_session after we have freed it. This causes a oops. Signed-off-by: Or Gerlitz <ogerlitz@voltaire.com> Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/libiscsi.c')
-rw-r--r--drivers/scsi/libiscsi.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 36f520b9260e..c989bc6180b3 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -1337,6 +1337,7 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)
1337{ 1337{
1338 struct Scsi_Host *shost = iscsi_session_to_shost(cls_session); 1338 struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
1339 struct iscsi_session *session = iscsi_hostdata(shost->hostdata); 1339 struct iscsi_session *session = iscsi_hostdata(shost->hostdata);
1340 struct module *owner = cls_session->transport->owner;
1340 1341
1341 scsi_remove_host(shost); 1342 scsi_remove_host(shost);
1342 1343
@@ -1345,7 +1346,7 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)
1345 1346
1346 iscsi_destroy_session(cls_session); 1347 iscsi_destroy_session(cls_session);
1347 scsi_host_put(shost); 1348 scsi_host_put(shost);
1348 module_put(cls_session->transport->owner); 1349 module_put(owner);
1349} 1350}
1350EXPORT_SYMBOL_GPL(iscsi_session_teardown); 1351EXPORT_SYMBOL_GPL(iscsi_session_teardown);
1351 1352