diff options
Diffstat (limited to 'drivers/scsi/libiscsi.c')
| -rw-r--r-- | drivers/scsi/libiscsi.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index bd4605a34f54..f8dc1601efd5 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c @@ -1728,7 +1728,7 @@ int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc)  	if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx)) {  		reason = FAILURE_SESSION_IN_RECOVERY; -		sc->result = DID_REQUEUE; +		sc->result = DID_REQUEUE << 16;  		goto fault;  	} @@ -2851,9 +2851,6 @@ EXPORT_SYMBOL_GPL(iscsi_session_setup);  /**   * iscsi_session_teardown - destroy session, host, and cls_session   * @cls_session: iscsi session - * - * The driver must have called iscsi_remove_session before - * calling this.   */  void iscsi_session_teardown(struct iscsi_cls_session *cls_session)  { @@ -2863,6 +2860,8 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)  	iscsi_pool_free(&session->cmdpool); +	iscsi_remove_session(cls_session); +  	kfree(session->password);  	kfree(session->password_in);  	kfree(session->username); @@ -2877,7 +2876,8 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)  	kfree(session->portal_type);  	kfree(session->discovery_parent_type); -	iscsi_destroy_session(cls_session); +	iscsi_free_session(cls_session); +  	iscsi_host_dec_session_cnt(shost);  	module_put(owner);  } |