From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5003FC33CB6 for ; Thu, 16 Jan 2020 23:19:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1F5DA2072B for ; Thu, 16 Jan 2020 23:19:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1579216775; bh=xJ7HMBt6RmkJWNrpRkyRTuCm89+Csy5Me7E0fd2bQbw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=t5TTlkWx4NM9SsXJ2gOij2Zu01LZIGhdMhO2WmPWZrIhuN5Z0FPbvdkaYuQH983Qm 05MrX/8QJJwJ93Ag9CZ60uxGPAXDWjuGbgwhOaR6AcK4j/KWSgpUSR6uPtpkEhZck/ 9NWGb7HF7ds/J2aXb7XLWC2aYJLyFBqOoadw5DGg= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390424AbgAPXTe (ORCPT ); Thu, 16 Jan 2020 18:19:34 -0500 Received: from mail.kernel.org ([198.145.29.99]:45422 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389269AbgAPXTd (ORCPT ); Thu, 16 Jan 2020 18:19:33 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 50FCB2075B; Thu, 16 Jan 2020 23:19:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1579216772; bh=xJ7HMBt6RmkJWNrpRkyRTuCm89+Csy5Me7E0fd2bQbw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IrMZSXV2WBC5epTh/cSvea0RDdswrACvSS0ozRSzYTRUvkqP+h87qMhXEJl9AcKi8 4tY4S9M6kOBUC2H2tpVuwPVlAIhFAdGG1GJHlIGBX3Ww5ytxqNTu+MYeDWsaFvOoW/ ZXf7LclMKOdsJJK072NTl7SQQGTOIPPLtLML2Mn4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Selvin Xavier , Jason Gunthorpe Subject: [PATCH 5.4 005/203] RDMA/bnxt_re: Fix Send Work Entry state check while polling completions Date: Fri, 17 Jan 2020 00:15:22 +0100 Message-Id: <20200116231745.547213451@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200116231745.218684830@linuxfoundation.org> References: <20200116231745.218684830@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Selvin Xavier commit c5275723580922e5f3264f96751337661a153c7d upstream. Some adapters need a fence Work Entry to handle retransmission. Currently the driver checks for this condition, only if the Send queue entry is signalled. Implement the condition check, irrespective of the signalled state of the Work queue entries Failure to add the fence can result in access to memory that is already marked as completed, triggering data corruption, transmission failure, IOMMU failures, etc. Fixes: 9152e0b722b2 ("RDMA/bnxt_re: HW workarounds for handling specific conditions") Link: https://lore.kernel.org/r/1574671174-5064-3-git-send-email-selvin.xavier@broadcom.com Signed-off-by: Selvin Xavier Signed-off-by: Jason Gunthorpe Signed-off-by: Greg Kroah-Hartman --- drivers/infiniband/hw/bnxt_re/qplib_fp.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/drivers/infiniband/hw/bnxt_re/qplib_fp.c +++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.c @@ -2283,13 +2283,13 @@ static int bnxt_qplib_cq_process_req(str /* Add qp to flush list of the CQ */ bnxt_qplib_add_flush_qp(qp); } else { + /* Before we complete, do WA 9060 */ + if (do_wa9060(qp, cq, cq_cons, sw_sq_cons, + cqe_sq_cons)) { + *lib_qp = qp; + goto out; + } if (swq->flags & SQ_SEND_FLAGS_SIGNAL_COMP) { - /* Before we complete, do WA 9060 */ - if (do_wa9060(qp, cq, cq_cons, sw_sq_cons, - cqe_sq_cons)) { - *lib_qp = qp; - goto out; - } cqe->status = CQ_REQ_STATUS_OK; cqe++; (*budget)--;