Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp2835917pxb; Mon, 1 Nov 2021 02:52:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxohIP5d99ISdf68CWnQc/Dk1IsNqitPwZ53Xl9va4+6zY06RQloBmDHXhSvGdAO9Wg54Cy X-Received: by 2002:a17:906:6ad0:: with SMTP id q16mr35268473ejs.552.1635760356321; Mon, 01 Nov 2021 02:52:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635760356; cv=none; d=google.com; s=arc-20160816; b=IPV313jyqpL69uHDvBGoGgYvZjOcH6qgk2VrFs6Wy0rWl85R0vHxGurQ6LB6KpoTiR WthOCVKuJ9WLcnEAEVQRTXDrM4xXRfis8nIP1SgNuPeF3wRwaWKIzeanA0bZzSWNbDIT d3VR1Wdfdt137NZ+wQPH9/cM4brviVKmGlcZ9O2IphQb7TYyoxbZ/EvF5vNnks1AxqdG ePdLFYAGNTSPNV2Nb34m68x50fHN5RvEz8ZDyeFhsxw1lTMs93TPRx74AO4NwXqjJ6ly h2h1GGw+HsxD3WKQemyVI7zsf2zLZkfCFiIUzv/X/Od6XeOMw6HJ6maChM94F/Uuovgs GPoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qdg0riUZ3QQzO9Lxhk/nVaGgLpTnL7aiS4J7wsEVB3Q=; b=hCGuIuKAkda4pIkI7T4I1kCKns2SzCDxJvw724+S66q2/YZr6ge7D4mwQHBqO0It38 Th7oofIMu8NV/o8qV6RkomVvsjrpTeuUY21aRmrr4GRLiTCkScQDcwhA7UnKhjTZzGgq nsWJENu59/ZiycE+cgS8Jy877BeXHsgw2d39qimfEs+JH4kG0gF+w4FGEA6KXD0JSGDb biAz4o0FnbAEhcdMZ5AAxIiOvFrrPR4lVTTepwjr1ZfYFwPqOAc0AR0Q467nM7dKgGWz 5/2hMqASDclVzuh2Qp5USSA28qP/g8y1mG/RDFcuK4qSA1b7Pf3YIg3m1Z5fHGXsKbxS WEqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=imUcxLwu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m9si28608766edd.567.2021.11.01.02.52.12; Mon, 01 Nov 2021 02:52:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=imUcxLwu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234677AbhKAJwm (ORCPT + 99 others); Mon, 1 Nov 2021 05:52:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:51602 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233714AbhKAJra (ORCPT ); Mon, 1 Nov 2021 05:47:30 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D8B1E61423; Mon, 1 Nov 2021 09:31:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1635759064; bh=dJq2wuvSxbnSANxJaqJmW5FZA21+1++vbfAzRrgpbGk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=imUcxLwuNAry/qXQ9V+TZGQij+PGeLnyoTkPWdvttn6GtZ4tGJNbZ+Bqf85FoWj0E nNkvI57zShOlUwuf9hOWyg/vkIWryjQhfkhfCWbwMWafAtBPz5J5pflBwY/Q2ALZd2 1em6N8U/Bh++Mfozxp91yUkWGOg6rq8PlCuOEQhM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mustafa Ismail , Shiraz Saleem , Jason Gunthorpe , Sasha Levin Subject: [PATCH 5.14 098/125] RDMA/irdma: Do not hold qos mutex twice on QP resume Date: Mon, 1 Nov 2021 10:17:51 +0100 Message-Id: <20211101082551.683748428@linuxfoundation.org> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211101082533.618411490@linuxfoundation.org> References: <20211101082533.618411490@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mustafa Ismail [ Upstream commit 2dace185caa580720c7cd67fec9efc5ee26108ac ] When irdma_ws_add fails, irdma_ws_remove is used to cleanup the leaf node. This lead to holding the qos mutex twice in the QP resume path. Fix this by avoiding the call to irdma_ws_remove and unwinding the error in irdma_ws_add. This skips the call to irdma_tc_in_use function which is not needed in the error unwind cases. Fixes: 3ae331c75128 ("RDMA/irdma: Add QoS definitions") Link: https://lore.kernel.org/r/20211019151654.1943-2-shiraz.saleem@intel.com Signed-off-by: Mustafa Ismail Signed-off-by: Shiraz Saleem Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/hw/irdma/ws.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/infiniband/hw/irdma/ws.c b/drivers/infiniband/hw/irdma/ws.c index b68c575eb78e..b0d6ee0739f5 100644 --- a/drivers/infiniband/hw/irdma/ws.c +++ b/drivers/infiniband/hw/irdma/ws.c @@ -330,8 +330,10 @@ enum irdma_status_code irdma_ws_add(struct irdma_sc_vsi *vsi, u8 user_pri) tc_node->enable = true; ret = irdma_ws_cqp_cmd(vsi, tc_node, IRDMA_OP_WS_MODIFY_NODE); - if (ret) + if (ret) { + vsi->unregister_qset(vsi, tc_node); goto reg_err; + } } ibdev_dbg(to_ibdev(vsi->dev), "WS: Using node %d which represents VSI %d TC %d\n", @@ -350,6 +352,10 @@ enum irdma_status_code irdma_ws_add(struct irdma_sc_vsi *vsi, u8 user_pri) } goto exit; +reg_err: + irdma_ws_cqp_cmd(vsi, tc_node, IRDMA_OP_WS_DELETE_NODE); + list_del(&tc_node->siblings); + irdma_free_node(vsi, tc_node); leaf_add_err: if (list_empty(&vsi_node->child_list_head)) { if (irdma_ws_cqp_cmd(vsi, vsi_node, IRDMA_OP_WS_DELETE_NODE)) @@ -369,11 +375,6 @@ vsi_add_err: exit: mutex_unlock(&vsi->dev->ws_mutex); return ret; - -reg_err: - mutex_unlock(&vsi->dev->ws_mutex); - irdma_ws_remove(vsi, user_pri); - return ret; } /** -- 2.33.0