From nobody Tue Dec 2 02:43:00 2025 Received: from mail.mainlining.org (mail.mainlining.org [5.75.144.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED27726A1AF; Tue, 18 Nov 2025 02:36:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=5.75.144.95 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763433423; cv=none; b=kgEBIK9lTH7pP/QWxJOtyIp6H4bi0PV45ATVhOMTPOS6GU78tX1+deYIbxPaLOTUPELJsAG3xlEzQNED958rKuMHH1FnU8veJ/9JFpVNLO0d7bBbU18w2OXaMmR0NEN5D6lnnhIDRQPQKhcKs9raIMhJu4fZhFbRITnIEn63ugw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763433423; c=relaxed/simple; bh=ujPW9yg87PcqhgrVlK+bXGSlNI3uLpBnuSRQV2ZuFjs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Nhs5qmwsUVGUXxH2g/fAlG2d9duljPeJx2etvj24JXO3Rctac1lHou+tnLHpvGB+UJuImn4YKGPy8MfwlsVKAlPrz53QJFYh3LlzYywYUo7cwCG6THVzhhCS9gMtz/wvAM0qSWlL/242YuHihJp5ECTA5DFoZj3SF5xxNrTb8uk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=mainlining.org; spf=pass smtp.mailfrom=mainlining.org; dkim=pass (2048-bit key) header.d=mainlining.org header.i=@mainlining.org header.b=aXNfm6i9; dkim=permerror (0-bit key) header.d=mainlining.org header.i=@mainlining.org header.b=yeQFfXUI; arc=none smtp.client-ip=5.75.144.95 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=mainlining.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mainlining.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mainlining.org header.i=@mainlining.org header.b="aXNfm6i9"; dkim=permerror (0-bit key) header.d=mainlining.org header.i=@mainlining.org header.b="yeQFfXUI" DKIM-Signature: v=1; a=rsa-sha256; s=202507r; d=mainlining.org; c=relaxed/relaxed; h=To:Message-Id:Subject:Date:From; t=1763433356; bh=sCKuHgHWUgcOfEQfIFqPn+9 wVr1eVaiBHZJNU2USNOE=; b=aXNfm6i9a+xNKVRDoAAAnNPv/z/RLlIaA2od6QUldPcFWr8u/d tteq5UDfGe7zsSMhN3QOzHamKKRsuMOZaB8Ppusw2l/ug7wqqrOfNG3/HBSJQY1zoVn/txBlF/x mUOWUSWhLpK8b9KcrdFZvz8cO/FkOPbyha7XZhQXOzpbeuLLe8YWzAH4nyKlzhCAvvUCOyd5jPi Wey7L0RWkUXs9r1tYu07IPKFqZvx1gmAjfZF4ql9MtuoURYrhF2JpncDy6TgvphmhEl+eGITcx8 3IAmT0fQbfdOfEpt5Tx3ACUvX/de+Rv+0yw1Oo++ltkuRr5r1UEiv9mhy+M6Tz5peig==; DKIM-Signature: v=1; a=ed25519-sha256; s=202507e; d=mainlining.org; c=relaxed/relaxed; h=To:Message-Id:Subject:Date:From; t=1763433356; bh=sCKuHgHWUgcOfEQfIFqPn+9 wVr1eVaiBHZJNU2USNOE=; b=yeQFfXUIHQmZiH13f2XPEaDPnjvXqwOKE2GcVOhfd8dvdoNreA Q0SRx0xG+ffvSuFVdXDHgQbkUDYzyuRu2+BQ==; From: Jens Reidel Date: Tue, 18 Nov 2025 03:35:25 +0100 Subject: [PATCH] nvmem: apple-spmi-nvmem: wrap regmap calls to satisfy CFI Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251118-apple-spmi-nvmem-cfi-v1-1-75b9ced0a2c2@mainlining.org> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/x3MTQqAIBBA4avErBtojH7oKtHCbKyBNFGQILp70 vJbvPdA4iicYKoeiJwlyeULqK7AHNrvjLIVg2pUR0Qj6hBOxhScoM+OHRor2DftYEivdiMFJQ2 Rrdz/dl7e9wMXpd1MZgAAAA== X-Change-ID: 20251118-apple-spmi-nvmem-cfi-6037c1abfd12 To: Sven Peter , Janne Grunau , Neal Gompa , Srinivas Kandagatla , Sasha Finkelstein , Hector Martin , Greg Kroah-Hartman Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jens Reidel , Clayton Craft , stable@vger.kernel.org X-Mailer: b4 0.14.2 The Apple SPMI NVMEM driver previously cast regmap_bulk_read/write to void * when assigning them to nvmem_config's reg_read/reg_write function pointers. This cast breaks the expected function signature of nvmem_reg_read_t and nvmem_reg_write_t. With CFI enabled, indirect calls through these pointers fail: CFI failure at nvmem_reg_write+0x194/0x1e4 (target: regmap_bulk_write+0x0= /0x2c8; expected type: 0x83a189c3) ... Call trace: nvmem_reg_write+0x194/0x1e4 (P) __nvmem_cell_entry_write+0x298/0x2e8 nvmem_cell_write+0x24/0x34 macsmc_reboot_probe+0x1dc/0x454 [macsmc_reboot] ... Introduce thin wrapper functions with the correct nvmem function pointer types to satisfy the CFI checks. Fixes: fe91c24a551c ("nvmem: Add apple-spmi-nvmem driver") Signed-off-by: Jens Reidel Reported-by: Clayton Craft Tested-by: Clayton Craft Cc: stable@vger.kernel.org Reviewed-by: Sven Peter --- drivers/nvmem/apple-spmi-nvmem.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/nvmem/apple-spmi-nvmem.c b/drivers/nvmem/apple-spmi-nv= mem.c index 88614005d5ce1dc2d1cafcb89ac66d8376ffcc96..7acb0c07d6abe9e9984908f5ea2= f4e2e9c10bb06 100644 --- a/drivers/nvmem/apple-spmi-nvmem.c +++ b/drivers/nvmem/apple-spmi-nvmem.c @@ -18,6 +18,22 @@ static const struct regmap_config apple_spmi_regmap_conf= ig =3D { .max_register =3D 0xffff, }; =20 +static int apple_spmi_nvmem_read(void *priv, unsigned int offset, void *va= l, + size_t bytes) +{ + struct regmap *map =3D priv; + + return regmap_bulk_read(map, offset, val, bytes); +} + +static int apple_spmi_nvmem_write(void *priv, unsigned int offset, void *v= al, + size_t bytes) +{ + struct regmap *map =3D priv; + + return regmap_bulk_write(map, offset, val, bytes); +} + static int apple_spmi_nvmem_probe(struct spmi_device *sdev) { struct regmap *regmap; @@ -28,8 +44,8 @@ static int apple_spmi_nvmem_probe(struct spmi_device *sde= v) .word_size =3D 1, .stride =3D 1, .size =3D 0xffff, - .reg_read =3D (void *)regmap_bulk_read, - .reg_write =3D (void *)regmap_bulk_write, + .reg_read =3D apple_spmi_nvmem_read, + .reg_write =3D apple_spmi_nvmem_write, }; =20 regmap =3D devm_regmap_init_spmi_ext(sdev, &apple_spmi_regmap_config); --- base-commit: 0c1c7a6a83feaf2cf182c52983ffe330ffb50280 change-id: 20251118-apple-spmi-nvmem-cfi-6037c1abfd12 Best regards, --=20 Jens Reidel