From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C54F13DB65A for ; Mon, 27 Jul 2026 08:06:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785139614; cv=none; b=U4XuHu2/XXWB8o+ofxZISc0pszTBQHxDv79g0NcVm8AhD/AY+11+8Vmxzg2XKgIT3s+3jRZZAPtDhlLnWEkx41Ch5qMpt//mp81YFJISpB0rDHCV7PgppcXeksyudUL57jjo3fXrHo1wSFj9CaqWBEGMu7TchGcMtlFSkNq/HAI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785139614; c=relaxed/simple; bh=EbnUXDEiH4aXd7svurft8q4vb7XSEmBoWUkT4ZL4rnE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=aAoy9aV4po/ER99mMO39mwI7s0TwXsdXV0nRpzp1TAIRT+N2v6dopfng6Xs3RCiyoFWsik0Wxzf28/ugej2Ak27mXprPljtBwWAHEAZ4KzztDv7hP3rC9Q2iyMEOCYWWWI8/lLM7fsCQkfrHwRwMaAn61+maZFo/jyniTgnZVgg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=k69UFn9t; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k69UFn9t" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-8486672f03cso2314124b3a.0 for ; Mon, 27 Jul 2026 01:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785139612; x=1785744412; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=wvZrTTp8XTspOh3eFR2KOmNstM1K6wskKfXxNBZ4/oE=; b=k69UFn9tSr0ZveQ3f/c5tFEAZVc1gqdsPxLCT56gVMETZHXpkzLmopYdOnivz3YHK5 tNkvs0tAWruVVsA1sDhRS9dinQStjsN/zQNfCMifTvGKYSu7b6VHuso0ik+tZOmNh80q de3WmGmGUxW7xwQWN+SbsKEPNWy5RMYNmNc6xuznQzoHSU6EfWzFW/OWnSrjWu9AiY6p ymLp2YhyBA0wsCyiHhUqlEMS/OC+1awuvZkAm5Pp6qqMhiUdwVG8ULMhkBupXZsJEv9Z tKzXmYfnpK12DuDBn/AfZGvgQgMs3eoH5J4SErOFjz3N4s1uSiiDngE3z5i3pJoz8kKc OiRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785139612; x=1785744412; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wvZrTTp8XTspOh3eFR2KOmNstM1K6wskKfXxNBZ4/oE=; b=epHnY8uw21jfE0YktMPe1x8W8dvQR3Phu/iv+FoDkoZz+v+zco7C2XowBv/BudBKl5 YAQG7y8gEeEnP0xMm60err3bNRhgdGgHYE2Fn3Vemn8E0xTMEbFiGQG6AVouRhW7rWzn 6+IlhH7BUZ89ou2jnk//dg9gTXvG5gLO8MOjBhzaN8DEm+XqhfeXttuob281QRuA6wiK zDHbbSVRa7JNXPGa5xgR9gvMmrSkkNUp5xI03xHUpCTeuJdg3GtrnieslXM48Fg3fhKV 7U0f/nCoOTmGvTlbHhDG89Iip3yw/lApxLJ0OAUrUh11ZRghrVZdDpFzodCndQD6hkZR UnWQ== X-Forwarded-Encrypted: i=1; AHgh+RoetKUbNaaGKosHroFNezWA/I1KjwJZ/NyUmf5bJbfeVYfV2+d1PUXfTkHhi3bUm5hWhWLIZROI9k3glas=@vger.kernel.org X-Gm-Message-State: AOJu0YzJsSXu+DpD+/pZddTsVPVSuv+p50kAFsMRxSN/7U4+JvCGOnow iFmN6UjljrRGMH7FGaQBT2OIArd5PmaxLQ4N6Hp4fvpcMlrbVoPbJTEYCMSexa+r X-Gm-Gg: AR+sD10CMNPueF/iiBhxWNt7+XHvhWpdk6A+PHEbbDV11495MfOKCFI28057m5NJs2n 1mj3rZ4mK2y9kd+b+BJaKbOhEhyM3sB4WECEpBGtwvOKKWnVycKTTXgiOXxtRFc+0Oq2A1mBrEn bE3/iGeXj0zqpTiSS8i2tT8wu0i6s//DD8pKuKQouZRWtkT27SWZt+Li0rOGBhzcwh3/3e/LNbS g7QqveW6qwKVll3EC4W/M3imMW2j4nz/TAyfUAsQDGgazBlaA6P+biwRCu/jhcwxX/Tx2e3oTVR +s47BcZScw6g6Z7BU3lR3HXmMnRNwoupEKes/G81A5Yrz2K11sS1flxvsh7b03Y6t3Dhci7HDdA AyJoQI2Yxgu769seYVERThJ4+1ezkYe+KstHnzFyM2TZTP12I4VvInkzozzAyqAn6n9nT/4BcdU 1ENmyuehpB6mV6BQ8c8NdKeg== X-Received: by 2002:a05:6a20:a11b:b0:3c6:61b9:917c with SMTP id adf61e73a8af0-3c67dae9646mr6747557637.11.1785139611907; Mon, 27 Jul 2026 01:06:51 -0700 (PDT) Received: from kernel ([103.219.206.53]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13d2eb01aa0sm40129390c88.3.2026.07.27.01.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jul 2026 01:06:51 -0700 (PDT) From: Mohamad Raizudeen To: bhelgaas@google.com Cc: robh@kernel.org, gregkh@linuxfoundation.org, skhan@linuxfoundation.org, jkoolstra@xs4all.nl, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Mohamad Raizudeen Subject: [PATCH] PCI: Fix unmasked value in pci_generic_config_write32() Date: Mon, 27 Jul 2026 13:36:43 +0530 Message-ID: <20260727080643.4949-1-raizudeen.kerneldev@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When writing less than 4 bytes, pci_generic_config_write32() uses a read-modify-write sequence to protect adjacent bytes. The code comment states the goal is to "merge in the bits we intend to write". However the code does not mask the incoming 'val' before shifting it. Since the function 'pci_generic_config_write32()' accepts a 'u32', a caller could pass a value with extra bits set outside the intended write size, those extra bits will shift into the adjacent bytes and corrupt them. Fix this my masking 'val' before the shift so only the target bytes are written. This makes the code do what the comment says and matches the read function, pci_generic_config_read32(). Fixes: 1f94a94f67e10 ("PCI: Add generic config accessors") Signed-off-by: Mohamad Raizudeen --- drivers/pci/access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/access.c b/drivers/pci/access.c index b123da16b63b..47b38d01694c 100644 --- a/drivers/pci/access.c +++ b/drivers/pci/access.c @@ -176,7 +176,7 @@ int pci_generic_config_write32(struct pci_bus *bus, unsigned int devfn, mask = ~(((1 << (size * 8)) - 1) << ((where & 0x3) * 8)); tmp = readl(addr) & mask; - tmp |= val << ((where & 0x3) * 8); + tmp |= (val & ((1 << (size * 8)) - 1)) << ((where & 0x3) * 8); writel(tmp, addr); return PCIBIOS_SUCCESSFUL; -- 2.53.0