Re: drivers/staging/wfx/main.c:47:14-21: ERROR: PTR_ERR applied after initialization to constant on line 42

From: Jérôme Pouiller
Date: Mon Jun 08 2020 - 09:51:21 EST


On Monday 8 June 2020 15:31:36 CEST kernel test robot wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: af7b4801030c07637840191c69eb666917e4135d
> commit: 0096214a59a72b3c3c943e27bd03307324d3ce0f staging: wfx: add support for I/O access
> date: 8 months ago
> config: i386-randconfig-c024-20200607 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
>
> coccinelle warnings: (new ones prefixed by >>)
>
> >> drivers/staging/wfx/main.c:47:14-21: ERROR: PTR_ERR applied after initialization to constant on line 42
>
> vim +47 drivers/staging/wfx/main.c
>
> 30
> 31 struct gpio_desc *wfx_get_gpio(struct device *dev, int override, const char *label)
> 32 {
> 33 struct gpio_desc *ret;
> 34 char label_buf[256];
> 35
> 36 if (override >= 0) {
> 37 snprintf(label_buf, sizeof(label_buf), "wfx_%s", label);
> 38 ret = ERR_PTR(devm_gpio_request_one(dev, override, GPIOF_OUT_INIT_LOW, label_buf));
> 39 if (!ret)
> 40 ret = gpio_to_desc(override);
> 41 } else if (override == -1) {
> > 42 ret = NULL;
> 43 } else {
> 44 ret = devm_gpiod_get(dev, label, GPIOD_OUT_LOW);
> 45 }
> 46 if (IS_ERR(ret) || !ret) {
> > 47 if (!ret || PTR_ERR(ret) == -ENOENT)
> 48 dev_warn(dev, "gpio %s is not defined\n", label);
> 49 else
> 50 dev_warn(dev, "error while requesting gpio %s\n", label);
> 51 ret = NULL;
> 52 } else {
> 53 dev_dbg(dev, "using gpio %d for %s\n", desc_to_gpio(ret), label);
> 54 }
> 55 return ret;
> 56 }
> 57
Hello,

This warning seems to be a false positive (the variable "ret" is affected in
all branches of the if/else).


--
Jérôme Pouiller