patch "iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs()" added to staging-next
Subsystems (3)
This is a note to let you know that I've just added the patch titled
iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs()
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-next branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will also be merged in the next major kernel release during the merge window.
If you have any questions about this process, please let me know.
Quoted 1 line
From
d3fa21c73c391975488818b085b894c2980ea052Mon Sep 17 00:00:00 2001
From: Alexey Khoroshilov <[email protected]>
Date: Sat, 22 Sep 2018 00:58:02 +0300
Subject: iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs()
Leaving for_each_child_of_node loop we should release child device node, if it is not stored for future use.
Found by Linux Driver Verification project (linuxtesting.org).
JC: I'm not sending this as a quick fix as it's been wrong for years, but good to pick up for stable after the merge window.
--- drivers/iio/adc/fsl-imx25-gcq.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/iio/adc/fsl-imx25-gcq.c +6 -0
@@ -209,12 +209,14 @@ static int mx25_gcq_setup_cfgs(struct platform_device *pdev, ret =of_property_read_u32 (child,"reg" , ®);if (ret) {dev_err (dev,"Failed to get reg property\n" ); +of_node_put (child);return ret; }if (reg >=MX25_NUM_CFGS ) {dev_err (dev,"reg value is greater than the number of available configuration registers\n" ); +of_node_put (child);return -EINVAL ; }
@@ -228,6 +230,7 @@ static int mx25_gcq_setup_cfgs(struct platform_device *pdev,if (IS_ERR (priv->vref[refp])) {dev_err (dev,"Error, trying to use external voltage reference without a vref-%s regulator." , mx25_gcq_refp_names[refp]); +of_node_put (child);return PTR_ERR (priv->vref[refp]); } priv->channel_vref_mv[reg] =
@@ -240,6 +243,7 @@ static int mx25_gcq_setup_cfgs(struct platform_device *pdev,break ;default :dev_err (dev,"Invalid positive reference %d\n" , refp); +of_node_put (child);return -EINVAL ; }
@@ -254,10 +258,12 @@ static int mx25_gcq_setup_cfgs(struct platform_device *pdev,if ((refp &MX25_ADCQ_CFG_REFP_MASK ) != refp) {dev_err (dev,"Invalid fsl,adc-refp property value\n" ); +of_node_put (child);return -EINVAL ; }if ((refn &MX25_ADCQ_CFG_REFN_MASK ) != refn) {dev_err (dev,"Invalid fsl,adc-refn property value\n" ); +of_node_put (child);return -EINVAL ; }
Signature · 1 line
2.19.0