Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp299365pxu; Thu, 15 Oct 2020 04:25:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynqZUq+uNtsW3hxR8fHhSwiSPWgmz+l3NPxQC56UQ/htgI5ldCWvsTa/qj3FmtVx0pK7Z+ X-Received: by 2002:aa7:c451:: with SMTP id n17mr3710955edr.266.1602761128631; Thu, 15 Oct 2020 04:25:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602761128; cv=none; d=google.com; s=arc-20160816; b=FwMzeQkjEM9KmS47XqgeICiZmsAj1QO5i1V2E8a19WpmNO3OOmZ58uOFQPs5INEzdz +ePCmd8Y7d48CORZozrpn2lsDLsLRMe12+4ncjRaVw5O5RCqnNyneuffGQ3jHD2cRkxG cbi+PqvVCJmMe3ZfMEGVyDEo07FsfW3GPvCa/+c6lddNXeWTymLqPAxVB0LlwGxdnWa1 RPceHQdWcZlnQNH1UIpLqDw0llnpu2wg+ec/uvad4zR+SxaUxll6OnRj7nbZhWOtST44 4SpB4TXcKPbD3dzXr7pSr7V2jQb5d4w+1CTt9ZIXfZ7T+e1Rm31Lp5nSVNDU+EoxeUuX F+cQ== 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 :message-id:date:subject:cc:to:from; bh=hMioHES/QGDQE9K8Pt48PWImL6KuumEG2/z5eWgTPyk=; b=r16gfv1eGFX8pUeWwOdipmgVwHUD01uxjAEts3Zf5wKpnB4wDh2lKBXUbGNo0LzMeE rb+5UgTCrmJPoBvCvWTAogt5Dssd39oi6SBpNV8DxuYGwww90cv8JtssE2SZA3jBs+jY fMMXjnJx5LRosXlbMwwgF2ncNAl1n/FLP8+gMN5IlAJj07vVhvPlpLoYF6k/IoJZvift daxgRQVoik/Kq3O6C852zkqEQwDp0eSE9MVthauhk0bD7oGaC9Dg/Y8cOZAnwih9ZGOX Yp7kGJhYlx1pj0PwGbCv3IGEGfTBFPVAtxqmXLadS9LtONRh1yqFcz/JloYGPzNtVYbZ 22ug== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p2si1836520edj.119.2020.10.15.04.25.06; Thu, 15 Oct 2020 04:25:28 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730027AbgJOIef (ORCPT + 99 others); Thu, 15 Oct 2020 04:34:35 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:51730 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727121AbgJOIef (ORCPT ); Thu, 15 Oct 2020 04:34:35 -0400 Received: from DGGEMS404-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 1F345C84C72CB9363808; Thu, 15 Oct 2020 16:34:29 +0800 (CST) Received: from localhost.localdomain.localdomain (10.175.113.25) by DGGEMS404-HUB.china.huawei.com (10.3.19.204) with Microsoft SMTP Server id 14.3.487.0; Thu, 15 Oct 2020 16:34:22 +0800 From: Jing Xiangfeng To: , , , , , CC: , , Subject: [PATCH v3] thunderbolt: Add the missed ida_simple_remove() in ring_request_msix() Date: Thu, 15 Oct 2020 16:40:53 +0800 Message-ID: <20201015084053.56158-1-jingxiangfeng@huawei.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.113.25] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ring_request_msix() misses to call ida_simple_remove() in an error path. Add a label 'err_ida_remove' and jump to it. Fixes: 046bee1f9ab8 ("thunderbolt: Add MSI-X support") Signed-off-by: Jing Xiangfeng --- drivers/thunderbolt/nhi.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c index 5f7489fa1327..a331e52789e3 100644 --- a/drivers/thunderbolt/nhi.c +++ b/drivers/thunderbolt/nhi.c @@ -405,12 +405,23 @@ static int ring_request_msix(struct tb_ring *ring, bool no_suspend) ring->vector = ret; - ring->irq = pci_irq_vector(ring->nhi->pdev, ring->vector); - if (ring->irq < 0) - return ring->irq; + ret = pci_irq_vector(ring->nhi->pdev, ring->vector); + if (ret < 0) + goto err_ida_remove; + + ring->irq = ret; irqflags = no_suspend ? IRQF_NO_SUSPEND : 0; - return request_irq(ring->irq, ring_msix, irqflags, "thunderbolt", ring); + ret = request_irq(ring->irq, ring_msix, irqflags, "thunderbolt", ring); + if (ret) + goto err_ida_remove; + + return 0; + +err_ida_remove: + ida_simple_remove(&nhi->msix_ida, ring->vector); + + return ret; } static void ring_release_msix(struct tb_ring *ring) -- 2.17.1