From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 183EA3F8886 for ; Tue, 21 Jul 2026 01:28:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784597301; cv=none; b=gKOuLa3Zam7D9jqAZ9E+vAD8wQ57DYljo1ivYWwA0CmmW3JaW7GM30+x8mv5QdBIeQwyGTqwe6OUX8j5KRBy19hj64C6zExI79qymV1pWgozsVfu0UAXhQA/OOuT4q0UKzNIiGTuMQVgkiDw3yjNWxM0RkLh61oLR1a7JXNn6C4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784597301; c=relaxed/simple; bh=EUGY5i/dYA2+eteSk52IQqcoZZrA4YbeUx2eqM2x/2s=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=W/V5ibnN1nfgwPfKGyDNfeJ4/jzxWEvBTYnUwpk/Lc1tysObK5y+gqVUgdwJntZa44XSmw3I06mZSXGqxdW1AX49KKGkjprvYuMmNYuYww4H0iiD85iFJUpqUEgp+s0Q9AOFRV3stY0WGrMlva7dYQ8K/cx80DDR8AE4444CiYU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=none smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.170]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4h409n65lRzKHN1C for ; Tue, 21 Jul 2026 09:27:25 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id 28A4C4056B for ; Tue, 21 Jul 2026 09:28:07 +0800 (CST) Received: from [10.166.163.161] (unknown [10.166.163.161]) by APP1 (Coremail) with UTF8SMTPA id cCh0CgAHGHQly15qPSLoBw--.32371S2; Tue, 21 Jul 2026 09:28:07 +0800 (CST) Message-ID: Date: Tue, 21 Jul 2026 09:28:05 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 3/4] irqchip/gic-v3-its: Fix leak in its_vpe_irq_domain_alloc() To: Marc Zyngier Cc: tglx@kernel.org, jason@lakedaemon.net, lpieralisi@kernel.org, radu@rendec.net, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20260720071215.50705-1-shikemeng@huaweicloud.com> <20260720071215.50705-4-shikemeng@huaweicloud.com> <86a4rmf3k7.wl-maz@kernel.org> From: Kemeng Shi In-Reply-To: <86a4rmf3k7.wl-maz@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CM-TRANSID:cCh0CgAHGHQly15qPSLoBw--.32371S2 X-Coremail-Antispam: 1UD129KBjvJXoW7CryUGF4kZF1DJr4UGFyrXrb_yoW8uFykpF Z8Xry2kr43Aa48Wrs8Cr18Ca43Jws7t3yUKayUCa45Wrn8AF92kF1Sk34YvFyktr1xAF13 Z3WFgF45uw4UCa7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUyGb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x 0267AKxVWxJr0_GcWle2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8C rVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4 IE7xkEbVWUJVW8JwACjcxG0xvEwIxGrwCY1x0262kKe7AKxVWUAVWUtwCF04k20xvY0x0E wIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E74 80Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0 I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04 k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7Cj xVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1veHDUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ 在 2026/7/20 16:50:00, Marc Zyngier 写道: > On Mon, 20 Jul 2026 08:12:14 +0100, > Kemeng Shi wrote: >> >> When its_irq_gic_domain_alloc() fails, the following >> its_vpe_irq_domain_free() skips calling its_vep_teardown() for the >> corresponding irq. Try its_vpe_teardown() in error handling to avoid >> the leak issue. >> >> Fixes: 7d75bbb4bc1ad ("irqchip/gic-v3-its: Add VPE irq domain allocation/teardown") >> Signed-off-by: Kemeng Shi >> --- >> drivers/irqchip/irq-gic-v3-its.c | 12 ++++++++---- >> 1 file changed, 8 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c >> index 3e4edcb64065..5dc91862fc15 100644 >> --- a/drivers/irqchip/irq-gic-v3-its.c >> +++ b/drivers/irqchip/irq-gic-v3-its.c >> @@ -4594,9 +4594,11 @@ static int its_vpe_init(struct its_vpe *vpe) >> >> static void its_vpe_teardown(struct its_vpe *vpe) >> { >> - its_vpe_db_proxy_unmap(vpe); >> - its_vpe_id_free(vpe->vpe_id); >> - its_free_pending_table(vpe->vpt_page); >> + if (vpe->vpt_page != NULL) { >> + its_vpe_db_proxy_unmap(vpe); >> + its_vpe_id_free(vpe->vpe_id); >> + its_free_pending_table(vpe->vpt_page); >> + } > > Please keep the diff minimal by doing an early return. This also > deserves a comment, because this is not completely obvious: Sure, I will do it in next version soon.> > diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c > index 6f5811aae59c1..38032067135b6 100644 > --- a/drivers/irqchip/irq-gic-v3-its.c > +++ b/drivers/irqchip/irq-gic-v3-its.c > @@ -4592,6 +4592,13 @@ static int its_vpe_init(struct its_vpe *vpe) > > static void its_vpe_teardown(struct its_vpe *vpe) > { > + /* > + * If vpt_page is NULL, then its_vpe_init() has failed, and > + * there is nothing to do as no resource has been allocated. > + */ > + if (!vpe->vpt_page) > + return; > + > its_vpe_db_proxy_unmap(vpe); > its_vpe_id_free(vpe->vpe_id); > its_free_pending_table(vpe->vpt_page); > > M. >