linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sergey Gorenko <sergeygo@mellanox.com>
To: bvanassche@acm.org
Cc: linux-rdma@vger.kernel.org, Sergey Gorenko <sergeygo@mellanox.com>
Subject: [PATCH] IB/srp: Never use immediate data if it is disabled by a user
Date: Wed, 15 Jan 2020 13:30:55 +0000	[thread overview]
Message-ID: <20200115133055.30232-1-sergeygo@mellanox.com> (raw)

Some SRP targets that do not support specification SRP-2, put
the garbage to the reserved bits of the SRP login response.
The problem was not detected for a long time because the SRP
initiator ignored those bits. But now one of them is used as
SRP_LOGIN_RSP_IMMED_SUPP. And it causes a critical error on
the target when the initiator sends immediate data.

The ib_srp module has a use_imm_date parameter to enable or
disable immediate data manually. But it does not help in the above
case, because use_imm_date is ignored at handling the SRP login
response. The problem is definitely caused by a bug on the target
side, but the initiator's behavior also does not look correct.
The initiator should not use immediate data if use_imm_date is
disabled by a user.

This commit adds an additional checking of use_imm_date at
the handling of SRP login response to avoid unexpected use of
immediate data.

Fixes: commit 882981f4a411 ("RDMA/srp: Add support for immediate data")
Signed-off-by: Sergey Gorenko <sergeygo@mellanox.com>
---
 drivers/infiniband/ulp/srp/ib_srp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index b7f7a5f7bd98..cd1181c39ed2 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -2546,7 +2546,8 @@ static void srp_cm_rep_handler(struct ib_cm_id *cm_id,
 	if (lrsp->opcode == SRP_LOGIN_RSP) {
 		ch->max_ti_iu_len = be32_to_cpu(lrsp->max_ti_iu_len);
 		ch->req_lim       = be32_to_cpu(lrsp->req_lim_delta);
-		ch->use_imm_data  = lrsp->rsp_flags & SRP_LOGIN_RSP_IMMED_SUPP;
+		ch->use_imm_data  = srp_use_imm_data &&
+			(lrsp->rsp_flags & SRP_LOGIN_RSP_IMMED_SUPP);
 		ch->max_it_iu_len = srp_max_it_iu_len(target->cmd_sg_cnt,
 						      ch->use_imm_data,
 						      target->max_it_iu_size);
-- 
2.21.0


             reply	other threads:[~2020-01-15 13:31 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-15 13:30 Sergey Gorenko [this message]
2020-01-15 16:08 ` [PATCH] IB/srp: Never use immediate data if it is disabled by a user Bart Van Assche
2020-01-15 20:38 ` Jason Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200115133055.30232-1-sergeygo@mellanox.com \
    --to=sergeygo@mellanox.com \
    --cc=bvanassche@acm.org \
    --cc=linux-rdma@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).