FAILED: patch "[PATCH] iio: adc: adi-axi-adc: Initialize state mutex" failed to apply to 6.18-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x 549b71ce050637dd32678371ad76c445a2f8c9aa
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026100609-decibel-passing-b1dc@gregkh' --subject-prefix 'PATCH 6.18.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 549b71ce050637dd32678371ad76c445a2f8c9aa Mon Sep 17 00:00:00 2001
From: Janani Sunil <[email protected]>
Date: Thu, 13 Aug 2026 15:56:56 +0200
Subject: [PATCH] iio: adc: adi-axi-adc: Initialize state mutex
The AXI ADC register access paths serialize transactions with st->lock, but probe does not initialize it. Initialize the mutex before registering the backend.
drivers/iio/adc/adi-axi-adc.c +4 -0
@@ -714,6 +714,10 @@ static int adi_axi_adc_probe(struct platform_device *pdev)if (!st)return -ENOMEM ; + ret =devm_mutex_init (dev, &st->lock); +if (ret) +return ret; + base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (base))return PTR_ERR (base);
Sasha Levin
maintainerPATCH 1/2 iio: adc: adi-axi-adc: Make use of dev_err_probe()
From: Nuno Sá <[email protected]>
[ Upstream commit 634a6316617e2ced7016b002d0b284a1502e9601 ]
Be consistent and use dev_err_probe() as in all other places in the .probe() path.
While at it, remove the line break in the version condition. Yes, it goes over the 80 column limit but I do think the line break hurts readability in this case. And use a struct device *dev helper for neater code.
Stable-dep-of: 549b71ce0506 ("iio: adc: adi-axi-adc: Initialize state mutex")
--- drivers/iio/adc/adi-axi-adc.c | 57 ++++++++++++++++------------------- 1 file changed, 26 insertions(+), 31 deletions(-)
drivers/iio/adc/adi-axi-adc.c +26 -31
@@ -704,13 +704,14 @@ static const struct iio_backend_info axi_ad408x = {static int adi_axi_adc_probe (struct platform_device *pdev) { +struct device *dev = &pdev->dev;struct adi_axi_adc_state *st;void __iomem *base;unsigned int ver;struct clk *clk;int ret; - st =devm_kzalloc (&pdev->dev,sizeof (*st),GFP_KERNEL ); + st =devm_kzalloc (dev,sizeof (*st),GFP_KERNEL );if (!st)return -ENOMEM ;
@@ -718,20 +719,19 @@ static int adi_axi_adc_probe(struct platform_device *pdev)if (IS_ERR (base))return PTR_ERR (base); - st->dev = &pdev->dev; - st->regmap =devm_regmap_init_mmio (&pdev->dev, base, - &axi_adc_regmap_config); + st->dev = dev; + st->regmap =devm_regmap_init_mmio (dev, base, &axi_adc_regmap_config);if (IS_ERR (st->regmap)) -return dev_err_probe (&pdev->dev,PTR_ERR (st->regmap), +return dev_err_probe (dev,PTR_ERR (st->regmap),"failed to init register map\n" ); - st->info =device_get_match_data (&pdev->dev); + st->info =device_get_match_data (dev);if (!st->info)return -ENODEV ; - clk =devm_clk_get_enabled (&pdev->dev,NULL ); + clk =devm_clk_get_enabled (dev,NULL );if (IS_ERR (clk)) -return dev_err_probe (&pdev->dev,PTR_ERR (clk), +return dev_err_probe (dev,PTR_ERR (clk),"failed to get clock\n" );/*
@@ -746,47 +746,42 @@ static int adi_axi_adc_probe(struct platform_device *pdev)if (ret)return ret; -if (ADI_AXI_PCORE_VER_MAJOR (ver) != -ADI_AXI_PCORE_VER_MAJOR (st->info->version)) { -dev_err (&pdev->dev, -"Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n" , -ADI_AXI_PCORE_VER_MAJOR (st->info->version), -ADI_AXI_PCORE_VER_MINOR (st->info->version), -ADI_AXI_PCORE_VER_PATCH (st->info->version), -ADI_AXI_PCORE_VER_MAJOR (ver), -ADI_AXI_PCORE_VER_MINOR (ver), -ADI_AXI_PCORE_VER_PATCH (ver)); -return -ENODEV ; - } - - ret =devm_iio_backend_register (&pdev->dev, st->info->backend_info, st); +if (ADI_AXI_PCORE_VER_MAJOR (ver) !=ADI_AXI_PCORE_VER_MAJOR (st->info->version)) +return dev_err_probe (dev, -ENODEV , +"Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n" , +ADI_AXI_PCORE_VER_MAJOR (st->info->version), +ADI_AXI_PCORE_VER_MINOR (st->info->version), +ADI_AXI_PCORE_VER_PATCH (st->info->version), +ADI_AXI_PCORE_VER_MAJOR (ver), +ADI_AXI_PCORE_VER_MINOR (ver), +ADI_AXI_PCORE_VER_PATCH (ver)); + + ret =devm_iio_backend_register (dev, st->info->backend_info, st);if (ret) -return dev_err_probe (&pdev->dev, ret, -"failed to register iio backend\n" ); +return dev_err_probe (dev, ret,"failed to register iio backend\n" ); -device_for_each_child_node_scoped (&pdev->dev, child) { +device_for_each_child_node_scoped (dev, child) {int val;if (!st->info->has_child_nodes) -return dev_err_probe (&pdev->dev, -EINVAL , +return dev_err_probe (dev, -EINVAL ,"invalid fdt axi-dac compatible." );/* Processing only reg 0 node */ ret =fwnode_property_read_u32 (child,"reg" , &val);if (ret) -return dev_err_probe (&pdev->dev, ret, -"invalid reg property." ); +return dev_err_probe (dev, ret,"invalid reg property." );if (val !=0 ) -return dev_err_probe (&pdev->dev, -EINVAL , +return dev_err_probe (dev, -EINVAL ,"invalid node address." ); ret =axi_adc_create_platform_device (st, child);if (ret) -return dev_err_probe (&pdev->dev, -EINVAL , +return dev_err_probe (dev, -EINVAL ,"cannot create device." ); } -dev_info (&pdev->dev,"AXI ADC IP core (%d.%.2d.%c) probed\n" , +dev_info (dev,"AXI ADC IP core (%d.%.2d.%c) probed\n" ,ADI_AXI_PCORE_VER_MAJOR (ver),ADI_AXI_PCORE_VER_MINOR (ver),ADI_AXI_PCORE_VER_PATCH (ver));
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 iio: adc: adi-axi-adc: Initialize state mutex
From: Janani Sunil <[email protected]>
[ Upstream commit 549b71ce050637dd32678371ad76c445a2f8c9aa ]
The AXI ADC register access paths serialize transactions with st->lock, but probe does not initialize it. Initialize the mutex before registering the backend.
--- drivers/iio/adc/adi-axi-adc.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/iio/adc/adi-axi-adc.c +4 -0
@@ -715,6 +715,10 @@ static int adi_axi_adc_probe(struct platform_device *pdev)if (!st)return -ENOMEM ; + ret =devm_mutex_init (dev, &st->lock); +if (ret) +return ret; + base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (base))return PTR_ERR (base);
Signature · 1 line
2.53.0