From: Nicholas Bellinger <n...@linux-iscsi.org>

Cc: Vu Pham <v...@mellanox.com>
Cc: Sagi Grimberg <sa...@mellanox.com>
Signed-off-by: Nicholas Bellinger <n...@linux-iscsi.org>
---
 drivers/infiniband/ulp/srpt/ib_srpt.c | 23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c 
b/drivers/infiniband/ulp/srpt/ib_srpt.c
index bc5470c..5a35c1f 100644
--- a/drivers/infiniband/ulp/srpt/ib_srpt.c
+++ b/drivers/infiniband/ulp/srpt/ib_srpt.c
@@ -2387,7 +2387,6 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id,
        struct srp_login_rej *rej;
        struct ib_cm_rep_param *rep_param;
        struct srpt_rdma_ch *ch, *tmp_ch;
-       struct se_node_acl *se_acl;
        u32 it_iu_len;
        int i, ret = 0;
        unsigned char *p;
@@ -2553,19 +2552,12 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id,
        pr_debug("registering session %s\n", ch->sess_name);
        p = &ch->sess_name[0];
 
-       ch->sess = transport_init_session(TARGET_PROT_NORMAL);
-       if (IS_ERR(ch->sess)) {
-               rej->reason = cpu_to_be32(
-                               SRP_LOGIN_REJ_INSUFFICIENT_RESOURCES);
-               pr_debug("Failed to create session\n");
-               goto destroy_ib;
-       }
-
 try_again:
-       se_acl = core_tpg_get_initiator_node_acl(&sport->port_tpg_1, p);
-       if (!se_acl) {
+       ch->sess = target_alloc_session(&sport->port_tpg_1, 0, 0,
+                                       TARGET_PROT_NORMAL, p, ch, NULL);
+       if (IS_ERR(ch->sess)) {
                pr_info("Rejected login because no ACL has been"
-                       " configured yet for initiator %s.\n", ch->sess_name);
+                       " configured yet for initiator %s.\n", p);
                /*
                 * XXX: Hack to retry of ch->i_port_id without leading '0x'
                 */
@@ -2573,14 +2565,11 @@ try_again:
                        p += 2;
                        goto try_again;
                }
-               rej->reason = cpu_to_be32(
+               rej->reason = cpu_to_be32((PTR_ERR(ch->sess) == -ENOMEM) ?
+                               SRP_LOGIN_REJ_INSUFFICIENT_RESOURCES :
                                SRP_LOGIN_REJ_CHANNEL_LIMIT_REACHED);
-               transport_free_session(ch->sess);
                goto destroy_ib;
        }
-       ch->sess->se_node_acl = se_acl;
-
-       transport_register_session(&sport->port_tpg_1, se_acl, ch->sess, ch);
 
        pr_debug("Establish connection sess=%p name=%s cm_id=%p\n", ch->sess,
                 ch->sess_name, ch->cm_id);
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to