From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.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 61DFC2DCF67 for ; Sun, 17 May 2026 08:05:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779005122; cv=none; b=UoMNNbyNaIYv6dBePT9rtGnXrBqLX567YL0YucvLMnQQnfg8OT+aHLs6Ljhj91faaY/szfn6C5H6ArZUdJbEOOl9scFMDM7crePcsPxv4BC1l+eWoXNF7s5/KI5HHOY33q5rqHFETFnawwUtGJ5uMuyStDsgNgo8PwK7wlrO7gs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779005122; c=relaxed/simple; bh=NGMb25quMJA/qmhqXGV0PuyWAv1LkEiCtHZF83T9J/Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G9jqw6HJN0WEup8J6Na4/wxSXg79HBo9xAdyFo+c/Ij4vKTZ4AdkSVIeu4Eh8Yw58641x0KSSnr/zW49NqTFEL7SnfkQfztx99/TkhV3s4MSvm85ZDmY0jY45Z2yMUlE084Ej6Phz2Tray3tVo5uzehqX+oe04w/IqIw+CbTf+U= 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=dX9kROA7; arc=none smtp.client-ip=209.85.214.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="dX9kROA7" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2bd2c147abaso7303765ad.3 for ; Sun, 17 May 2026 01:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779005121; x=1779609921; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yMtYakkWg6xW89eWo2V/gAFSemUpeEFr7/GQfm8tsfU=; b=dX9kROA7A82iVIFYb1z97RYdleh5cBn7EHgQ3KYhRKjOmWeUu581VaJpX+J98LIqIS PvTYGF9Hdaipk0QhkKbCUm4YAfff95W+k13r8mjdw1xemczO3PfZdNZgNb+Ql3NkW7k+ CjF1gihNTes2g2OdLMhaREbiCpJu8Icwz/vUzMpB4EjDVu9IGgsiH93z2tLNDWDGDaFX WUHvdtMw5rmyNQjRaCUCxSMHoisdzVXSfurJaQVG0/uluRuP7UKUcIRuHoKtYIzMtQ0h 8DXlvfVwiXQFgEnPu7i6hXj24XpjCMdSzWgUhamD45rFK709gc7kcUguDvaLlD456EN6 +cNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779005121; x=1779609921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yMtYakkWg6xW89eWo2V/gAFSemUpeEFr7/GQfm8tsfU=; b=QCrtoM3d6gsOF6Qfk/qm+Jje6xgduJQYrGzOhhZ4CMzs3PtCi6aKbjdQor5UTcnqXG 2sOjOG0V4iB0ojkhKlBOtHwm0/eCqnaa3gxtN56mU9Dq0X8xoK7LnI+kxTz8hAdDp5s2 xPM6YKczbNlKbj0NsxWca3SP90NOzvxqsqgG331wF3iF4HnBPqt3ySXeSmLUvxKwhHnP vs0pLQj1BeENaVPDVNJPGSWBkz+uvZPN/n66bGxFDKQsFEzijj92DIM63s/A1OUzce6a /VPm/2ByhDMoAjxhEnPKj6+P7LZNDqfp1AIIDw9GgEfjL7H4iEO+hny8KMI/wmKir0zw z+9g== X-Forwarded-Encrypted: i=1; AFNElJ/pBnYJbEp4w0PPhWmsn3uF8Z8rZZbgMUUrM8L3dgV40Q3VF6BBtSTeDt803HsZtZ7BhurypQfm+a4vsUM=@vger.kernel.org X-Gm-Message-State: AOJu0YyxLtz1yq2WJd6xMr27pWdkqxLElzTIwmXetDmLj6BGm2GJ64fb MSATSbIeZ5uJPtMQ2VciR0sPmMSLzd1MozHAE5+OlskMseew1QsTPrTPrdCFuMpDGZA= X-Gm-Gg: Acq92OGX4FlDAEbds/FXr7RZVve7D8GhoEwCevjlrIOXAb9cuAzlG1JaYdDVD9A267A BM6mLQvEs15uUHXF4/Lxt1rFmkjwXt4MwRbEoHQVEbJ7NFq5l919irSnFvMOknWcnmU0NTF1Uf0 CF+wUrNrF1DxTzwRfhMbhuEP8/x7UMPk4oYb35g9MoPgusd/khK2CVe+FruTJN8LOpAhwM7K7kM wizlIT8XHVMcMEEthRbtViWBBnAgCbJR8WaSRfzgFQcatoGiJVyxqRMxX8BrWHr7M6duB+z2xMM yTprbrDwtyC3PMJgggqS+I5yVBBY7ivcqPFhMxNitRV+eqZQZIycrbcCFmJqL+ZsG+e04/BgBj5 RShlyAwH+yV2AFln4G1CqHNfEEGz5S2hTapffXd8EwRjj3cYx8vuGxhFl3+xgNYlu+HT6qsXB6l +uAizzHAUEGLSk/DhvsJdruCF2zcv2YFmVJIOLiujRqIGzo6qsf62Pie4s2fAl X-Received: by 2002:a17:902:7d86:b0:2bc:7486:21cf with SMTP id d9443c01a7336-2bd7e9056dfmr70871815ad.36.1779005120658; Sun, 17 May 2026 01:05:20 -0700 (PDT) Received: from fedora.taildae27b.ts.net ([2409:4064:2d80:75ca:8541:272f:2bb3:5e55]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bd5bd5fb17sm109834595ad.1.2026.05.17.01.05.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 01:05:20 -0700 (PDT) From: Shubham Chakraborty To: Guenter Roeck , Florian Fainelli , Jonathan Corbet Cc: Shuah Khan , Broadcom internal kernel review list , Ray Jui , Scott Branden , linux-hwmon@vger.kernel.org, linux-doc@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Shubham Chakraborty Subject: [PATCH v3 3/3] hwmon: raspberrypi: Fix delayed-work teardown race Date: Sun, 17 May 2026 13:34:45 +0530 Message-ID: <20260517080445.103962-4-chakrabortyshubham66@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260517080445.103962-1-chakrabortyshubham66@gmail.com> References: <20260516164407.25255-1-chakrabortyshubham66@gmail.com> <20260517080445.103962-1-chakrabortyshubham66@gmail.com> 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 delayed polling work rearms itself from the work function, so use explicit delayed-work setup and cleanup instead of devm_delayed_work_autocancel(). Initialize the delayed work with INIT_DELAYED_WORK() and register a devres cleanup action that calls disable_delayed_work_sync() during teardown. This addresses the concern raised during review about the polling work being able to requeue itself while the driver is being removed. Signed-off-by: Shubham Chakraborty --- drivers/hwmon/raspberrypi-hwmon.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/hwmon/raspberrypi-hwmon.c b/drivers/hwmon/raspberrypi-hwmon.c index 8ce6dacc19b0..0bbc735f74a4 100644 --- a/drivers/hwmon/raspberrypi-hwmon.c +++ b/drivers/hwmon/raspberrypi-hwmon.c @@ -8,7 +8,6 @@ * Copyright (C) 2026 Shubham Chakraborty */ #include -#include #include #include #include @@ -96,6 +95,13 @@ static void get_values_poll(struct work_struct *work) schedule_delayed_work(&data->get_values_poll_work, 2 * HZ); } +static void rpi_hwmon_cancel_poll_work(void *res) +{ + struct rpi_hwmon_data *data = res; + + disable_delayed_work_sync(&data->get_values_poll_work); +} + static int rpi_read(struct device *dev, enum hwmon_sensor_types type, u32 attr, int channel, long *val) { @@ -237,8 +243,8 @@ static int rpi_hwmon_probe(struct platform_device *pdev) if (IS_ERR(data->hwmon_dev)) return PTR_ERR(data->hwmon_dev); - ret = devm_delayed_work_autocancel(dev, &data->get_values_poll_work, - get_values_poll); + INIT_DELAYED_WORK(&data->get_values_poll_work, get_values_poll); + ret = devm_add_action_or_reset(dev, rpi_hwmon_cancel_poll_work, data); if (ret) return ret; platform_set_drvdata(pdev, data); -- 2.54.0