All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: kernel test robot <lkp@intel.com>
Cc: Dumitru Ceclan <mitrutzceclan@gmail.com>, <llvm@lists.linux.dev>,
	<oe-kbuild-all@lists.linux.dev>,
	Andy Shevchenko <andy@kernel.org>,
	"Michael Walle" <michael@walle.cc>, Nuno Sa <nuno.sa@analog.com>
Subject: Re: [jic23-iio:testing 136/152] drivers/iio/adc/ad7173.c:854:3: warning: variable 'chan_arr' is uninitialized when used here
Date: Mon, 26 Feb 2024 10:36:21 +0000	[thread overview]
Message-ID: <20240226103621.00002845@Huawei.com> (raw)
In-Reply-To: <202402251818.96Ke1Y8O-lkp@intel.com>

On Sun, 25 Feb 2024 18:31:55 +0800
kernel test robot <lkp@intel.com> wrote:

> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git testing
> head:   9dcbd08b27c90256725c9dfe83152e1debe079c9
> commit: ef3626e2264ce730bc57f6c57b7b7049bd8c45c9 [136/152] iio: adc: ad7173: add AD7173 driver
> config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20240225/202402251818.96Ke1Y8O-lkp@intel.com/config)
> compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project edd4aee4dd9b5b98b2576a6f783e4086173d902a)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240225/202402251818.96Ke1Y8O-lkp@intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202402251818.96Ke1Y8O-lkp@intel.com/
> 
> All warnings (new ones prefixed by >>):
> 
>    In file included from drivers/iio/adc/ad7173.c:16:
>    In file included from include/linux/gpio/driver.h:8:
>    In file included from include/linux/irqchip/chained_irq.h:10:
>    In file included from include/linux/irq.h:20:
>    In file included from include/linux/io.h:13:
>    In file included from arch/hexagon/include/asm/io.h:328:
>    include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
>      547 |         val = __raw_readb(PCI_IOBASE + addr);
>          |                           ~~~~~~~~~~ ^
>    include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
>      560 |         val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
>          |                                                         ~~~~~~~~~~ ^
>    include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
>       37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
>          |                                                   ^
>    In file included from drivers/iio/adc/ad7173.c:16:
>    In file included from include/linux/gpio/driver.h:8:
>    In file included from include/linux/irqchip/chained_irq.h:10:
>    In file included from include/linux/irq.h:20:
>    In file included from include/linux/io.h:13:
>    In file included from arch/hexagon/include/asm/io.h:328:
>    include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
>      573 |         val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
>          |                                                         ~~~~~~~~~~ ^
>    include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
>       35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
>          |                                                   ^
>    In file included from drivers/iio/adc/ad7173.c:16:
>    In file included from include/linux/gpio/driver.h:8:
>    In file included from include/linux/irqchip/chained_irq.h:10:
>    In file included from include/linux/irq.h:20:
>    In file included from include/linux/io.h:13:
>    In file included from arch/hexagon/include/asm/io.h:328:
>    include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
>      584 |         __raw_writeb(value, PCI_IOBASE + addr);
>          |                             ~~~~~~~~~~ ^
>    include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
>      594 |         __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
>          |                                                       ~~~~~~~~~~ ^
>    include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
>      604 |         __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
>          |                                                       ~~~~~~~~~~ ^
> >> drivers/iio/adc/ad7173.c:854:3: warning: variable 'chan_arr' is uninitialized when used here [-Wuninitialized]  
>      854 |                 chan_arr[chan_index] = ad7173_temp_iio_channel_template;
>          |                 ^~~~~~~~
>    drivers/iio/adc/ad7173.c:848:32: note: initialize the variable 'chan_arr' to silence this warning
>      848 |         struct iio_chan_spec *chan_arr, *chan;
>          |                                       ^
>          |                                        = NULL
> >> drivers/iio/adc/ad7173.c:855:19: warning: variable 'chans_st_arr' is uninitialized when used here [-Wuninitialized]  
>      855 |                 chan_st_priv = &chans_st_arr[chan_index];
>          |                                 ^~~~~~~~~~~~
>    drivers/iio/adc/ad7173.c:845:37: note: initialize the variable 'chans_st_arr' to silence this warning
>      845 |         struct ad7173_channel *chans_st_arr, *chan_st_priv;
>          |                                            ^
>          |                                             = NULL
>    8 warnings generated.
> 
> 
> vim +/chan_arr +854 drivers/iio/adc/ad7173.c
> 
>    842	
>    843	static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev)
>    844	{
>    845		struct ad7173_channel *chans_st_arr, *chan_st_priv;
>    846		struct ad7173_state *st = iio_priv(indio_dev);
>    847		struct device *dev = indio_dev->dev.parent;
>    848		struct iio_chan_spec *chan_arr, *chan;
>    849		unsigned int ain[2], chan_index = 0;
>    850		struct fwnode_handle *child;
>    851		int ref_sel, ret;

I think the fix is
			struct iio_chan_spec *chan_arr = indio_dev->channels

I'll fix it up like that unless I hear back with a different fix.

>    852	
>    853		if (st->info->has_temp) {
>  > 854			chan_arr[chan_index] = ad7173_temp_iio_channel_template;
>  > 855			chan_st_priv = &chans_st_arr[chan_index];  
>    856			chan_st_priv->ain =
>    857				AD7173_CH_ADDRESS(chan_arr[chan_index].channel,
>    858						  chan_arr[chan_index].channel2);
>    859			chan_st_priv->cfg.bipolar = false;
>    860			chan_st_priv->cfg.input_buf = true;
>    861			chan_st_priv->cfg.ref_sel = AD7173_SETUP_REF_SEL_INT_REF;
>    862			st->adc_mode |= AD7173_ADC_MODE_REF_EN;
>    863	
>    864			chan_index++;
>    865		}
>    866	
>    867		device_for_each_child_node(dev, child) {
>    868			chan = &chan_arr[chan_index];
>    869			chan_st_priv = &chans_st_arr[chan_index];
>    870			ret = fwnode_property_read_u32_array(child, "diff-channels",
>    871							     ain, ARRAY_SIZE(ain));
>    872			if (ret) {
>    873				fwnode_handle_put(child);
>    874				return ret;
>    875			}
>    876	
>    877			if (ain[0] >= st->info->num_inputs ||
>    878			    ain[1] >= st->info->num_inputs) {
>    879				fwnode_handle_put(child);
>    880				return dev_err_probe(dev, -EINVAL,
>    881					"Input pin number out of range for pair (%d %d).\n",
>    882					ain[0], ain[1]);
>    883			}
>    884	
>    885			ret = fwnode_property_match_property_string(child,
>    886								    "adi,reference-select",
>    887								    ad7173_ref_sel_str,
>    888								    ARRAY_SIZE(ad7173_ref_sel_str));
>    889			if (ret < 0)
>    890				ref_sel = AD7173_SETUP_REF_SEL_INT_REF;
>    891			else
>    892				ref_sel = ret;
>    893	
>    894			if (ref_sel == AD7173_SETUP_REF_SEL_EXT_REF2 &&
>    895			    st->info->id != AD7173_ID) {
>    896				fwnode_handle_put(child);
>    897				return dev_err_probe(dev, -EINVAL,
>    898					"External reference 2 is only available on ad7173-8\n");
>    899			}
>    900	
>    901			ret = ad7173_get_ref_voltage_milli(st, ref_sel);
>    902			if (ret < 0) {
>    903				fwnode_handle_put(child);
>    904				return dev_err_probe(dev, ret,
>    905						     "Cannot use reference %u\n", ref_sel);
>    906			}
>    907			if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF)
>    908				st->adc_mode |= AD7173_ADC_MODE_REF_EN;
>    909			chan_st_priv->cfg.ref_sel = ref_sel;
>    910	
>    911			*chan = ad7173_channel_template;
>    912			chan->address = chan_index;
>    913			chan->scan_index = chan_index;
>    914			chan->channel = ain[0];
>    915			chan->channel2 = ain[1];
>    916			chan->differential = true;
>    917	
>    918			chan_st_priv->ain = AD7173_CH_ADDRESS(ain[0], ain[1]);
>    919			chan_st_priv->chan_reg = chan_index;
>    920			chan_st_priv->cfg.input_buf = true;
>    921			chan_st_priv->cfg.odr = 0;
>    922	
>    923			chan_st_priv->cfg.bipolar = fwnode_property_read_bool(child, "bipolar");
>    924			if (chan_st_priv->cfg.bipolar)
>    925				chan->info_mask_separate |= BIT(IIO_CHAN_INFO_OFFSET);
>    926	
>    927			chan_index++;
>    928		}
>    929		return 0;
>    930	}
>    931	
> 


      reply	other threads:[~2024-02-26 10:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-25 10:31 [jic23-iio:testing 136/152] drivers/iio/adc/ad7173.c:854:3: warning: variable 'chan_arr' is uninitialized when used here kernel test robot
2024-02-26 10:36 ` Jonathan Cameron [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240226103621.00002845@Huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=andy@kernel.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=michael@walle.cc \
    --cc=mitrutzceclan@gmail.com \
    --cc=nuno.sa@analog.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.