From: Greg Kroah-Hartman Date: Tue, 16 Jun 2026 07:48:21 +0000 (+0530) Subject: drop some iio patches that broke the build X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=38bdaa512e0d547d7c873de8a59b408c53851621;p=thirdparty%2Fkernel%2Fstable-queue.git drop some iio patches that broke the build --- diff --git a/queue-5.10/iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch b/queue-5.10/iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch deleted file mode 100644 index 6efeeb983c..0000000000 --- a/queue-5.10/iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch +++ /dev/null @@ -1,69 +0,0 @@ -From stable+bounces-260533-greg=kroah.com@vger.kernel.org Thu Jun 4 21:26:20 2026 -From: Sasha Levin -Date: Thu, 4 Jun 2026 11:49:19 -0400 -Subject: iio: dac: ad5686: acquire lock when doing powerdown control -To: stable@vger.kernel.org -Cc: Rodrigo Alencar , Stable@vger.kernel.org, Jonathan Cameron , Sasha Levin -Message-ID: <20260604154919.3732423-1-sashal@kernel.org> - -From: Rodrigo Alencar - -[ Upstream commit 5237c3175cae5ab05f18878cec3301a04403859e ] - -Protect access of pwr_down_mode and pwr_down_mask fields with existing -mutex lock. Each channel exposes their own attributes for controlling -powerdown modes and powerdown state. This fixes potential race conditions -as those the write functions perform non-atomic read-modify-write -operations to those pwr_down_* fields. This issue exists since the ad5686 -driver was first introduced. - -Fixes: c2f37c8dcadc ("iio: dac: New driver for AD5686R, AD5685R, AD5684R Digital to analog converters") -Signed-off-by: Rodrigo Alencar -Cc: -Signed-off-by: Jonathan Cameron -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/iio/dac/ad5686.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - ---- a/drivers/iio/dac/ad5686.c -+++ b/drivers/iio/dac/ad5686.c -@@ -30,6 +30,8 @@ static int ad5686_get_powerdown_mode(str - { - struct ad5686_state *st = iio_priv(indio_dev); - -+ guard(mutex)(&st->lock); -+ - return ((st->pwr_down_mode >> (chan->channel * 2)) & 0x3) - 1; - } - -@@ -39,6 +41,8 @@ static int ad5686_set_powerdown_mode(str - { - struct ad5686_state *st = iio_priv(indio_dev); - -+ guard(mutex)(&st->lock); -+ - st->pwr_down_mode &= ~(0x3 << (chan->channel * 2)); - st->pwr_down_mode |= ((mode + 1) << (chan->channel * 2)); - -@@ -57,7 +61,9 @@ static ssize_t ad5686_read_dac_powerdown - { - struct ad5686_state *st = iio_priv(indio_dev); - -- return sprintf(buf, "%d\n", !!(st->pwr_down_mask & -+ guard(mutex)(&st->lock); -+ -+ return sysfs_emit(buf, "%d\n", !!(st->pwr_down_mask & - (0x3 << (chan->channel * 2)))); - } - -@@ -77,6 +83,8 @@ static ssize_t ad5686_write_dac_powerdow - if (ret) - return ret; - -+ guard(mutex)(&st->lock); -+ - if (readin) - st->pwr_down_mask |= (0x3 << (chan->channel * 2)); - else diff --git a/queue-5.10/series b/queue-5.10/series index 17f9652966..0313207635 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -315,7 +315,6 @@ rdma-umem-fix-kernel-doc-warnings.patch rdma-move-dma-block-iterator-logic-into-dedicated-files.patch rdma-umem-fix-truncation-for-block-sizes-4g.patch bluetooth-l2cap-use-chan-timer-to-close-channels-in-cleanup_listen.patch -iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch iio-adc-npcm-fix-unbalanced-clk_disable_unprepare.patch usb-cdns3-gadget-fix-request-skipping-after-clearing-halt.patch iio-chemical-scd30-use-guard-mutex-to-allow-early-returns.patch diff --git a/queue-5.15/iio-adc-fix-the-return-value-handle-for-platform_get_irq.patch b/queue-5.15/iio-adc-fix-the-return-value-handle-for-platform_get_irq.patch deleted file mode 100644 index c10676a35c..0000000000 --- a/queue-5.15/iio-adc-fix-the-return-value-handle-for-platform_get_irq.patch +++ /dev/null @@ -1,81 +0,0 @@ -From stable+bounces-260514-greg=kroah.com@vger.kernel.org Thu Jun 4 20:15:22 2026 -From: Sasha Levin -Date: Thu, 4 Jun 2026 10:30:29 -0400 -Subject: iio: adc: fix the return value handle for platform_get_irq() -To: stable@vger.kernel.org -Cc: Ruan Jinjie , Jonathan Cameron , Sasha Levin -Message-ID: <20260604143031.3608772-1-sashal@kernel.org> - -From: Ruan Jinjie - -[ Upstream commit c09ddcdd4dd32ee9768dc233ead4b3d726f26d38 ] - -There is no possible for platform_get_irq() to return 0 -and the return value of platform_get_irq() is more sensible -to show the error reason. - -Signed-off-by: Ruan Jinjie -Link: https://lore.kernel.org/r/20230727131607.2897937-1-ruanjinjie@huawei.com -Signed-off-by: Jonathan Cameron -Stable-dep-of: 0d42e2c0bd6c ("iio: adc: npcm: fix unbalanced clk_disable_unprepare()") -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/iio/adc/bcm_iproc_adc.c | 4 ++-- - drivers/iio/adc/lpc32xx_adc.c | 4 ++-- - drivers/iio/adc/npcm_adc.c | 4 ++-- - drivers/iio/adc/spear_adc.c | 4 ++-- - 4 files changed, 8 insertions(+), 8 deletions(-) - ---- a/drivers/iio/adc/bcm_iproc_adc.c -+++ b/drivers/iio/adc/bcm_iproc_adc.c -@@ -540,8 +540,8 @@ static int iproc_adc_probe(struct platfo - } - - adc_priv->irqno = platform_get_irq(pdev, 0); -- if (adc_priv->irqno <= 0) -- return -ENODEV; -+ if (adc_priv->irqno < 0) -+ return adc_priv->irqno; - - ret = regmap_update_bits(adc_priv->regmap, IPROC_REGCTL2, - IPROC_ADC_AUXIN_SCAN_ENA, 0); ---- a/drivers/iio/adc/lpc32xx_adc.c -+++ b/drivers/iio/adc/lpc32xx_adc.c -@@ -173,8 +173,8 @@ static int lpc32xx_adc_probe(struct plat - } - - irq = platform_get_irq(pdev, 0); -- if (irq <= 0) -- return -ENXIO; -+ if (irq < 0) -+ return irq; - - retval = devm_request_irq(&pdev->dev, irq, lpc32xx_adc_isr, 0, - LPC32XXAD_NAME, st); ---- a/drivers/iio/adc/npcm_adc.c -+++ b/drivers/iio/adc/npcm_adc.c -@@ -221,8 +221,8 @@ static int npcm_adc_probe(struct platfor - info->adc_sample_hz = clk_get_rate(info->adc_clk) / ((div + 1) * 2); - - irq = platform_get_irq(pdev, 0); -- if (irq <= 0) { -- ret = -EINVAL; -+ if (irq < 0) { -+ ret = irq; - goto err_disable_clk; - } - ---- a/drivers/iio/adc/spear_adc.c -+++ b/drivers/iio/adc/spear_adc.c -@@ -311,8 +311,8 @@ static int spear_adc_probe(struct platfo - } - - irq = platform_get_irq(pdev, 0); -- if (irq <= 0) { -- ret = -EINVAL; -+ if (irq < 0) { -+ ret = irq; - goto errout2; - } - diff --git a/queue-5.15/iio-adc-npcm-convert-to-platform-remove-callback-returning-void.patch b/queue-5.15/iio-adc-npcm-convert-to-platform-remove-callback-returning-void.patch deleted file mode 100644 index f536ea12da..0000000000 --- a/queue-5.15/iio-adc-npcm-convert-to-platform-remove-callback-returning-void.patch +++ /dev/null @@ -1,60 +0,0 @@ -From stable+bounces-260515-greg=kroah.com@vger.kernel.org Thu Jun 4 20:15:24 2026 -From: Sasha Levin -Date: Thu, 4 Jun 2026 10:30:30 -0400 -Subject: iio: adc: npcm: Convert to platform remove callback returning void -To: stable@vger.kernel.org -Cc: "Uwe Kleine-König" , "Jonathan Cameron" , "Sasha Levin" -Message-ID: <20260604143031.3608772-2-sashal@kernel.org> - -From: Uwe Kleine-König - -[ Upstream commit 5253a5cc7709688b9a000f7928bfaa3366d0af98 ] - -The .remove() callback for a platform driver returns an int which makes -many driver authors wrongly assume it's possible to do error handling by -returning an error code. However the value returned is ignored (apart -from emitting a warning) and this typically results in resource leaks. -To improve here there is a quest to make the remove callback return -void. In the first step of this quest all drivers are converted to -.remove_new() which already returns void. Eventually after all drivers -are converted, .remove_new() will be renamed to .remove(). - -Trivially convert this driver from always returning zero in the remove -callback to the void returning variant. - -Signed-off-by: Uwe Kleine-König -Link: https://lore.kernel.org/r/20230919174931.1417681-18-u.kleine-koenig@pengutronix.de -Signed-off-by: Jonathan Cameron -Stable-dep-of: 0d42e2c0bd6c ("iio: adc: npcm: fix unbalanced clk_disable_unprepare()") -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/iio/adc/npcm_adc.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - ---- a/drivers/iio/adc/npcm_adc.c -+++ b/drivers/iio/adc/npcm_adc.c -@@ -297,7 +297,7 @@ err_disable_clk: - return ret; - } - --static int npcm_adc_remove(struct platform_device *pdev) -+static void npcm_adc_remove(struct platform_device *pdev) - { - struct iio_dev *indio_dev = platform_get_drvdata(pdev); - struct npcm_adc *info = iio_priv(indio_dev); -@@ -310,13 +310,11 @@ static int npcm_adc_remove(struct platfo - if (!IS_ERR(info->vref)) - regulator_disable(info->vref); - clk_disable_unprepare(info->adc_clk); -- -- return 0; - } - - static struct platform_driver npcm_adc_driver = { - .probe = npcm_adc_probe, -- .remove = npcm_adc_remove, -+ .remove_new = npcm_adc_remove, - .driver = { - .name = "npcm_adc", - .of_match_table = npcm_adc_match, diff --git a/queue-5.15/iio-adc-npcm-fix-unbalanced-clk_disable_unprepare.patch b/queue-5.15/iio-adc-npcm-fix-unbalanced-clk_disable_unprepare.patch deleted file mode 100644 index 08ec350ee1..0000000000 --- a/queue-5.15/iio-adc-npcm-fix-unbalanced-clk_disable_unprepare.patch +++ /dev/null @@ -1,112 +0,0 @@ -From stable+bounces-260516-greg=kroah.com@vger.kernel.org Thu Jun 4 20:15:25 2026 -From: Sasha Levin -Date: Thu, 4 Jun 2026 10:30:31 -0400 -Subject: iio: adc: npcm: fix unbalanced clk_disable_unprepare() -To: stable@vger.kernel.org -Cc: David Carlier , Andy Shevchenko , Stable@vger.kernel.org, Jonathan Cameron , Sasha Levin -Message-ID: <20260604143031.3608772-3-sashal@kernel.org> - -From: David Carlier - -[ Upstream commit 0d42e2c0bd6ceb89e44c6e065f9bdf9b1df3ef0c ] - -The driver acquired the ADC clock with devm_clk_get() and read its -rate, but never called clk_prepare_enable(). The probe error path and -npcm_adc_remove() both called clk_disable_unprepare() unconditionally, -causing the clk framework's enable/prepare counts to underflow on -probe failure or module unbind. - -The issue went unnoticed because NPCM BMC firmware leaves the ADC -clock enabled at boot, so the driver happened to work in practice. - -Switch to devm_clk_get_enabled() so the clock is properly enabled -during probe and automatically released by the device-managed -cleanup, and drop the now-redundant clk_disable_unprepare() from -both the probe error path and remove(). - -While at it, drop the duplicate error message on devm_request_irq() -failure since the IRQ core already logs it. - -Fixes: 9bf85fbc9d8f ("iio: adc: add NPCM ADC driver") -Signed-off-by: David Carlier -Reviewed-by: Andy Shevchenko -Cc: -Signed-off-by: Jonathan Cameron -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/iio/adc/npcm_adc.c | 25 ++++++++----------------- - 1 file changed, 8 insertions(+), 17 deletions(-) - ---- a/drivers/iio/adc/npcm_adc.c -+++ b/drivers/iio/adc/npcm_adc.c -@@ -208,7 +208,7 @@ static int npcm_adc_probe(struct platfor - if (IS_ERR(info->reset)) - return PTR_ERR(info->reset); - -- info->adc_clk = devm_clk_get(&pdev->dev, NULL); -+ info->adc_clk = devm_clk_get_enabled(&pdev->dev, NULL); - if (IS_ERR(info->adc_clk)) { - dev_warn(&pdev->dev, "ADC clock failed: can't read clk\n"); - return PTR_ERR(info->adc_clk); -@@ -221,17 +221,13 @@ static int npcm_adc_probe(struct platfor - info->adc_sample_hz = clk_get_rate(info->adc_clk) / ((div + 1) * 2); - - irq = platform_get_irq(pdev, 0); -- if (irq < 0) { -- ret = irq; -- goto err_disable_clk; -- } -+ if (irq < 0) -+ return irq; - - ret = devm_request_irq(&pdev->dev, irq, npcm_adc_isr, 0, - "NPCM_ADC", indio_dev); -- if (ret < 0) { -- dev_err(dev, "failed requesting interrupt\n"); -- goto err_disable_clk; -- } -+ if (ret < 0) -+ return ret; - - reg_con = ioread32(info->regs + NPCM_ADCCON); - info->vref = devm_regulator_get_optional(&pdev->dev, "vref"); -@@ -239,7 +235,7 @@ static int npcm_adc_probe(struct platfor - ret = regulator_enable(info->vref); - if (ret) { - dev_err(&pdev->dev, "Can't enable ADC reference voltage\n"); -- goto err_disable_clk; -+ return ret; - } - - iowrite32(reg_con & ~NPCM_ADCCON_REFSEL, -@@ -249,10 +245,8 @@ static int npcm_adc_probe(struct platfor - * Any error which is not ENODEV indicates the regulator - * has been specified and so is a failure case. - */ -- if (PTR_ERR(info->vref) != -ENODEV) { -- ret = PTR_ERR(info->vref); -- goto err_disable_clk; -- } -+ if (PTR_ERR(info->vref) != -ENODEV) -+ return PTR_ERR(info->vref); - - /* Use internal reference */ - iowrite32(reg_con | NPCM_ADCCON_REFSEL, -@@ -291,8 +285,6 @@ err_iio_register: - iowrite32(reg_con & ~NPCM_ADCCON_ADC_EN, info->regs + NPCM_ADCCON); - if (!IS_ERR(info->vref)) - regulator_disable(info->vref); --err_disable_clk: -- clk_disable_unprepare(info->adc_clk); - - return ret; - } -@@ -309,7 +301,6 @@ static void npcm_adc_remove(struct platf - iowrite32(regtemp & ~NPCM_ADCCON_ADC_EN, info->regs + NPCM_ADCCON); - if (!IS_ERR(info->vref)) - regulator_disable(info->vref); -- clk_disable_unprepare(info->adc_clk); - } - - static struct platform_driver npcm_adc_driver = { diff --git a/queue-5.15/iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch b/queue-5.15/iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch deleted file mode 100644 index 820e23e525..0000000000 --- a/queue-5.15/iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch +++ /dev/null @@ -1,67 +0,0 @@ -From stable+bounces-260524-greg=kroah.com@vger.kernel.org Thu Jun 4 20:43:03 2026 -From: Sasha Levin -Date: Thu, 4 Jun 2026 11:02:04 -0400 -Subject: iio: dac: ad5686: acquire lock when doing powerdown control -To: stable@vger.kernel.org -Cc: Rodrigo Alencar , Stable@vger.kernel.org, Jonathan Cameron , Sasha Levin -Message-ID: <20260604150204.3692750-1-sashal@kernel.org> - -From: Rodrigo Alencar - -[ Upstream commit 5237c3175cae5ab05f18878cec3301a04403859e ] - -Protect access of pwr_down_mode and pwr_down_mask fields with existing -mutex lock. Each channel exposes their own attributes for controlling -powerdown modes and powerdown state. This fixes potential race conditions -as those the write functions perform non-atomic read-modify-write -operations to those pwr_down_* fields. This issue exists since the ad5686 -driver was first introduced. - -Fixes: c2f37c8dcadc ("iio: dac: New driver for AD5686R, AD5685R, AD5684R Digital to analog converters") -Signed-off-by: Rodrigo Alencar -Cc: -Signed-off-by: Jonathan Cameron -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/iio/dac/ad5686.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - ---- a/drivers/iio/dac/ad5686.c -+++ b/drivers/iio/dac/ad5686.c -@@ -30,6 +30,8 @@ static int ad5686_get_powerdown_mode(str - { - struct ad5686_state *st = iio_priv(indio_dev); - -+ guard(mutex)(&st->lock); -+ - return ((st->pwr_down_mode >> (chan->channel * 2)) & 0x3) - 1; - } - -@@ -39,6 +41,8 @@ static int ad5686_set_powerdown_mode(str - { - struct ad5686_state *st = iio_priv(indio_dev); - -+ guard(mutex)(&st->lock); -+ - st->pwr_down_mode &= ~(0x3 << (chan->channel * 2)); - st->pwr_down_mode |= ((mode + 1) << (chan->channel * 2)); - -@@ -57,6 +61,8 @@ static ssize_t ad5686_read_dac_powerdown - { - struct ad5686_state *st = iio_priv(indio_dev); - -+ guard(mutex)(&st->lock); -+ - return sysfs_emit(buf, "%d\n", !!(st->pwr_down_mask & - (0x3 << (chan->channel * 2)))); - } -@@ -77,6 +83,8 @@ static ssize_t ad5686_write_dac_powerdow - if (ret) - return ret; - -+ guard(mutex)(&st->lock); -+ - if (readin) - st->pwr_down_mask |= (0x3 << (chan->channel * 2)); - else diff --git a/queue-5.15/iio-dac-ad5686-fix-ref-bit-initialization-for-single-channel-parts.patch b/queue-5.15/iio-dac-ad5686-fix-ref-bit-initialization-for-single-channel-parts.patch index 09f82a44e8..a96fd893f8 100644 --- a/queue-5.15/iio-dac-ad5686-fix-ref-bit-initialization-for-single-channel-parts.patch +++ b/queue-5.15/iio-dac-ad5686-fix-ref-bit-initialization-for-single-channel-parts.patch @@ -32,7 +32,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/iio/dac/ad5686.c +++ b/drivers/iio/dac/ad5686.c -@@ -521,7 +521,7 @@ int ad5686_probe(struct device *dev, +@@ -513,7 +513,7 @@ int ad5686_probe(struct device *dev, break; case AD5686_REGMAP: cmd = AD5686_CMD_INTERNAL_REFER_SETUP; @@ -41,7 +41,7 @@ Signed-off-by: Greg Kroah-Hartman break; case AD5693_REGMAP: cmd = AD5686_CMD_CONTROL_REG; -@@ -533,9 +533,9 @@ int ad5686_probe(struct device *dev, +@@ -525,9 +525,9 @@ int ad5686_probe(struct device *dev, goto error_disable_reg; } diff --git a/queue-5.15/series b/queue-5.15/series index dfa7b97bf6..dc6bd6bf90 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -361,10 +361,6 @@ arm64-tlb-flush-walk-cache-when-unsharing-pmd-tables.patch phy-tegra-xusb-disable-trk-clk-when-not-in-use.patch phy-tegra-xusb-fix-per-pad-high-speed-termination-calibration.patch bluetooth-l2cap-use-chan-timer-to-close-channels-in-cleanup_listen.patch -iio-adc-fix-the-return-value-handle-for-platform_get_irq.patch -iio-adc-npcm-convert-to-platform-remove-callback-returning-void.patch -iio-adc-npcm-fix-unbalanced-clk_disable_unprepare.patch -iio-dac-ad5686-acquire-lock-when-doing-powerdown-control.patch iio-gyro-adis16260-fix-division-by-zero-in-write_raw.patch iio-chemical-scd30-use-guard-mutex-to-allow-early-returns.patch iio-chemical-scd30-fix-division-by-zero-in-write_raw.patch