diff options
Diffstat (limited to 'drivers/iio/adc/rzg2l_adc.c')
| -rw-r--r-- | drivers/iio/adc/rzg2l_adc.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c index 7585144b9715..5b09a93fdf34 100644 --- a/drivers/iio/adc/rzg2l_adc.c +++ b/drivers/iio/adc/rzg2l_adc.c @@ -334,11 +334,15 @@ static int rzg2l_adc_parse_properties(struct platform_device *pdev, struct rzg2l  	i = 0;  	device_for_each_child_node(&pdev->dev, fwnode) {  		ret = fwnode_property_read_u32(fwnode, "reg", &channel); -		if (ret) +		if (ret) { +			fwnode_handle_put(fwnode);  			return ret; +		} -		if (channel >= RZG2L_ADC_MAX_CHANNELS) +		if (channel >= RZG2L_ADC_MAX_CHANNELS) { +			fwnode_handle_put(fwnode);  			return -EINVAL; +		}  		chan_array[i].type = IIO_VOLTAGE;  		chan_array[i].indexed = 1; |