Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp7147119ybi; Mon, 8 Jul 2019 15:35:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqw077B+WOjyCRHHcYAEEugjSD6tgqgiUEuyM2DGPY1fi6BXS926OKwOy2nxSvCiQP99Ex9Z X-Received: by 2002:a17:902:1125:: with SMTP id d34mr27839000pla.40.1562625312293; Mon, 08 Jul 2019 15:35:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562625312; cv=none; d=google.com; s=arc-20160816; b=uFFUsDR2f5V+Y7NN24RVQKWIFg8sD+JcuhEfVplww+9fA2sCgcPdUoa8Iz329Xqswd i3qN8IXwlPja7fdsA58lbgAoz9bKy8F2XVE1su8awM/yk+ySkV2GME96JFfKdM+lXc8C G3ERQ5EijoNOkh+sq9pJP7cMFoTM3V9SUV2+wwbDsAfXeLkP/zOZucux9X02Pw8CXbfc QpfVFLGhv8psLG7XHNwHPoOCn8+gSYRBkpm1OGCOMgdhr8vdMQgqKutcFBcxZZgPvI4S CCKJFWIiU2lQ9mvoDyvzUIWhwjAHiYbTbj4uIoPmpfrfIu4mfIG1KfW0LWCwO3SFhpoL uikA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=cTVIxDekqG6MJ2148emih4poB2fo/zSD3iJHt0EmkLA=; b=a85KT7Z1KVskMLoDkFFWZdhJU5p7g+F8uLa1VDFxY6GKBIYu+ZgvPDUVCA1nR10guN qBdOTTXC5GES9na1Jt9xkK1+ag8/wOl4xk/lm0PJLgrVj2So1hLGnrXKglWZF/bJPO0l nkig+t/V6MFvrXfyUCHkq8+kISrTOQoegFVrWg45G0i2SJxQlB310kgOAqxsoR5lbS2Q B/Fab9MBFGFu08T7fDgii5mv23pcghxVfmmz2Uir9j2jFVTs2H476SPvPsY23UxKxnk2 t5nFcF8bsNjYM6tc2ud1xmVf5YAIem+/ymUpcyjCTdi1LEY3H1yu1x/y0cwrGOgjIE9Z YYbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=hhSqsMqb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g11si19761082pgq.592.2019.07.08.15.34.57; Mon, 08 Jul 2019 15:35:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=hhSqsMqb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733077AbfGHPSj (ORCPT + 99 others); Mon, 8 Jul 2019 11:18:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:42436 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733069AbfGHPSg (ORCPT ); Mon, 8 Jul 2019 11:18:36 -0400 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 0DCD0216F4; Mon, 8 Jul 2019 15:18:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1562599115; bh=v714mcTwKX99GzSCD9GYd5HAmHyrZPlW1ZQaSAEQNhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hhSqsMqbQVy6blTxEsBXlRUgrZv3D9Ev+U+26S8Jz3yVn7y+NeoOvoY7aAb5trceG WQODFXuaoQXcpbynWy0tQtXDEJOsVHDDr0Sok6HKQnHeu0Ty3T6xgTMjatAKYCU4rj 8ffpn6zwNpQA2ZKnxut3ajkiKuYdpeg7ljhptuiA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kaike Wan , Mike Marciniszyn , Dennis Dalessandro , Jason Gunthorpe , Sasha Levin Subject: [PATCH 4.9 011/102] IB/rdmavt: Fix alloc_qpn() WARN_ON() Date: Mon, 8 Jul 2019 17:12:04 +0200 Message-Id: <20190708150526.650080202@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190708150525.973820964@linuxfoundation.org> References: <20190708150525.973820964@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 2abae62a26a265129b364d8c1ef3be55e2c01309 ] The qpn allocation logic has a WARN_ON() that intends to detect the use of an index that will introduce bits in the lower order bits of the QOS bits in the QPN. Unfortunately, it has the following bugs: - it misfires when wrapping QPN allocation for non-QOS - it doesn't correctly detect low order QOS bits (despite the comment) The WARN_ON() should not be applied to non-QOS (qos_shift == 1). Additionally, it SHOULD test the qpn bits per the table below: 2 data VLs: [qp7, qp6, qp5, qp4, qp3, qp2, qp1] ^ [ 0, 0, 0, 0, 0, 0, sc0], qp bit 1 always 0* 3-4 data VLs: [qp7, qp6, qp5, qp4, qp3, qp2, qp1] ^ [ 0, 0, 0, 0, 0, sc1, sc0], qp bits [21] always 0 5-8 data VLs: [qp7, qp6, qp5, qp4, qp3, qp2, qp1] ^ [ 0, 0, 0, 0, sc2, sc1, sc0] qp bits [321] always 0 Fix by qualifying the warning for qos_shift > 1 and producing the correct mask to insure the above bits are zero without generating a superfluous warning. Fixes: 501edc42446e ("IB/rdmavt: Correct warning during QPN allocation") Reviewed-by: Kaike Wan Signed-off-by: Mike Marciniszyn Signed-off-by: Dennis Dalessandro Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/sw/rdmavt/qp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c index 6500c3b5a89c..8b330b53d636 100644 --- a/drivers/infiniband/sw/rdmavt/qp.c +++ b/drivers/infiniband/sw/rdmavt/qp.c @@ -370,7 +370,8 @@ static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, offset = qpt->incr | ((offset & 1) ^ 1); } /* there can be no set bits in low-order QoS bits */ - WARN_ON(offset & (BIT(rdi->dparms.qos_shift) - 1)); + WARN_ON(rdi->dparms.qos_shift > 1 && + offset & ((BIT(rdi->dparms.qos_shift - 1) - 1) << 1)); qpn = mk_qpn(qpt, map, offset); } -- 2.20.1