Received: by 2002:a05:6358:e9c4:b0:b2:91dc:71ab with SMTP id hc4csp4685416rwb; Mon, 8 Aug 2022 05:34:45 -0700 (PDT) X-Google-Smtp-Source: AA6agR4yW2MXrlrRSt7QF+es2yiY/UwbpfaituP8/2fVcU/9V5uvoLahmK/M8nMu45bFYNE7CM1D X-Received: by 2002:a17:907:75d9:b0:730:990f:6d6d with SMTP id jl25-20020a17090775d900b00730990f6d6dmr13699689ejc.638.1659962084834; Mon, 08 Aug 2022 05:34:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659962084; cv=none; d=google.com; s=arc-20160816; b=sxc7UBwLUrW15+r2ZghqnGw3Ph9gmnZysj+ZBBuky8TlXpyVQ5Zf6eszNIlepu83Qr y4lMOTpI/AcsmrWE/TZgBcaBHkn5L1o7xm8LCPcuECaQRB8LPHIsz8l7eFw9lkZOgZ0h udySIEz+zLbmnN3wClgXzUkRVzTeN+H3kXqT0iUuLvHtWhUQMV0aPCbSHHpX9eO1iGTT DIZWBwt7z6lIfa99/eGp+Xi5LJLhB7pQDorwrzGDp96R/ngn6pDQFLb1bTqe9DiOOJfX MCBiF7tqkqjGK6a/ctCaPVZU8fYZ+X/83L5pgQTMlFDHIO3AOu/qQYHTU+JpYHoRE/yl 2LvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=pdNlbJbCgb2DuDUHJXANnJyDvJorMHg6Q6/6UkG1dPk=; b=aOrvRb16OkW8CsxP797FAyX1fAAqFLLx4H/ARo/2BCED35ZcZ5God3maof5+eh2NxA 9fMQs/lJggnFj3oYV4JQM7AyxMrqCp0PqSn4LPnomS9IZ6rT/fjsm3zcEiAuyL8tXrSx OmAI8VsG+OCQjNgx3mZqwwCUMixqiyzByn56YCSDbN0uC78kEkVVhruBjJxYZD5kJEIv /n4pbcY//ghfOQrXgDlN9YqMULPG1qalwZDUI1z8KV3uYfn8DYeceAtemBe74pf/v3Om uWonEJD+/zDk+fESn4ssLS3BqvJA9Dm96n6rCoK9b4gW5i2XpfAl4VV0QljUHTsD1mtf px6w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a63-20020a509ec5000000b00436c8577a9bsi6817574edf.464.2022.08.08.05.34.19; Mon, 08 Aug 2022 05:34:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242423AbiHHMFk (ORCPT + 99 others); Mon, 8 Aug 2022 08:05:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242339AbiHHMFg (ORCPT ); Mon, 8 Aug 2022 08:05:36 -0400 Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1B2A825E0 for ; Mon, 8 Aug 2022 05:05:30 -0700 (PDT) Received: from [10.20.42.22] (unknown [10.20.42.22]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9Dx3yMH_PBiVicKAA--.4044S3; Mon, 08 Aug 2022 20:05:28 +0800 (CST) Subject: Re: [PATCH] irqchip/loongarch: Fix irq_domain_alloc_fwnode() abuse To: Marc Zyngier , linux-kernel@vger.kernel.org Cc: chenhuacai@loongson.cn, Thomas Gleixner References: <20220808105020.2689757-1-maz@kernel.org> From: Jianmin Lv Message-ID: Date: Mon, 8 Aug 2022 20:05:27 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20220808105020.2689757-1-maz@kernel.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-CM-TRANSID: AQAAf9Dx3yMH_PBiVicKAA--.4044S3 X-Coremail-Antispam: 1UD129KBjvJXoWxZF4xGw43tryxuw4DGrW3Wrg_yoWrZw45pF W7Aa42vr45Ja4UWFnrGayUXry3Zw1Fg3y7KayrKa4a9r98G39IkF18A3ZrZFs7Ar47Wa1a 9F4Fq3WUu3Z8AFJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvE1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s1l1IIY67AE w4v_Jr0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2 IY67AKxVWUCVW8JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwA2z4x0Y4vEx4A2 jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq3wAS0I0E0xvYzxvE52 x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUJVWU GwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI48JM4 x0x7Aq67IIx4CEVc8vx2IErcIFxwCYjI0SjxkI62AI1cAE67vIY487MxkIecxEwVCm-wCF 04k20xvY0x0EwIxGrwCF04k20xvE74AGY7Cv6cx26ryrJr1UJwCFx2IqxVCFs4IE7xkEbV WUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF 67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42 IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6rW3Jr0E3s1l IxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVWUJVW8JbIYCTnIWI evJa73UjIFyTuYvjfUoOJ5UUUUU X-CM-SenderInfo: 5oymxthqpl0qxorr0wxvrqhubq/ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Marc Yes, I think that's right. Thanks for your patch to fix them. On 2022/8/8 下午6:50, Marc Zyngier wrote: > The recently merged LoongArch drivers paper over the lack of > topology information by creating a bunch of fwnodes for the > irqchips. So far, so good. > > However, irq_domain_alloc_fwnode() is supposed to take a PA, and > not a kernel VA blindly cast as a PA, potentially disclosing > kernel VAs to userspace. In some other cases, even NULL is used > as the PA, which is entertaining. > > Fix this by using the actual PA of the block when available, > and switch to a named fwnode in the other cases. > > Signed-off-by: Marc Zyngier > --- > drivers/irqchip/irq-loongarch-cpu.c | 2 +- > drivers/irqchip/irq-loongson-eiointc.c | 3 ++- > drivers/irqchip/irq-loongson-liointc.c | 2 +- > drivers/irqchip/irq-loongson-pch-msi.c | 2 +- > drivers/irqchip/irq-loongson-pch-pic.c | 2 +- > 5 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/irqchip/irq-loongarch-cpu.c b/drivers/irqchip/irq-loongarch-cpu.c > index 327f3ab62c03..741612ba6a52 100644 > --- a/drivers/irqchip/irq-loongarch-cpu.c > +++ b/drivers/irqchip/irq-loongarch-cpu.c > @@ -129,7 +129,7 @@ static int __init cpuintc_acpi_init(union acpi_subtable_headers *header, > clear_csr_ecfg(ECFG0_IM); > clear_csr_estat(ESTATF_IP); > > - cpuintc_handle = irq_domain_alloc_fwnode(NULL); > + cpuintc_handle = irq_domain_alloc_named_fwnode("CPUINTC"); > irq_domain = irq_domain_create_linear(cpuintc_handle, EXCCODE_INT_NUM, > &loongarch_cpu_intc_irq_domain_ops, NULL); > > diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c > index bffb7b3128e8..16e9af8d8b1e 100644 > --- a/drivers/irqchip/irq-loongson-eiointc.c > +++ b/drivers/irqchip/irq-loongson-eiointc.c > @@ -348,7 +348,8 @@ int __init eiointc_acpi_init(struct irq_domain *parent, > if (!priv) > return -ENOMEM; > > - priv->domain_handle = irq_domain_alloc_fwnode((phys_addr_t *)acpi_eiointc); > + priv->domain_handle = irq_domain_alloc_named_id_fwnode("EIOPIC", > + acpi_eiointc->node); > if (!priv->domain_handle) { > pr_err("Unable to allocate domain handle\n"); > goto out_free_priv; > diff --git a/drivers/irqchip/irq-loongson-liointc.c b/drivers/irqchip/irq-loongson-liointc.c > index c4f3c886ad61..acd1a4b897df 100644 > --- a/drivers/irqchip/irq-loongson-liointc.c > +++ b/drivers/irqchip/irq-loongson-liointc.c > @@ -360,7 +360,7 @@ int __init liointc_acpi_init(struct irq_domain *parent, struct acpi_madt_lio_pic > parent_irq[0] = irq_create_mapping(parent, acpi_liointc->cascade[0]); > parent_irq[1] = irq_create_mapping(parent, acpi_liointc->cascade[1]); > > - domain_handle = irq_domain_alloc_fwnode((phys_addr_t *)acpi_liointc); > + domain_handle = irq_domain_alloc_fwnode(&acpi_liointc->address); > if (!domain_handle) { > pr_err("Unable to allocate domain handle\n"); > return -ENOMEM; > diff --git a/drivers/irqchip/irq-loongson-pch-msi.c b/drivers/irqchip/irq-loongson-pch-msi.c > index d0e8551bebfa..a72ede90ffc6 100644 > --- a/drivers/irqchip/irq-loongson-pch-msi.c > +++ b/drivers/irqchip/irq-loongson-pch-msi.c > @@ -282,7 +282,7 @@ int __init pch_msi_acpi_init(struct irq_domain *parent, > int ret; > struct fwnode_handle *domain_handle; > > - domain_handle = irq_domain_alloc_fwnode((phys_addr_t *)acpi_pchmsi); > + domain_handle = irq_domain_alloc_fwnode(&acpi_pchmsi->msg_address); > ret = pch_msi_init(acpi_pchmsi->msg_address, acpi_pchmsi->start, > acpi_pchmsi->count, parent, domain_handle); > if (ret < 0) > diff --git a/drivers/irqchip/irq-loongson-pch-pic.c b/drivers/irqchip/irq-loongson-pch-pic.c > index b987b6517d59..c01b9c257005 100644 > --- a/drivers/irqchip/irq-loongson-pch-pic.c > +++ b/drivers/irqchip/irq-loongson-pch-pic.c > @@ -349,7 +349,7 @@ int __init pch_pic_acpi_init(struct irq_domain *parent, > > vec_base = acpi_pchpic->gsi_base - GSI_MIN_PCH_IRQ; > > - domain_handle = irq_domain_alloc_fwnode((phys_addr_t *)acpi_pchpic); > + domain_handle = irq_domain_alloc_fwnode(&acpi_pchpic->address); > if (!domain_handle) { > pr_err("Unable to allocate domain handle\n"); > return -ENOMEM; >