| From b815fc12d4dd2b5586184fb4f867caff05a810d4 Mon Sep 17 00:00:00 2001 |
| From: Mike Christie <michaelc@cs.wisc.edu> |
| Date: Fri, 10 Apr 2015 02:47:27 -0500 |
| Subject: iscsi target: fix oops when adding reject pdu |
| |
| From: Mike Christie <michaelc@cs.wisc.edu> |
| |
| commit b815fc12d4dd2b5586184fb4f867caff05a810d4 upstream. |
| |
| This fixes a oops due to a double list add when adding a reject PDU for |
| iscsit_allocate_iovecs allocation failures. The cmd has already been |
| added to the conn_cmd_list in iscsit_setup_scsi_cmd, so this has us call |
| iscsit_reject_cmd. |
| |
| Note that for ERL0 the reject PDU is not actually sent, so this patch |
| is not completely tested. Just verified we do not oops. The problem is the |
| add reject functions return -1 which is returned all the way up to |
| iscsi_target_rx_thread which for ERL0 will drop the connection. |
| |
| Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> |
| Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/target/iscsi/iscsi_target.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/target/iscsi/iscsi_target.c |
| +++ b/drivers/target/iscsi/iscsi_target.c |
| @@ -1179,7 +1179,7 @@ iscsit_handle_scsi_cmd(struct iscsi_conn |
| * traditional iSCSI block I/O. |
| */ |
| if (iscsit_allocate_iovecs(cmd) < 0) { |
| - return iscsit_add_reject_cmd(cmd, |
| + return iscsit_reject_cmd(cmd, |
| ISCSI_REASON_BOOKMARK_NO_RESOURCES, buf); |
| } |
| immed_data = cmd->immediate_data; |