From nobody Sat Feb 7 19:41:38 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (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 73D0E2E0904 for ; Thu, 30 Oct 2025 11:37:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761824261; cv=none; b=FUeyU/BzBm6LNlnwgdU/H2+0epfa1WW5n7XALG+ig3+4p/fgmwEymqxODgp5+T67Fd0xEtKNQEz0IzcJ1N8sCxagXWSFNg+xITbvRB95GMD8UVOPhLclzfQvVtJjBNEJfC/ElDT+Nq8W0kusZ17HJRojakwoPZ95bERDpyOurWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761824261; c=relaxed/simple; bh=kjwK4SC2pidEH56wn9wr/J1HVaOm57Hnqtb2qsiBqko=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uWAheQY0ClvclBMzJbgeBbEwgKb8tBbB4FlapIjiY4mDvWAejPkJO28Hd5hUvc9pxF5XC1/KSdPo5AkXJWV8ZFSOkDmlOATDSk3nnocEUFuMf3Krg4OZfW9v6x8m6Lz9F823oFTUHYvnT2Xq5amPYX+Wh4K1vsZ71F47DgIPM+Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=efjjS2Ig; arc=none smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="efjjS2Ig" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761824259; x=1793360259; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kjwK4SC2pidEH56wn9wr/J1HVaOm57Hnqtb2qsiBqko=; b=efjjS2Igmyp2xOCnWrl9GCof6q2GVhR5jEqdIx9k5+mE/L3cBxUz+Nqj oJyuqa84BYvTucXVpSRdlLd9QHpYmToHEAqlT2PzgS1XnOQj/4N+JeB0c dbP3x3fn8ta4ETyqabG4FN9/xDido2twae3h1xCUZ/7w6GlUx0fMsPBft eKDHYiSdkBe3/TGrAYOhMQODtxX2Uhjg0LKAkKjADDY9kdGkJhsDkI2Dg Oup6NZ1dnRu09qI7ex2gf0WibXBFd1LFNR0R9eVXFG4KLJv1v+2GrcH/3 pkNKC38rsoCFNvtAbMU3+yu/I+xKJ4hbj+lYxJLQrTQtdaWhmzuIvpAII g==; X-CSE-ConnectionGUID: znYRwq1ITm+b/cIGAUcZ8w== X-CSE-MsgGUID: 5A1yWmHCSjqgM2Qp6u6Mgw== X-IronPort-AV: E=McAfee;i="6800,10657,11597"; a="75309919" X-IronPort-AV: E=Sophos;i="6.19,266,1754982000"; d="scan'208";a="75309919" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2025 04:37:38 -0700 X-CSE-ConnectionGUID: 4gFP82IDTb6eiZP6QFUWSg== X-CSE-MsgGUID: yWVg4iOLSdSUDNDQeHuvIg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,266,1754982000"; d="scan'208";a="186277946" Received: from black.igk.intel.com ([10.91.253.5]) by fmviesa008.fm.intel.com with ESMTP; 30 Oct 2025 04:37:37 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id B8C7F96; Thu, 30 Oct 2025 12:37:36 +0100 (CET) From: Andy Shevchenko To: Binbin Zhou , Andy Shevchenko , linux-kernel@vger.kernel.org Cc: Chong Qiao , Lee Jones Subject: [PATCH v1 1/2] mfd: ls2kbmc: Fully convert to use managed resources Date: Thu, 30 Oct 2025 12:36:33 +0100 Message-ID: <20251030113735.3741913-2-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251030113735.3741913-1-andriy.shevchenko@linux.intel.com> References: <20251030113735.3741913-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The mixing managed and non-managed resources lay lead to all possible use-after-free bugs. In this driver the problematic part is the configurati= on space bits that may just gone behind the functions back, e.g., when interru= pt is being served. Fix this by switching to managed resources for PCI. Fixes: 91a3e1f5453a ("mfd: ls2kbmc: Check for devm_mfd_add_devices() failur= e") Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Andy Shevchenko Reviewed-by: Binbin Zhou --- drivers/mfd/ls2k-bmc-core.c | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 69387dad6661..616ff0a28b00 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -464,25 +464,23 @@ static int ls2k_bmc_probe(struct pci_dev *dev, const = struct pci_device_id *id) resource_size_t base; int ret; =20 - ret =3D pci_enable_device(dev); + ret =3D pcim_enable_device(dev); if (ret) return ret; =20 ddata =3D devm_kzalloc(&dev->dev, sizeof(*ddata), GFP_KERNEL); - if (!ddata) { - ret =3D -ENOMEM; - goto disable_pci; - } + if (!ddata) + return -ENOMEM; =20 ddata->dev =3D &dev->dev; =20 ret =3D ls2k_bmc_init(ddata); if (ret) - goto disable_pci; + return ret; =20 ret =3D ls2k_bmc_parse_mode(dev, &pd); if (ret) - goto disable_pci; + return ret; =20 ls2k_bmc_cells[LS2K_BMC_DISPLAY].platform_data =3D &pd; ls2k_bmc_cells[LS2K_BMC_DISPLAY].pdata_size =3D sizeof(pd); @@ -490,27 +488,12 @@ static int ls2k_bmc_probe(struct pci_dev *dev, const = struct pci_device_id *id) =20 /* Remove conflicting efifb device */ ret =3D aperture_remove_conflicting_devices(base, SZ_4M, "simple-framebuf= fer"); - if (ret) { - dev_err(&dev->dev, "Failed to removed firmware framebuffers: %d\n", ret); - goto disable_pci; - } - - ret =3D devm_mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, - ls2k_bmc_cells, ARRAY_SIZE(ls2k_bmc_cells), - &dev->resource[0], 0, NULL); if (ret) - goto disable_pci; + return dev_err_probe(&dev->dev, ret, "Failed to removed firmware framebu= ffers\n"); =20 - return 0; - -disable_pci: - pci_disable_device(dev); - return ret; -} - -static void ls2k_bmc_remove(struct pci_dev *dev) -{ - pci_disable_device(dev); + return devm_mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, + ls2k_bmc_cells, ARRAY_SIZE(ls2k_bmc_cells), + &dev->resource[0], 0, NULL); } =20 static struct pci_device_id ls2k_bmc_devices[] =3D { @@ -523,7 +506,6 @@ static struct pci_driver ls2k_bmc_driver =3D { .name =3D "ls2k-bmc", .id_table =3D ls2k_bmc_devices, .probe =3D ls2k_bmc_probe, - .remove =3D ls2k_bmc_remove, }; module_pci_driver(ls2k_bmc_driver); =20 --=20 2.50.1 From nobody Sat Feb 7 19:41:38 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (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 31D1E2FFDEB for ; Thu, 30 Oct 2025 11:37:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761824262; cv=none; b=tF6V/Yt+4UDdnlKDCCBhFdq5aNG2C5nw9DpptaZcMeujhM6CH1y1n2MuTYN3cUCCIAAGiVUNwPL8k2SQOALu4VWykMLWdElWb6Ijo4osWEPNdFTkQMgHqDYSIaEI9VOBuWhpBr+FOOiwEJ1UiHuTkHTG/hrLT+jTtS9ffj5hNRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761824262; c=relaxed/simple; bh=3/7lBlNqYyL0yIScNNtmwKdPed/28cnVNOyHFT4nmtg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lA8w6LrSR+r2IourkkfoeD8xl1jFJ8/Ga4GoesurOhTtkQgwpZAceeX4hlH4SeY+HiMZ2jwjfx1ZXQ8HsU4l8/jUco7Bud9WE4IWb+zNpsmYMTBoEZgRpQPOxLSScmbzXhR/7R5R04KxxKSwVhCTRJW1MeXwddNTJqDfMopSLkk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=KaiEOWFq; arc=none smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="KaiEOWFq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1761824261; x=1793360261; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3/7lBlNqYyL0yIScNNtmwKdPed/28cnVNOyHFT4nmtg=; b=KaiEOWFq75VqzMjtQXThgUe0lOorO4dK9a+hYCUwHaTVNJTYBxNrnwPh PQfUd2fvvGJCBi+Uu4gdVqiAfCrJvR/BEO5rKs7Iy0n/DqM2VVfuDmY+f C7483us2NbrjGJFS6ivk99UGrTqDoNuDRY6rJS5Oa16dyQ2R5Yna36YYx JiyH5NWHT7Myrsls2PxYIvs/zrTttZuEyUWFEWgDSsLbnPokW+fnDLtgn 6rGDNzTynmILjVvroSbWMIby+hCga1hD4w7jOAHbD/R0Ty5A3hCbS8RkM NSMedzLZqqi6BbjonE77CFxXHANCFBmXisJv2sTafsur5NvZbckk5IHJy A==; X-CSE-ConnectionGUID: PseuQDntQ268nOuFIuHMIA== X-CSE-MsgGUID: HDKC3UefRpyNY+tglZ7Y+w== X-IronPort-AV: E=McAfee;i="6800,10657,11597"; a="64002272" X-IronPort-AV: E=Sophos;i="6.19,266,1754982000"; d="scan'208";a="64002272" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2025 04:37:39 -0700 X-CSE-ConnectionGUID: du2nLlzbQW+ZYo1AGeWclg== X-CSE-MsgGUID: JkRDfpMvT+mbsrACYEfaQQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.19,266,1754982000"; d="scan'208";a="216785206" Received: from black.igk.intel.com ([10.91.253.5]) by fmviesa001.fm.intel.com with ESMTP; 30 Oct 2025 04:37:37 -0700 Received: by black.igk.intel.com (Postfix, from userid 1003) id BD21F97; Thu, 30 Oct 2025 12:37:36 +0100 (CET) From: Andy Shevchenko To: Binbin Zhou , Andy Shevchenko , linux-kernel@vger.kernel.org Cc: Chong Qiao , Lee Jones Subject: [PATCH v1 2/2] mfd: ls2kbmc: Use PCI API instead of direct accesses Date: Thu, 30 Oct 2025 12:36:34 +0100 Message-ID: <20251030113735.3741913-3-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251030113735.3741913-1-andriy.shevchenko@linux.intel.com> References: <20251030113735.3741913-1-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There is PCI API to access device resources. Use it instead of direct accesses. Signed-off-by: Andy Shevchenko Reviewed-by: Binbin Zhou --- drivers/mfd/ls2k-bmc-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 616ff0a28b00..7b0a5fed1d1d 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -484,7 +484,7 @@ static int ls2k_bmc_probe(struct pci_dev *dev, const st= ruct pci_device_id *id) =20 ls2k_bmc_cells[LS2K_BMC_DISPLAY].platform_data =3D &pd; ls2k_bmc_cells[LS2K_BMC_DISPLAY].pdata_size =3D sizeof(pd); - base =3D dev->resource[0].start + LS2K_DISPLAY_RES_START; + base =3D pci_resource_start(dev, 0) + LS2K_DISPLAY_RES_START; =20 /* Remove conflicting efifb device */ ret =3D aperture_remove_conflicting_devices(base, SZ_4M, "simple-framebuf= fer"); @@ -493,7 +493,7 @@ static int ls2k_bmc_probe(struct pci_dev *dev, const st= ruct pci_device_id *id) =20 return devm_mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, ls2k_bmc_cells, ARRAY_SIZE(ls2k_bmc_cells), - &dev->resource[0], 0, NULL); + pci_resource_n(dev, 0), 0, NULL); } =20 static struct pci_device_id ls2k_bmc_devices[] =3D { --=20 2.50.1