From patchwork Mon Oct 7 12:39:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea della Porta X-Patchwork-Id: 13824642 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4AACFCFB440 for ; Mon, 7 Oct 2024 13:01:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=JVy087ignhx8Qr39VRDg6uatjxWZzzMpiZVqjT/QJ18=; b=ffsLqQ/DwllSUZ2rU+B/V8klA8 XEG72+8QvE5UN9hL67nW88OY3pzp0/zD9cHaj4h6lMeNrXhVfkYRbK9qL4iObF626u4Nc3Ih6fBfv S6B8pWUS/sGGLich3kvycE5D/vC7AhQ07nodKT1kgtDsAGH+sWQ+6E8Hjs/w+SkgzDBzjxT3gNW0k zBuXU56nzknUV2K7IkhaHsc60qBpTzkVe3ij7MsybQUXacaOTyNHKH4wRLmfgi5t/YyrhR682S48y AfZWW576vNlCrzET/xHd/2AAfOQ5VmFYhrMLk2JFUFSxyE2LdgIJlOL5Keqf6yxr2E33CJMEbYYe3 5dVJeQtQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sxnMq-00000002Qn3-3AHS; Mon, 07 Oct 2024 13:01:40 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sxn1q-00000002McJ-0kI2 for linux-arm-kernel@bombadil.infradead.org; Mon, 07 Oct 2024 12:39:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:To:From:Sender:Reply-To:Cc: Content-Type:Content-ID:Content-Description; bh=JVy087ignhx8Qr39VRDg6uatjxWZzzMpiZVqjT/QJ18=; b=SHURIC1g7x1A7LpSKGMpwEcKvb otGPOgGnZ79LN9tvG/IYGhInyVr8Eaynx9h2NogCdzN1A3tszbTo0BDdjlExOLhFq9L6mT0oH8TOb bpw6TvaqShEmaKMo8Y9ZNIIbfxZzGRx+Xn88hiqyeF5oO9QVnwzlIU2xsY+ZZ76jFE5X75+4J7yKq vLaJRe6TQIKrKsxe00+YXotvD/N4fyIgf5xSNLIKXslj4MluZGT7Gp7AaEpShb/Tji1hA1Z7XpYw4 4cOt4dsJ0/mEb3tdiX5S+LlqqKM+GAdZmjPnDzDM19y9kunkdYhvhj727R3cvIy6Ji5xs2wvbzayV imBm5uWg==; Received: from mail-ej1-x641.google.com ([2a00:1450:4864:20::641]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sxn1m-00000004PyX-0rll for linux-arm-kernel@lists.infradead.org; Mon, 07 Oct 2024 12:39:56 +0000 Received: by mail-ej1-x641.google.com with SMTP id a640c23a62f3a-a86e9db75b9so672177066b.1 for ; Mon, 07 Oct 2024 05:39:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1728304791; x=1728909591; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JVy087ignhx8Qr39VRDg6uatjxWZzzMpiZVqjT/QJ18=; b=BTBC4Yy7vrlEGktH8bmDLumhMJp5/AIr/QfyiS30w0yNounen8tIv26o1s9ndRbjZY Kv9gd9ngx+J1BxiEjTbTfhZ2EXprhqh5cZt51oErWsePzDHIBd7J6rC6aKrtlleNRv5n eiXHj1wadtzUcrOshHQ4HqObeG9ad1Gyd3scgWzYiWX2k7v//TnU/IeGe9lTOscuyl7Y 5Fz9w8kqzitLUq97L50iFXyXX51XhV5GN4kz3Q62wS26agAn8fXXhW9+tGQhRwmj6zZ5 mf+0fXNbuzSNeYqALjDltgIEu4by7NRKInsVZcMCeakoinQroh73V336pZYc7hjZA0fE uSJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728304791; x=1728909591; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JVy087ignhx8Qr39VRDg6uatjxWZzzMpiZVqjT/QJ18=; b=rKwj+WvF0nLYoOYRdf6u+KZCClIhhs5Esz2o1vCEhZm11UHVbWCBThSy4qvMzga+hX jwUel8XJVYdU9P/i+BluS0lMAzdsSURJz1RE8hofb2pltPYoU8d0Nq4ZF+whbo845sOR AGXLUw5s6h6CQS3NO2jCJqzuQ6IDq+iDtI55NtseRU3dBuO8w6kkXuKDtV5glHu8Lwe2 gwwfF90fTh5WC//BcEfbdlfW+ZBSXi6i9/n6MbTLSTomUnS5HduUzDxEsOSGOQFxExjt YnUqsqj4ogkibPfMXDQGOCopHjBMXyrwRiS7m3m1zOMruylMfcNmV/QMeEGJWZi6R1Ns rSkQ== X-Forwarded-Encrypted: i=1; AJvYcCWlMLqWCSlD2Xoe5Ek1F7d6IGdjR+fbUylPDboRp4rJyvHeQKFhH3OqYvM4hCKILCjkQVrkJZJbO2ZszQ8+bVHL@lists.infradead.org X-Gm-Message-State: AOJu0Yy4BqGG/RA+WWe5t9lX9awY8Ds5NWDwfquPOm1GGLfBUE5U/kLL S/fLVzGyi5oraqa7D6l4OoLdhzx5bP40Po9+NcejzDqeYU4Y5N6Wn2oSZksoOag= X-Google-Smtp-Source: AGHT+IEy5GKg/nXhQMQUn4foWYz0mYMSu2W3P06/cB1glnoAkN+XlhE1TotI+oUpl1LOtWN5zL42ZQ== X-Received: by 2002:a17:907:60cc:b0:a99:5b7f:9e3b with SMTP id a640c23a62f3a-a995b7f9e4dmr208232466b.33.1728304790890; Mon, 07 Oct 2024 05:39:50 -0700 (PDT) Received: from localhost (host-87-21-212-62.retail.telecomitalia.it. [87.21.212.62]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a994787fa61sm239841166b.169.2024.10.07.05.39.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2024 05:39:50 -0700 (PDT) From: Andrea della Porta To: Andrea della Porta , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Broadcom internal kernel review list , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84?= =?utf-8?q?ski?= , Manivannan Sadhasivam , Bjorn Helgaas , Linus Walleij , Catalin Marinas , Will Deacon , Bartosz Golaszewski , Derek Kiernan , Dragan Cvetic , Arnd Bergmann , Greg Kroah-Hartman , Saravana Kannan , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-gpio@vger.kernel.org, Masahiro Yamada , Stefan Wahren , Herve Codina , Luca Ceresoli , Thomas Petazzoni , Andrew Lunn Subject: [PATCH v2 05/14] PCI: of_property: Sanitize 32 bit PCI address parsed from DT Date: Mon, 7 Oct 2024 14:39:48 +0200 Message-ID: X-Mailer: git-send-email 2.44.0 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241007_133954_436025_125D28F7 X-CRM114-Status: GOOD ( 17.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The of_pci_set_address() function parses devicetree PCI range specifier assuming the address is 'sanitized' at the origin, i.e. without checking whether the incoming address is 32 or 64 bit has specified in the flags. In this way an address with no OF_PCI_ADDR_SPACE_MEM64 set in the flags could leak through and the upper 32 bits of the address will be set too, and this violates the PCI specs stating that in 32 bit address the upper bits should be zero. This could cause mapping translation mismatch on PCI devices (e.g. RP1) that are expected to be addressed with a 64 bit address while advertising a 32 bit address in the PCI config region. Add a check in of_pci_set_address() to set upper 32 bits to zero in case the address has no 64 bit flag set. Signed-off-by: Andrea della Porta --- This patch has not been changed from the first version, discussion is still ongoing here: https://lore.kernel.org/all/ZwJyk9XouLfd24VG@apocalypse/#t drivers/pci/of_property.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/pci/of_property.c b/drivers/pci/of_property.c index 5a0b98e69795..77865facdb4a 100644 --- a/drivers/pci/of_property.c +++ b/drivers/pci/of_property.c @@ -60,7 +60,10 @@ static void of_pci_set_address(struct pci_dev *pdev, u32 *prop, u64 addr, prop[0] |= flags | reg_num; if (!reloc) { prop[0] |= OF_PCI_ADDR_FIELD_NONRELOC; - prop[1] = upper_32_bits(addr); + if (FIELD_GET(OF_PCI_ADDR_FIELD_SS, flags) == OF_PCI_ADDR_SPACE_MEM64) + prop[1] = upper_32_bits(addr); + else + prop[1] = 0; prop[2] = lower_32_bits(addr); } }