{"id":2222327,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2222327/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260411080148.471335-4-kwilczynski@kernel.org/","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/1.1/projects/2/?format=json","name":"Linux PPC development","link_name":"linuxppc-dev","list_id":"linuxppc-dev.lists.ozlabs.org","list_email":"linuxppc-dev@lists.ozlabs.org","web_url":"https://github.com/linuxppc/wiki/wiki","scm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git","webscm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/"},"msgid":"<20260411080148.471335-4-kwilczynski@kernel.org>","date":"2026-04-11T08:01:27","name":"[v4,03/24] PCI/sysfs: Only allow supported resource types in I/O and MMIO helpers","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"b9370f49211b59d4f1f6be9c80372823ce7e1104","submitter":{"id":86709,"url":"http://patchwork.ozlabs.org/api/1.1/people/86709/?format=json","name":"Krzysztof Wilczyński","email":"kwilczynski@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260411080148.471335-4-kwilczynski@kernel.org/mbox/","series":[{"id":499538,"url":"http://patchwork.ozlabs.org/api/1.1/series/499538/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=499538","date":"2026-04-11T08:01:24","name":"PCI: Convert all dynamic sysfs attributes to static","version":4,"mbox":"http://patchwork.ozlabs.org/series/499538/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2222327/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2222327/checks/","tags":{},"headers":{"Return-Path":"\n <linuxppc-dev+bounces-19623-incoming=patchwork.ozlabs.org@lists.ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=f0dNidQj;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=2404:9400:21b9:f100::1; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-19623-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2600:3c04:e001:324:0:1991:8:25\"","lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org","lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=f0dNidQj;\n\tdkim-atps=neutral","lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org\n (client-ip=2600:3c04:e001:324:0:1991:8:25; helo=tor.source.kernel.org;\n envelope-from=kwilczynski@kernel.org; receiver=lists.ozlabs.org)"],"Received":["from lists.ozlabs.org (lists.ozlabs.org\n [IPv6:2404:9400:21b9:f100::1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4ft5k46Dddz1yCx\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 18:02:20 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4ft5jq2r0cz2ytV;\n\tSat, 11 Apr 2026 18:02:07 +1000 (AEST)","from tor.source.kernel.org (tor.source.kernel.org\n [IPv6:2600:3c04:e001:324:0:1991:8:25])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4ft5jp3ksLz2ypW\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sat, 11 Apr 2026 18:02:06 +1000 (AEST)","from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby tor.source.kernel.org (Postfix) with ESMTP id 5E1C860145;\n\tSat, 11 Apr 2026 08:02:04 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id E1B4FC2BCAF;\n\tSat, 11 Apr 2026 08:02:00 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1775894527;\n\tcv=none;\n b=FKx9zPr7lX/tNsv/lkBVhSOVBuWI3JyMliQQCA4oPlZzxSoItP8tlv/VWzapUKTKTx6RvMWhVK87D1tIdjctvOS6OyO0Qdlebcd0Vkw37wlRCYX1hmEhELNjOyD7P044gkymfrXT2U+LeK8z1DS+vvDXxc0jGw1DLONsDRNDNQ9UTyRMTTj7ntX7H7lRz/12unDsxXTy91qljtf9c5MPe1V9wgm1P4tGpPvgsjxS2KLmKuxWKSgKgVR8tXIXxQl2PRB2/7t1PRwmikxEiyO1xQQY9tcSGn/CL4nUwdLw2umbdb8yyZWYXiHrPZkVMnjcTno+XU3cVNf1xbDpfcVbnw==","ARC-Message-Signature":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1775894527; c=relaxed/relaxed;\n\tbh=NdYwR9n+VwP0zMHvz0KdeCGbGqkgxQ7qttBog55x26g=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=ilct5tiNXfkGlFi/NsslJapgQhEy00rMxIiMdzYDC8SBUNUJuJ9K6aTe/3OswSbzeOd4qNwDTsa3jDYySF6v8x/P4aPgT/mPoZlUTehij7lCNKqB+RWUQAm6ME4NYaJWakDzYikeNVz9tU5JVPUX9+x4OGvCFh0GLUlb4ERQw9HK2WjNUB/6ts3mI/Wc7GZS+NcHxvHAns8J3NKoB6frHzAuuvgr3lmPfaRU58NZuVJq/4xkh9uNJmMBpCzFMqLDQJUZAPeTZXktJtX17ayRr4U8Xk6U86rfT3SUH64bgpzQi8rVQIiL4jGS2hUlWo+KdXXlKYqhWZSiJYD4HaLcfg==","ARC-Authentication-Results":"i=1; lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=f0dNidQj; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c04:e001:324:0:1991:8:25;\n helo=tor.source.kernel.org; envelope-from=kwilczynski@kernel.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=kernel.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775894524;\n\tbh=gvdpAvTWcmWTQ2Jvb4VCkVuJk3Ar+NokzIsq3HF2vFE=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=f0dNidQjV44Ue+vVjSEEnDjBkc8VTjDJSr8gWP4mgEne0S/0mHRvxG+2fvJNOfhvZ\n\t 17zqSgAj/9/8IGOyLsWO+8iTgzv7h8SXYYM4g4ooOK1h3j0pEkGaEOGMWcYb1RcEgo\n\t 321TfKyRs3FhrpvZfYpMb/bj/P63M/59GcLd7stTFG9jraLs2GPnYcx/hL5ZTV+fBU\n\t PW11SyYxDQGBKyq0NkQVGVQpgKnHYtwNWpRdSc1G/CWEn3IGQ4DCEWPAseyH9u2xA2\n\t OuZikA0WNSZDuh9+Qyftvu+6gVplPZSkCtlvX8bDIc1D41c5d07iaP20X+cIuYn5Eg\n\t Eoi5/mo7ROo7A==","From":"=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>","To":"Bjorn Helgaas <bhelgaas@google.com>","Cc":"Bjorn Helgaas <helgaas@kernel.org>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>,\n Magnus Lindholm <linmag7@gmail.com>, Matt Turner <mattst88@gmail.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Christophe Leroy <chleroy@kernel.org>,\n Madhavan Srinivasan <maddy@linux.ibm.com>,\n Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>,\n Dexuan Cui <decui@microsoft.com>,\n =?utf-8?q?Krzysztof_Ha=C5=82asa?= <khalasa@piap.pl>,\n Lukas Wunner <lukas@wunner.de>, \"Oliver O'Halloran\" <oohall@gmail.com>,\n Saurabh Singh Sengar <ssengar@microsoft.com>,\n Shuan He <heshuan@bytedance.com>, Srivatsa Bhat <srivatsabhat@microsoft.com>,\n\t=?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,\n linux-pci@vger.kernel.org, linux-alpha@vger.kernel.org,\n linuxppc-dev@lists.ozlabs.org","Subject":"[PATCH v4 03/24] PCI/sysfs: Only allow supported resource types in\n I/O and MMIO helpers","Date":"Sat, 11 Apr 2026 08:01:27 +0000","Message-ID":"<20260411080148.471335-4-kwilczynski@kernel.org>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260411080148.471335-1-kwilczynski@kernel.org>","References":"<20260411080148.471335-1-kwilczynski@kernel.org>","X-Mailing-List":"linuxppc-dev@lists.ozlabs.org","List-Id":"<linuxppc-dev.lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev+help@lists.ozlabs.org>","List-Owner":"<mailto:linuxppc-dev+owner@lists.ozlabs.org>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Archive":"<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Subscribe":"<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>","List-Unsubscribe":"<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>","Precedence":"list","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-Spam-Status":"No, score=-0.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,\n\tDKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS\n\tautolearn=disabled version=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"},"content":"Currently, when the sysfs attributes for PCI resources are added\ndynamically, the resource access callbacks are only set when the\nunderlying BAR type matches, using .read and .write for IORESOURCE_IO,\nand .mmap for IORESOURCE_MEM or IORESOURCE_IO with arch_can_pci_mmap_io()\nsupport.  As such, when the callback is not set, the operation inherently\nfails.\n\nAfter the conversion to static attributes, visibility callbacks will\ncontrol which resource files appear for each BAR, but the callbacks\nthemselves will always be set.\n\nThus, add a type check to pci_resource_io() and pci_mmap_resource()\nto return -EIO for an unsupported resource type.\n\nUse the new pci_resource_is_io() and pci_resource_is_mem() helpers\nfor the type checks, replacing the open-coded bitwise flag tests and\nalso drop the local struct resource pointer in pci_mmap_resource().\n\nSigned-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>\n---\n drivers/pci/pci-sysfs.c | 13 ++++++++++---\n 1 file changed, 10 insertions(+), 3 deletions(-)","diff":"diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c\nindex ad3c17f86c7f..6783c6168445 100644\n--- a/drivers/pci/pci-sysfs.c\n+++ b/drivers/pci/pci-sysfs.c\n@@ -1108,20 +1108,24 @@ static int pci_mmap_resource(struct kobject *kobj, const struct bin_attribute *a\n \tstruct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));\n \tint bar = (unsigned long)attr->private;\n \tenum pci_mmap_state mmap_type;\n-\tstruct resource *res = pci_resource_n(pdev, bar);\n \tint ret;\n \n \tret = security_locked_down(LOCKDOWN_PCI_ACCESS);\n \tif (ret)\n \t\treturn ret;\n \n-\tif (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start))\n+\tif (!pci_resource_is_mem(pdev, bar) &&\n+\t    !(pci_resource_is_io(pdev, bar) && arch_can_pci_mmap_io()))\n+\t\treturn -EIO;\n+\n+\tif (pci_resource_is_mem(pdev, bar) &&\n+\t    iomem_is_exclusive(pci_resource_start(pdev, bar)))\n \t\treturn -EINVAL;\n \n \tif (!pci_mmap_fits(pdev, bar, vma, PCI_MMAP_SYSFS))\n \t\treturn -EINVAL;\n \n-\tmmap_type = res->flags & IORESOURCE_MEM ? pci_mmap_mem : pci_mmap_io;\n+\tmmap_type = pci_resource_is_mem(pdev, bar) ? pci_mmap_mem : pci_mmap_io;\n \n \treturn pci_mmap_resource_range(pdev, bar, vma, mmap_type, write_combine);\n }\n@@ -1149,6 +1153,9 @@ static ssize_t pci_resource_io(struct file *filp, struct kobject *kobj,\n \tint bar = (unsigned long)attr->private;\n \tunsigned long port = off;\n \n+\tif (!pci_resource_is_io(pdev, bar))\n+\t\treturn -EIO;\n+\n \tport += pci_resource_start(pdev, bar);\n \n \tif (port > pci_resource_end(pdev, bar))\n","prefixes":["v4","03/24"]}