From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Hans de Goede <hdegoede@redhat.com>,
Linus Walleij <linus.walleij@linaro.org>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.14 01/32] power: supply: ab8500: Fix external_power_changed race
Date: Mon, 19 Jun 2023 12:28:49 +0200 [thread overview]
Message-ID: <20230619102127.551367762@linuxfoundation.org> (raw)
In-Reply-To: <20230619102127.461443957@linuxfoundation.org>
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit a5299ce4e96f3e8930e9c051b28d8093ada87b08 ]
ab8500_btemp_external_power_changed() dereferences di->btemp_psy,
which gets sets in ab8500_btemp_probe() like this:
di->btemp_psy = devm_power_supply_register(dev, &ab8500_btemp_desc,
&psy_cfg);
As soon as devm_power_supply_register() has called device_add()
the external_power_changed callback can get called. So there is a window
where ab8500_btemp_external_power_changed() may get called while
di->btemp_psy has not been set yet leading to a NULL pointer dereference.
Fixing this is easy. The external_power_changed callback gets passed
the power_supply which will eventually get stored in di->btemp_psy,
so ab8500_btemp_external_power_changed() can simply directly use
the passed in psy argument which is always valid.
And the same applies to ab8500_fg_external_power_changed().
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/power/supply/ab8500_btemp.c | 6 ++----
drivers/power/supply/ab8500_fg.c | 6 ++----
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/power/supply/ab8500_btemp.c b/drivers/power/supply/ab8500_btemp.c
index 97423a04fc0f0..c58644a3345ce 100644
--- a/drivers/power/supply/ab8500_btemp.c
+++ b/drivers/power/supply/ab8500_btemp.c
@@ -976,10 +976,8 @@ static int ab8500_btemp_get_ext_psy_data(struct device *dev, void *data)
*/
static void ab8500_btemp_external_power_changed(struct power_supply *psy)
{
- struct ab8500_btemp *di = power_supply_get_drvdata(psy);
-
- class_for_each_device(power_supply_class, NULL,
- di->btemp_psy, ab8500_btemp_get_ext_psy_data);
+ class_for_each_device(power_supply_class, NULL, psy,
+ ab8500_btemp_get_ext_psy_data);
}
/* ab8500 btemp driver interrupts and their respective isr */
diff --git a/drivers/power/supply/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c
index b00844103a07a..f99e248f6aed3 100644
--- a/drivers/power/supply/ab8500_fg.c
+++ b/drivers/power/supply/ab8500_fg.c
@@ -2384,10 +2384,8 @@ static int ab8500_fg_init_hw_registers(struct ab8500_fg *di)
*/
static void ab8500_fg_external_power_changed(struct power_supply *psy)
{
- struct ab8500_fg *di = power_supply_get_drvdata(psy);
-
- class_for_each_device(power_supply_class, NULL,
- di->fg_psy, ab8500_fg_get_ext_psy_data);
+ class_for_each_device(power_supply_class, NULL, psy,
+ ab8500_fg_get_ext_psy_data);
}
/**
--
2.39.2
next prev parent reply other threads:[~2023-06-19 10:29 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-19 10:28 [PATCH 4.14 00/32] 4.14.319-rc1 review Greg Kroah-Hartman
2023-06-19 10:28 ` Greg Kroah-Hartman [this message]
2023-06-19 10:28 ` [PATCH 4.14 02/32] power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 03/32] ARM: dts: vexpress: add missing cache properties Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 04/32] power: supply: Ratelimit no data debug output Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 05/32] regulator: Fix error checking for debugfs_create_dir Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 06/32] power: supply: Fix logic checking if system is running from battery Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 07/32] MIPS: Alchemy: fix dbdma2 Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 08/32] mips: Move initrd_start check after initrd address sanitisation Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 09/32] xen/blkfront: Only check REQ_FUA for writes Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 10/32] ocfs2: fix use-after-free when unmounting read-only filesystem Greg Kroah-Hartman
2023-06-19 10:28 ` [PATCH 4.14 11/32] ocfs2: check new file size on fallocate call Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 12/32] nios2: dts: Fix tse_mac "max-frame-size" property Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 13/32] nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key() Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 14/32] nilfs2: fix possible out-of-bounds segment allocation in resize ioctl Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 15/32] net: usb: qmi_wwan: add support for Compal RXM-G1 Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 16/32] Remove DECnet support from kernel Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 17/32] USB: serial: option: add Quectel EM061KGL series Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 18/32] netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 19/32] ping6: Fix send to link-local addresses with VRF Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 20/32] IB/isert: Fix dead lock in ib_isert Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 21/32] IB/isert: Fix possible list corruption in CMA handler Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 22/32] IB/isert: Fix incorrect release of isert connection Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 23/32] sctp: fix an error code in sctp_sf_eat_auth() Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 24/32] igb: fix nvm.ops.read() error handling Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 25/32] drm/nouveau/dp: check for NULL nv_connector->native_mode Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 26/32] net: lapbether: only support ethernet devices Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 27/32] net: tipc: resize nlattr array to correct size Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 28/32] selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 29/32] neighbour: Remove unused inline function neigh_key_eq16() Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 30/32] neighbour: delete neigh_lookup_nodev as not used Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 31/32] powerpc: Fix defconfig choice logic when cross compiling Greg Kroah-Hartman
2023-06-19 10:29 ` [PATCH 4.14 32/32] mmc: block: ensure error propagation for non-blk Greg Kroah-Hartman
2023-06-20 9:19 ` [PATCH 4.14 00/32] 4.14.319-rc1 review Chris Paterson
2023-06-20 9:28 ` Harshit Mogalapalli
2023-06-20 10:05 ` Naresh Kamboju
2023-06-20 10:21 ` Jon Hunter
2023-06-21 0:37 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230619102127.551367762@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=hdegoede@redhat.com \
--cc=linus.walleij@linaro.org \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).