target/iscsi: Fix a race condition in iscsit_add_reject_from_cmd()
Avoid that cmd->se_cmd.se_tfo is read after a command has already been freed. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Mike Christie <mchristi@redhat.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
		
							parent
							
								
									e1dfb21f00
								
							
						
					
					
						commit
						cfe2b621bb
					
				| @ -833,6 +833,7 @@ static int iscsit_add_reject_from_cmd( | ||||
| 	unsigned char *buf) | ||||
| { | ||||
| 	struct iscsi_conn *conn; | ||||
| 	const bool do_put = cmd->se_cmd.se_tfo != NULL; | ||||
| 
 | ||||
| 	if (!cmd->conn) { | ||||
| 		pr_err("cmd->conn is NULL for ITT: 0x%08x\n", | ||||
| @ -863,7 +864,7 @@ static int iscsit_add_reject_from_cmd( | ||||
| 	 * Perform the kref_put now if se_cmd has already been setup by | ||||
| 	 * scsit_setup_scsi_cmd() | ||||
| 	 */ | ||||
| 	if (cmd->se_cmd.se_tfo != NULL) { | ||||
| 	if (do_put) { | ||||
| 		pr_debug("iscsi reject: calling target_put_sess_cmd >>>>>>\n"); | ||||
| 		target_put_sess_cmd(&cmd->se_cmd); | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user