[{"id":3676661,"web_url":"http://patchwork.ozlabs.org/comment/3676661/","msgid":"<8424773e-84cd-25dc-6591-dd68292150fd@linux.intel.com>","date":"2026-04-13T11:24:23","subject":"Re: [PATCH v4 03/24] PCI/sysfs: Only allow supported resource types\n in I/O and MMIO helpers","submitter":{"id":83553,"url":"http://patchwork.ozlabs.org/api/people/83553/","name":"Ilpo Järvinen","email":"ilpo.jarvinen@linux.intel.com"},"content":"On Sat, 11 Apr 2026, Krzysztof Wilczyński wrote:\n\n> Currently, when the sysfs attributes for PCI resources are added\n> dynamically, the resource access callbacks are only set when the\n> underlying BAR type matches, using .read and .write for IORESOURCE_IO,\n> and .mmap for IORESOURCE_MEM or IORESOURCE_IO with arch_can_pci_mmap_io()\n> support.  As such, when the callback is not set, the operation inherently\n> fails.\n> \n> After the conversion to static attributes, visibility callbacks will\n> control which resource files appear for each BAR, but the callbacks\n> themselves will always be set.\n> \n> Thus, add a type check to pci_resource_io() and pci_mmap_resource()\n> to return -EIO for an unsupported resource type.\n> \n> Use the new pci_resource_is_io() and pci_resource_is_mem() helpers\n> for the type checks, replacing the open-coded bitwise flag tests and\n> also drop the local struct resource pointer in pci_mmap_resource().\n> \n> Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>\n> ---\n>  drivers/pci/pci-sysfs.c | 13 ++++++++++---\n>  1 file changed, 10 insertions(+), 3 deletions(-)\n> \n> diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c\n> index 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> \n\nReviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>","headers":{"Return-Path":"\n <linuxppc-dev+bounces-19680-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=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=QcHeJwuo;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-19680-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=none smtp.remote-ip=192.198.163.18","lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com","lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=QcHeJwuo;\n\tdkim-atps=neutral","lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=linux.intel.com\n (client-ip=192.198.163.18; helo=mgamail.intel.com;\n envelope-from=ilpo.jarvinen@linux.intel.com; receiver=lists.ozlabs.org)"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\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 4fvQ6b2J4sz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 21:24:39 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fvQ6Z5Mqwz2yjV;\n\tMon, 13 Apr 2026 21:24:38 +1000 (AEST)","from mgamail.intel.com (mgamail.intel.com [192.198.163.18])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4fvQ6X42n9z2yS9\n\tfor <linuxppc-dev@lists.ozlabs.org>; Mon, 13 Apr 2026 21:24:35 +1000 (AEST)","from fmviesa002.fm.intel.com ([10.60.135.142])\n  by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 13 Apr 2026 04:24:31 -0700","from ijarvine-mobl1.ger.corp.intel.com (HELO localhost)\n ([10.245.245.63])\n  by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 13 Apr 2026 04:24:25 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1776079478;\n\tcv=none;\n b=Fz40SNk4YcopmuLqYcqw52zwoscuhFgRxFVbpe2BU8aDbwm/Dcu9rVyBO5ubNRNPdJPyRo6UfAmXb41IooSqvbog13+ZPRvFIJIRQu/ZR6iFeMEEN2lh6e3ToCdi9CJ3taDAMbu3T4AB71IlEnBXmwTr+WEEHXsQqb5fuJs4Xv7JqneMsmJJoyYK3lfdABLcjSc64zLsJUhRg68IMdEOY6sw1SoOr25JiBJgVcl1GBtSumbu1Q7IIEUNHh5djlMIs/F4Ioupifs3UdbjMoT9NKcx7supRX+77gSq8HCmrZCA67SK0EgfeduMznytD2obc4TR50HI+PPBu4O4k2fKgQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1776079478; c=relaxed/relaxed;\n\tbh=YvAkN0RS3DwY2XgDuzhn5Q2jKfqwUUtLHM27/M5s7Pc=;\n\th=From:Date:To:cc:Subject:In-Reply-To:Message-ID:References:\n\t MIME-Version:Content-Type;\n b=LPUQDfyqovDGy7huYBTlbPLDvlEjKHxjNIU6jtKqAtVrbbS9tvackPznG3ssvM8lp47lfbwNbqNPwJyszFvral0TqSGBv1MCYMHD3MacbW8u0KPLIoEkmLmJ1AEX5mNNMFWa933OTIqFKiq3Jgqt78Cjx6sfpfwBfRHjFtWl8CJEnC+5Rek7tDBwIsu+KSMjZDtsFQTYPjeCPN3hhpDToRdOcA+Sf7g3CeIk7X5L9bv4c1f9CKyzNkI2bmhmgHZ5f4smpmd7cG4ix5SuaR5R7aWWPMOBklH4yeMohuDtmbiZ6+3bQ01qx0dgp/bgpybzqemJlKnAn0gn+twdoFTySw==","ARC-Authentication-Results":"i=1; lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linux.intel.com;\n dkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=QcHeJwuo; dkim-atps=neutral;\n spf=pass (client-ip=192.198.163.18; helo=mgamail.intel.com;\n envelope-from=ilpo.jarvinen@linux.intel.com;\n receiver=lists.ozlabs.org) smtp.mailfrom=linux.intel.com","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1776079477; x=1807615477;\n  h=from:date:to:cc:subject:in-reply-to:message-id:\n   references:mime-version;\n  bh=ANPSmnJ2+vAlYbN/js49nW9FDlFUvNpC6ZARORPHgV0=;\n  b=QcHeJwuo1F3PUONnLFRuEhCtY6dpxInSrGcnk4gmQ8QU1WIUNMDPpBU1\n   zmTfTTfHpRUjo3f1E/Xu9vQ4pSXTGd90AJqkRP7aaFB1jNuiy4JMHUmIB\n   Nv2TnScxQ2sJLaxEr6AJQIvd6stackjbMyn2+0j/a812ixtPquIZCwbJN\n   +W+lhs4mCfGVyvW7ESRyFCh9dMuRvTUAj6ZQFIP3XOVnP0BafkNzCEp8Z\n   D4I+PZVVssquV8Jika8jeDJiIDHnQQhAO0hqDbX17cO7S8p4iIqgb1QBy\n   5bnppswQconffcJRvo0Z5UWNSPF91xYjFOv6+hkw/c6rVFbcFYw4/zp9W\n   A==;","X-CSE-ConnectionGUID":["7iHTUpmES4GWChnzaa5tfw==","33yh9LIcQJ+TH04CgmlBIg=="],"X-CSE-MsgGUID":["pfMmp+FuTdyoxHj0gjIHaA==","TtU1KKBaSB6pirkxzyn3rw=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11757\"; a=\"76177574\"","E=Sophos;i=\"6.23,177,1770624000\";\n   d=\"scan'208\";a=\"76177574\"","E=Sophos;i=\"6.23,177,1770624000\";\n   d=\"scan'208\";a=\"252952094\""],"X-ExtLoop1":"1","From":"=?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>","Date":"Mon, 13 Apr 2026 14:24:23 +0300 (EEST)","To":"=?iso-8859-2?q?Krzysztof_Wilczy=F1ski?= <kwilczynski@kernel.org>","cc":"Bjorn Helgaas <bhelgaas@google.com>, 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 =?iso-8859-2?q?Krzysztof_Ha=B3asa?= <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>,\n  Srivatsa Bhat <srivatsabhat@microsoft.com>, linux-pci@vger.kernel.org,\n  linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org","Subject":"Re: [PATCH v4 03/24] PCI/sysfs: Only allow supported resource types\n in I/O and MMIO helpers","In-Reply-To":"<20260411080148.471335-4-kwilczynski@kernel.org>","Message-ID":"<8424773e-84cd-25dc-6591-dd68292150fd@linux.intel.com>","References":"<20260411080148.471335-1-kwilczynski@kernel.org>\n <20260411080148.471335-4-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":"multipart/mixed; boundary=\"8323328-22180800-1776079463=:962\"","X-Spam-Status":"No, score=-2.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,\n\tDKIM_VALID,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"}}]