From d154afe760e78b76dfd1973d6cc647ea652f96ac Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 20 Aug 2022 20:21:59 +0200 Subject: [PATCH] drop hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch from 5.10 and older --- ...wrong-assumptions-in-device-remove-c.patch | 78 ------------------- queue-4.14/series | 1 - ...wrong-assumptions-in-device-remove-c.patch | 78 ------------------- queue-4.19/series | 1 - ...wrong-assumptions-in-device-remove-c.patch | 78 ------------------- queue-5.10/series | 1 - ...wrong-assumptions-in-device-remove-c.patch | 78 ------------------- queue-5.4/series | 1 - 8 files changed, 316 deletions(-) delete mode 100644 queue-4.14/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch delete mode 100644 queue-4.19/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch delete mode 100644 queue-5.10/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch delete mode 100644 queue-5.4/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch diff --git a/queue-4.14/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch b/queue-4.14/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch deleted file mode 100644 index c1ae344a244..00000000000 --- a/queue-4.14/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 7f0718f05628f618515e1a2e43a11de1b551106f Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 25 Jul 2022 21:43:44 +0200 -Subject: hwmon: (sht15) Fix wrong assumptions in device remove callback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Uwe Kleine-König - -[ Upstream commit 7d4edccc9bbfe1dcdff641343f7b0c6763fbe774 ] - -Taking a lock at the beginning of .remove() doesn't prevent new readers. -With the existing approach it can happen, that a read occurs just when -the lock was taken blocking the reader until the lock is released at the -end of the remove callback which then accessed *data that is already -freed then. - -To actually fix this problem the hwmon core needs some adaption. Until -this is implemented take the optimistic approach of assuming that all -readers are gone after hwmon_device_unregister() and -sysfs_remove_group() as most other drivers do. (And once the core -implements that, taking the lock would deadlock.) - -So drop the lock, move the reset to after device unregistration to keep -the device in a workable state until it's deregistered. Also add a error -message in case the reset fails and return 0 anyhow. (Returning an error -code, doesn't stop the platform device unregistration and only results -in a little helpful error message before the devm cleanup handlers are -called.) - -Signed-off-by: Uwe Kleine-König -Link: https://lore.kernel.org/r/20220725194344.150098-1-u.kleine-koenig@pengutronix.de -Signed-off-by: Guenter Roeck -Signed-off-by: Sasha Levin ---- - drivers/hwmon/sht15.c | 17 ++++++----------- - 1 file changed, 6 insertions(+), 11 deletions(-) - -diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c -index e4d642b673c6..69fe8946442c 100644 ---- a/drivers/hwmon/sht15.c -+++ b/drivers/hwmon/sht15.c -@@ -1095,25 +1095,20 @@ static int sht15_probe(struct platform_device *pdev) - static int sht15_remove(struct platform_device *pdev) - { - struct sht15_data *data = platform_get_drvdata(pdev); -+ int ret; - -- /* -- * Make sure any reads from the device are done and -- * prevent new ones beginning -- */ -- mutex_lock(&data->read_lock); -- if (sht15_soft_reset(data)) { -- mutex_unlock(&data->read_lock); -- return -EFAULT; -- } - hwmon_device_unregister(data->hwmon_dev); - sysfs_remove_group(&pdev->dev.kobj, &sht15_attr_group); -+ -+ ret = sht15_soft_reset(data); -+ if (ret) -+ dev_err(&pdev->dev, "Failed to reset device (%pe)\n", ERR_PTR(ret)); -+ - if (!IS_ERR(data->reg)) { - regulator_unregister_notifier(data->reg, &data->nb); - regulator_disable(data->reg); - } - -- mutex_unlock(&data->read_lock); -- - return 0; - } - --- -2.35.1 - diff --git a/queue-4.14/series b/queue-4.14/series index ed62cd1184e..4ea592e3623 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -44,7 +44,6 @@ arm-dts-imx6ul-fix-qspi-node-compatible.patch arm-omap2-display-fix-refcount-leak-bug.patch acpi-pm-save-nvs-memory-for-lenovo-g40-45.patch acpi-lpss-fix-missing-check-in-register_device_clock.patch -hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch pm-hibernate-defer-device-probing-when-resuming-from.patch selinux-add-boundary-check-in-put_entry.patch arm-findbit-fix-overflowing-offset.patch diff --git a/queue-4.19/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch b/queue-4.19/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch deleted file mode 100644 index ef9d8301754..00000000000 --- a/queue-4.19/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch +++ /dev/null @@ -1,78 +0,0 @@ -From a9bd1e939b1769cd41424bcc035f1284de34d8bc Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 25 Jul 2022 21:43:44 +0200 -Subject: hwmon: (sht15) Fix wrong assumptions in device remove callback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Uwe Kleine-König - -[ Upstream commit 7d4edccc9bbfe1dcdff641343f7b0c6763fbe774 ] - -Taking a lock at the beginning of .remove() doesn't prevent new readers. -With the existing approach it can happen, that a read occurs just when -the lock was taken blocking the reader until the lock is released at the -end of the remove callback which then accessed *data that is already -freed then. - -To actually fix this problem the hwmon core needs some adaption. Until -this is implemented take the optimistic approach of assuming that all -readers are gone after hwmon_device_unregister() and -sysfs_remove_group() as most other drivers do. (And once the core -implements that, taking the lock would deadlock.) - -So drop the lock, move the reset to after device unregistration to keep -the device in a workable state until it's deregistered. Also add a error -message in case the reset fails and return 0 anyhow. (Returning an error -code, doesn't stop the platform device unregistration and only results -in a little helpful error message before the devm cleanup handlers are -called.) - -Signed-off-by: Uwe Kleine-König -Link: https://lore.kernel.org/r/20220725194344.150098-1-u.kleine-koenig@pengutronix.de -Signed-off-by: Guenter Roeck -Signed-off-by: Sasha Levin ---- - drivers/hwmon/sht15.c | 17 ++++++----------- - 1 file changed, 6 insertions(+), 11 deletions(-) - -diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c -index 2be77752cd56..0a4578aae85b 100644 ---- a/drivers/hwmon/sht15.c -+++ b/drivers/hwmon/sht15.c -@@ -1029,25 +1029,20 @@ static int sht15_probe(struct platform_device *pdev) - static int sht15_remove(struct platform_device *pdev) - { - struct sht15_data *data = platform_get_drvdata(pdev); -+ int ret; - -- /* -- * Make sure any reads from the device are done and -- * prevent new ones beginning -- */ -- mutex_lock(&data->read_lock); -- if (sht15_soft_reset(data)) { -- mutex_unlock(&data->read_lock); -- return -EFAULT; -- } - hwmon_device_unregister(data->hwmon_dev); - sysfs_remove_group(&pdev->dev.kobj, &sht15_attr_group); -+ -+ ret = sht15_soft_reset(data); -+ if (ret) -+ dev_err(&pdev->dev, "Failed to reset device (%pe)\n", ERR_PTR(ret)); -+ - if (!IS_ERR(data->reg)) { - regulator_unregister_notifier(data->reg, &data->nb); - regulator_disable(data->reg); - } - -- mutex_unlock(&data->read_lock); -- - return 0; - } - --- -2.35.1 - diff --git a/queue-4.19/series b/queue-4.19/series index 17131a46f50..534b71afc69 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -48,7 +48,6 @@ acpi-ec-remove-duplicate-thinkpad-x1-carbon-6th-entr.patch acpi-pm-save-nvs-memory-for-lenovo-g40-45.patch acpi-lpss-fix-missing-check-in-register_device_clock.patch arm64-dts-qcom-ipq8074-fix-nand-node-name.patch -hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch pm-hibernate-defer-device-probing-when-resuming-from.patch selinux-add-boundary-check-in-put_entry.patch arm-findbit-fix-overflowing-offset.patch diff --git a/queue-5.10/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch b/queue-5.10/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch deleted file mode 100644 index e2a918f41c1..00000000000 --- a/queue-5.10/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch +++ /dev/null @@ -1,78 +0,0 @@ -From eeb2c8e54dd37082a17c4486e5e54c4de8e3040f Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 25 Jul 2022 21:43:44 +0200 -Subject: hwmon: (sht15) Fix wrong assumptions in device remove callback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Uwe Kleine-König - -[ Upstream commit 7d4edccc9bbfe1dcdff641343f7b0c6763fbe774 ] - -Taking a lock at the beginning of .remove() doesn't prevent new readers. -With the existing approach it can happen, that a read occurs just when -the lock was taken blocking the reader until the lock is released at the -end of the remove callback which then accessed *data that is already -freed then. - -To actually fix this problem the hwmon core needs some adaption. Until -this is implemented take the optimistic approach of assuming that all -readers are gone after hwmon_device_unregister() and -sysfs_remove_group() as most other drivers do. (And once the core -implements that, taking the lock would deadlock.) - -So drop the lock, move the reset to after device unregistration to keep -the device in a workable state until it's deregistered. Also add a error -message in case the reset fails and return 0 anyhow. (Returning an error -code, doesn't stop the platform device unregistration and only results -in a little helpful error message before the devm cleanup handlers are -called.) - -Signed-off-by: Uwe Kleine-König -Link: https://lore.kernel.org/r/20220725194344.150098-1-u.kleine-koenig@pengutronix.de -Signed-off-by: Guenter Roeck -Signed-off-by: Sasha Levin ---- - drivers/hwmon/sht15.c | 17 ++++++----------- - 1 file changed, 6 insertions(+), 11 deletions(-) - -diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c -index 7f4a63959730..ae4d14257a11 100644 ---- a/drivers/hwmon/sht15.c -+++ b/drivers/hwmon/sht15.c -@@ -1020,25 +1020,20 @@ static int sht15_probe(struct platform_device *pdev) - static int sht15_remove(struct platform_device *pdev) - { - struct sht15_data *data = platform_get_drvdata(pdev); -+ int ret; - -- /* -- * Make sure any reads from the device are done and -- * prevent new ones beginning -- */ -- mutex_lock(&data->read_lock); -- if (sht15_soft_reset(data)) { -- mutex_unlock(&data->read_lock); -- return -EFAULT; -- } - hwmon_device_unregister(data->hwmon_dev); - sysfs_remove_group(&pdev->dev.kobj, &sht15_attr_group); -+ -+ ret = sht15_soft_reset(data); -+ if (ret) -+ dev_err(&pdev->dev, "Failed to reset device (%pe)\n", ERR_PTR(ret)); -+ - if (!IS_ERR(data->reg)) { - regulator_unregister_notifier(data->reg, &data->nb); - regulator_disable(data->reg); - } - -- mutex_unlock(&data->read_lock); -- - return 0; - } - --- -2.35.1 - diff --git a/queue-5.10/series b/queue-5.10/series index 5a8d7854d66..6812cdb4c31 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -100,7 +100,6 @@ arm64-dts-qcom-ipq8074-fix-nand-node-name.patch arm64-dts-allwinner-a64-orangepi-win-fix-led-node-na.patch arm-shmobile-rcar-gen2-increase-refcount-for-new-ref.patch firmware-tegra-fix-error-check-return-value-of-debug.patch -hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch pm-hibernate-defer-device-probing-when-resuming-from.patch selinux-add-boundary-check-in-put_entry.patch powerpc-64s-disable-stack-variable-initialisation-fo.patch diff --git a/queue-5.4/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch b/queue-5.4/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch deleted file mode 100644 index 1d83bea88a2..00000000000 --- a/queue-5.4/hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 4e5fae8cb030e8258f93f13aae690ddda1cbd985 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 25 Jul 2022 21:43:44 +0200 -Subject: hwmon: (sht15) Fix wrong assumptions in device remove callback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -From: Uwe Kleine-König - -[ Upstream commit 7d4edccc9bbfe1dcdff641343f7b0c6763fbe774 ] - -Taking a lock at the beginning of .remove() doesn't prevent new readers. -With the existing approach it can happen, that a read occurs just when -the lock was taken blocking the reader until the lock is released at the -end of the remove callback which then accessed *data that is already -freed then. - -To actually fix this problem the hwmon core needs some adaption. Until -this is implemented take the optimistic approach of assuming that all -readers are gone after hwmon_device_unregister() and -sysfs_remove_group() as most other drivers do. (And once the core -implements that, taking the lock would deadlock.) - -So drop the lock, move the reset to after device unregistration to keep -the device in a workable state until it's deregistered. Also add a error -message in case the reset fails and return 0 anyhow. (Returning an error -code, doesn't stop the platform device unregistration and only results -in a little helpful error message before the devm cleanup handlers are -called.) - -Signed-off-by: Uwe Kleine-König -Link: https://lore.kernel.org/r/20220725194344.150098-1-u.kleine-koenig@pengutronix.de -Signed-off-by: Guenter Roeck -Signed-off-by: Sasha Levin ---- - drivers/hwmon/sht15.c | 17 ++++++----------- - 1 file changed, 6 insertions(+), 11 deletions(-) - -diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c -index 7f4a63959730..ae4d14257a11 100644 ---- a/drivers/hwmon/sht15.c -+++ b/drivers/hwmon/sht15.c -@@ -1020,25 +1020,20 @@ static int sht15_probe(struct platform_device *pdev) - static int sht15_remove(struct platform_device *pdev) - { - struct sht15_data *data = platform_get_drvdata(pdev); -+ int ret; - -- /* -- * Make sure any reads from the device are done and -- * prevent new ones beginning -- */ -- mutex_lock(&data->read_lock); -- if (sht15_soft_reset(data)) { -- mutex_unlock(&data->read_lock); -- return -EFAULT; -- } - hwmon_device_unregister(data->hwmon_dev); - sysfs_remove_group(&pdev->dev.kobj, &sht15_attr_group); -+ -+ ret = sht15_soft_reset(data); -+ if (ret) -+ dev_err(&pdev->dev, "Failed to reset device (%pe)\n", ERR_PTR(ret)); -+ - if (!IS_ERR(data->reg)) { - regulator_unregister_notifier(data->reg, &data->nb); - regulator_disable(data->reg); - } - -- mutex_unlock(&data->read_lock); -- - return 0; - } - --- -2.35.1 - diff --git a/queue-5.4/series b/queue-5.4/series index a638aa4ca71..a20c2196db7 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -68,7 +68,6 @@ acpi-lpss-fix-missing-check-in-register_device_clock.patch arm64-dts-qcom-ipq8074-fix-nand-node-name.patch arm64-dts-allwinner-a64-orangepi-win-fix-led-node-na.patch arm-shmobile-rcar-gen2-increase-refcount-for-new-ref.patch -hwmon-sht15-fix-wrong-assumptions-in-device-remove-c.patch pm-hibernate-defer-device-probing-when-resuming-from.patch selinux-add-boundary-check-in-put_entry.patch spi-spi-rspi-fix-pio-fallback-on-rz-platforms.patch -- 2.47.3