From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) (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 4BD593EFFA6 for ; Sun, 4 Oct 2026 04:10:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791087032; cv=none; b=kAXDxpur0Thuru1T7aKTWCp9NXbX7jxwGF/5GR4DCOtOqNbr9pMtzV0Dnt3/qWLl2oyzhCU6b4o/+2cxLGMe12l58M50NUoCdZQ6xh0dfVHWkLZTb/lCDPs9YYd3vr0H3jXM/ntVZth85tqrf02hi+hgXmGGh0YdeRUOeeKnCjo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791087032; c=relaxed/simple; bh=NjL6Dz3ATof4xFu51ZKZGgvreurCkfkXi5SOJyRAhac=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=aHqlFb6O/HkGcvHxc8cHgCmBZ0ii/M0sKl2XzZgmu4qJTiIINmL8XwCufBtla5x6580zUMZc9TzgLXMak0TOJw14/12bnLJMKMyly4KEYJD+p+kROE3Ofw0uaDFNnL9jaE1MPlPoIaAH6emplDefpzDNDNkpDKmFZiWi+S7UxEY= 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=Zte3/aaS; arc=none smtp.client-ip=209.85.160.181 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="Zte3/aaS" Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-533861a59b8so9385481cf.1 for ; Sat, 03 Oct 2026 21:10:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791087023; x=1791691823; 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=1gZl0h+Rgpt7vIrQ3DFHi4uK4eDGZkHcBR93y6eKzCg=; b=Zte3/aaSR226cz1HRUtJRct3y3diWGSE0F329TBA9VuqUQTQzkH34DPK2BIKOh+GYA 6f6Lzy4h/QZzvvL14L1K+BSetoNcJqdHF0rPoUXyVgb3QP/T4GFWD7cTvDCSmjyFQkPB k1URsnaIvVAkZXqJgp7hydAOP9po774oY+EudvjakLPiCpj7MERbkyi9APbGQn5Km0Ng hEit4OoUYySjzDD45WwRgExIcTRyP6r1KN1hrvoOdNe7MSqksTighBAIdb2qY1I30/Qu g5w2QQNOoXBbcy1ReqYYXbejRrtMMfWqzmxd17a4sVsGaoMAWcERdepCGzC4QRiaN3/V u5bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791087023; x=1791691823; 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=1gZl0h+Rgpt7vIrQ3DFHi4uK4eDGZkHcBR93y6eKzCg=; b=rqbmOlNOtHv4aVKcQvokqgFQvfIGIGlQ3pRciX5DI8J2+qdigoxs1JFNX4Rewp6/Eh +TsLUhml0Ne3wiq/jh7VuutuHgOAxEFNcFFmnv/UG/CnEAPSZJMHFUstgn+PijD5uoUj JyByzx8pIAyzDj8RBMGSacfEf/IFkJrmSFYlZ5HBPfidypXrbzkOdCCRjdWL+7jnpwle ElLdzZKkHKS4d0FX1a5guEcRFNG6EO4xKFHrKDbgPs3wnqmYws7J6BiFNW8Si3eJLiFu 6NSFrB3Y7s8fC8keCVkLoiyNCPGD4QVB75wP7rraV8GjBlNJ3d88u7glhv5QNu39W+Rp sgTQ== X-Forwarded-Encrypted: i=1; AKwUvBxRnOc2HDX9vFqnFmi67QVmqRYeO+ZtdO/2b+pGSc49Ul1jjj2boiOoyVVdz2HVTQzjl6L/sqw6xVjt9kQ=@vger.kernel.org X-Gm-Message-State: AFuF++l17HQhGQvClEWu4vODVe8Z9SViskk6f96Zi2CjO26uy+wcBjbp bvB4Lao8O4LzMCfEprOxOVVqbiYibhmepKCcxWIOL5KE+ENM55M3Vjk= X-Gm-Gg: AYBFou1NjYEv1KvjKEfIv5qvfdQp/al+7CgE3kpa36OcrELM5dtLsm7U6bAERTEitQC BR1V3jsWNGaQPfdALDHoY/t8FQNaRaGEXXXkgFXXhaxkz0K2xXFYzieQvTwYBy/tMWpqyazlqoD ibVHxNvnyysvecs1zRdNN/RNlFaWrzOv5GYxe4I7rrQeAKL9qKbwq59QhHwjmf2cUZ+CUJTaixK Cwg64ywMfvbnDlJOL2joEtQqMcIJ7bPClFA9dCmRQrAgDV7PeO7VmyEM1dJan2PTuP6hdfR1ALE KaTnZVKRcNyGUtqrdTNpJPnoTnz7yRSjwsK0b9tWJsBpCvQgfjRuflsWGPkhUXK+lwT/6MSbzMi cPsAJzfLHKQ6xBMrk+2Xawg4B0p4bf9Pn2su0FXCiCYvC77/ObIKGrxTQqT8ZhZbEobmIQAx7aT ReWh2Z5TQNoDaJKedNc67AGRNE7XXkGF3/oruDTvrsSPCyEJStl7VT+tTX0O3304CzROmuHVUB7 +LK/Tk9YU/Zpkrs71tuHdEer7cGuZ/7zDDLKggmpU/b7hsC7N01tpgtcVTrkF2wyDxSij/rkKrY YogE8Uda2OHxJowW1OX9jTnUb/+e X-Received: by 2002:a05:622a:3c6:b0:530:b2e4:4e28 with SMTP id d75a77b69052e-5351203787amr67100211cf.53.1791087023409; Sat, 03 Oct 2026 21:10:23 -0700 (PDT) Received: from i4-gl-tmk5904-1.ad.psu.edu ([130.203.156.90]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-917e0b19424sm57968806d6.15.2026.10.03.21.10.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Oct 2026 21:10:22 -0700 (PDT) From: Myeonghun Pak To: Sebastian Reichel Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Ijae Kim Subject: [PATCH] power: supply: sbs-battery: disable polling before supply teardown Date: Sun, 4 Oct 2026 00:10:19 -0400 Message-ID: <20261004041019.1123723-1-mhun512@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 The managed poll-work cancellation is registered before the power supply, so cleanup unregisters the supply before draining polling. A pending or running poller can then call power_supply_changed() on the released supply. Commit 8d59cf3887fb ("power: supply: sbs-battery: Fix use-after-free in power_supply_changed()") moved the IRQ request after supply registration, but did not change the poll-work cancellation order. Add a later managed action that disables and drains polling before supply teardown. Its retained disabled state prevents external-power callbacks from rearming the poll work after it has been drained. Keep the original autocancel to initialize work before supply callbacks can run and to cover failed supply registration. The teardown ordering issue was found by static analysis. Fixes: 6d0c5de2fd84 ("power: supply: Clean-up few drivers by using managed work init") Cc: stable@vger.kernel.org # 6.10+ Assisted-by: LLM Co-developed-by: Ijae Kim Signed-off-by: Ijae Kim Signed-off-by: Myeonghun Pak --- drivers/power/supply/sbs-battery.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c index 501c8e069755..6714313bb3a3 100644 --- a/drivers/power/supply/sbs-battery.c +++ b/drivers/power/supply/sbs-battery.c @@ -1068,6 +1068,13 @@ static void sbs_alert(struct i2c_client *client, enum i2c_alert_protocol prot, sbs_supply_changed(i2c_get_clientdata(client)); } +static void sbs_disable_work(void *data) +{ + struct sbs_info *chip = data; + + disable_delayed_work_sync(&chip->work); +} + static void sbs_external_power_changed(struct power_supply *psy) { struct sbs_info *chip = power_supply_get_drvdata(psy); @@ -1208,6 +1215,10 @@ static int sbs_probe(struct i2c_client *client) return dev_err_probe(&client->dev, PTR_ERR(chip->power_supply), "Failed to register power supply\n"); + rc = devm_add_action_or_reset(&client->dev, sbs_disable_work, chip); + if (rc) + return rc; + if (!chip->gpio_detect) goto out;