|
|
e91cda |
From b8cc526501b02438713e6cf88c709c4a12d11507 Mon Sep 17 00:00:00 2001
|
|
|
e91cda |
From: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
e91cda |
Date: Tue, 9 Oct 2018 15:14:14 +0100
|
|
|
e91cda |
Subject: [PATCH 1/6] iser_rcv_completion: unify error handling
|
|
|
e91cda |
|
|
|
e91cda |
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
e91cda |
Message-id: <20181009151419.20418-2-pbonzini@redhat.com>
|
|
|
e91cda |
Patchwork-id: 82505
|
|
|
e91cda |
O-Subject: [RHEL8 libiscsi PATCH 1/6] iser_rcv_completion: unify error handling
|
|
|
e91cda |
Bugzilla: 1634541
|
|
|
e91cda |
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
|
|
e91cda |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
e91cda |
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
e91cda |
|
|
|
e91cda |
Move the iscsi_set_error to iser_post_recv, and avoid leaking the
|
|
|
e91cda |
input buffer "in".
|
|
|
e91cda |
|
|
|
e91cda |
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
e91cda |
(cherry picked from commit 346fb947cb46ee8afcf5b2205e40af4ce8d29a79)
|
|
|
e91cda |
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
|
e91cda |
---
|
|
|
e91cda |
lib/iser.c | 18 +++++++++---------
|
|
|
e91cda |
1 file changed, 9 insertions(+), 9 deletions(-)
|
|
|
e91cda |
|
|
|
e91cda |
diff --git a/lib/iser.c b/lib/iser.c
|
|
|
e91cda |
index aa7244c..4b314be 100644
|
|
|
e91cda |
--- a/lib/iser.c
|
|
|
e91cda |
+++ b/lib/iser.c
|
|
|
e91cda |
@@ -957,7 +957,7 @@ iser_post_recvm(struct iser_conn *iser_conn, int count)
|
|
|
e91cda |
iser_conn->post_recv_buf_count += count;
|
|
|
e91cda |
ret = ibv_post_recv(iser_conn->qp, iser_conn->rx_wr, &rx_wr_failed);
|
|
|
e91cda |
if (ret) {
|
|
|
e91cda |
- iscsi_set_error(iscsi, "ib_post_recv failed ret=%d", ret);
|
|
|
e91cda |
+ iscsi_set_error(iscsi, "posting %d rx bufs, ib_post_recv failed ret=%d", count, ret);
|
|
|
e91cda |
iser_conn->post_recv_buf_count -= count;
|
|
|
e91cda |
} else
|
|
|
e91cda |
iser_conn->rx_desc_head = my_rx_head;
|
|
|
e91cda |
@@ -1030,12 +1030,13 @@ iser_rcv_completion(struct iser_rx_desc *rx_desc,
|
|
|
e91cda |
if (iscsi->session_type == ISCSI_SESSION_NORMAL) {
|
|
|
e91cda |
if(iser_alloc_rx_descriptors(iser_conn,255)) {
|
|
|
e91cda |
iscsi_set_error(iscsi, "iser_alloc_rx_descriptors Failed\n");
|
|
|
e91cda |
- return -1;
|
|
|
e91cda |
+ err = -1;
|
|
|
e91cda |
+ goto error;
|
|
|
e91cda |
}
|
|
|
e91cda |
err = iser_post_recvm(iser_conn, ISER_MIN_POSTED_RX);
|
|
|
e91cda |
if (err) {
|
|
|
e91cda |
- iscsi_set_error(iscsi, "posting %d rx bufs err %d", count, err);
|
|
|
e91cda |
- return -1;
|
|
|
e91cda |
+ err = -1;
|
|
|
e91cda |
+ goto error;
|
|
|
e91cda |
}
|
|
|
e91cda |
}
|
|
|
e91cda |
in->hdr = (unsigned char*)rx_desc->iscsi_header;
|
|
|
e91cda |
@@ -1082,7 +1083,6 @@ iser_rcv_completion(struct iser_rx_desc *rx_desc,
|
|
|
e91cda |
ISCSI_LIST_ADD_END(&iser_conn->tx_desc, iser_pdu->desc);
|
|
|
e91cda |
|
|
|
e91cda |
nop_target:
|
|
|
e91cda |
-
|
|
|
e91cda |
/* decrementing conn->post_recv_buf_count only --after-- freeing the *
|
|
|
e91cda |
* task eliminates the need to worry on tasks which are completed in *
|
|
|
e91cda |
* parallel to the execution of iser_conn_term. So the code that waits *
|
|
|
e91cda |
@@ -1100,16 +1100,16 @@ nop_target:
|
|
|
e91cda |
count = iser_conn->qp_max_recv_dtos - outstanding;
|
|
|
e91cda |
err = iser_post_recvm(iser_conn, count);
|
|
|
e91cda |
if (err) {
|
|
|
e91cda |
- iscsi_set_error(iscsi, "posting %d rx bufs err %d", count, err);
|
|
|
e91cda |
- return -1;
|
|
|
e91cda |
+ err = -1;
|
|
|
e91cda |
+ goto error;
|
|
|
e91cda |
}
|
|
|
e91cda |
}
|
|
|
e91cda |
|
|
|
e91cda |
receive:
|
|
|
e91cda |
-
|
|
|
e91cda |
err = iscsi_process_pdu(iscsi, in);
|
|
|
e91cda |
- iscsi_free(iscsi, in);
|
|
|
e91cda |
|
|
|
e91cda |
+error:
|
|
|
e91cda |
+ iscsi_free(iscsi, in);
|
|
|
e91cda |
return err;
|
|
|
e91cda |
}
|
|
|
e91cda |
|
|
|
e91cda |
--
|
|
|
e91cda |
1.8.3.1
|
|
|
e91cda |
|