Re: [PATCH v6 2/7] mux: Add helper functions for getting optional and selected mux-state

Dan Carpenter
2026-01-22T06:17:27Z

Hi Josua,

kernel test robot noticed the following build warnings:

url: https://github.com/intel-lab-lkp/linux/commits/Josua-Mayer/phy-can-transceiver-rename-temporary-helper-function-to-avoid-conflict/20260121-173607
base: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
patch link: https://lore.kernel.org/r/20260121-rz-sdio-mux-v6-2-38aa39527928%40solid-run.com
patch subject: [PATCH v6 2/7] mux: Add helper functions for getting optional and selected mux-state
config: arm64-randconfig-r073-20260121 (https://download.01.org/0day-ci/archive/20260122/202601221036.J0kR78Uw-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch version: v0.5.0-8985-g2614ff1a

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>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202601221036.J0kR78Uw-lkp@intel.com/

New smatch warnings:
drivers/mux/core.c:776 __devm_mux_state_get() warn: passing zero to 'PTR_ERR'
drivers/mux/core.c:796 __devm_mux_state_get() warn: passing zero to 'ERR_PTR'

Old smatch warnings:
drivers/mux/core.c:722 mux_state_get() warn: passing zero to 'ERR_CAST'

vim +/PTR_ERR +776 drivers/mux/core.c

0610cc3159b786 Josua Mayer 2026-01-21 761 static struct mux_state *__devm_mux_state_get(struct device *dev, const char *mux_name,
0610cc3159b786 Josua Mayer 2026-01-21 762 bool optional,
0610cc3159b786 Josua Mayer 2026-01-21 763 int (*init)(struct mux_state *mstate),
0610cc3159b786 Josua Mayer 2026-01-21 764 int (*exit)(struct mux_state *mstate))
0610cc3159b786 Josua Mayer 2026-01-21 765 {
0610cc3159b786 Josua Mayer 2026-01-21 766 struct devm_mux_state_state *devm_state;
0610cc3159b786 Josua Mayer 2026-01-21 767 struct mux_state *mstate;
0610cc3159b786 Josua Mayer 2026-01-21 768 int ret;
84564481bc4520 Aswath Govindraju 2022-01-07 769
0610cc3159b786 Josua Mayer 2026-01-21 770 devm_state = devres_alloc(devm_mux_state_release, sizeof(*devm_state), GFP_KERNEL);
0610cc3159b786 Josua Mayer 2026-01-21 771 if (!devm_state)
0610cc3159b786 Josua Mayer 2026-01-21 772 return ERR_PTR(-ENOMEM);
0610cc3159b786 Josua Mayer 2026-01-21 773
0610cc3159b786 Josua Mayer 2026-01-21 774 mstate = mux_state_get(dev, mux_name, optional);
0610cc3159b786 Josua Mayer 2026-01-21 775 if (IS_ERR_OR_NULL(mstate)) {

Please, change this to if (IS_ERR(mstate)) {. The mux_state_get() never
returns NULL. I have written a blog about functions which return both
error pointers and NULL.

https://staticthinking.wordpress.com/2022/08/01/mixing-error-pointers-and-null/

0610cc3159b786 Josua Mayer 2026-01-21 @776 ret = PTR_ERR(mstate);
0610cc3159b786 Josua Mayer 2026-01-21 777 goto err_mux_state_get;
0610cc3159b786 Josua Mayer 2026-01-21 778 }
0610cc3159b786 Josua Mayer 2026-01-21 779
0610cc3159b786 Josua Mayer 2026-01-21 780 if (init) {
0610cc3159b786 Josua Mayer 2026-01-21 781 ret = init(mstate);
0610cc3159b786 Josua Mayer 2026-01-21 782 if (ret)
0610cc3159b786 Josua Mayer 2026-01-21 783 goto err_mux_state_init;
0610cc3159b786 Josua Mayer 2026-01-21 784 }
0610cc3159b786 Josua Mayer 2026-01-21 785
0610cc3159b786 Josua Mayer 2026-01-21 786 devm_state->mstate = mstate;
0610cc3159b786 Josua Mayer 2026-01-21 787 devm_state->exit = exit;
0610cc3159b786 Josua Mayer 2026-01-21 788 devres_add(dev, devm_state);
0610cc3159b786 Josua Mayer 2026-01-21 789
0610cc3159b786 Josua Mayer 2026-01-21 790 return mstate;
0610cc3159b786 Josua Mayer 2026-01-21 791
0610cc3159b786 Josua Mayer 2026-01-21 792 err_mux_state_init:
84564481bc4520 Aswath Govindraju 2022-01-07 793 mux_state_put(mstate);
0610cc3159b786 Josua Mayer 2026-01-21 794 err_mux_state_get:
0610cc3159b786 Josua Mayer 2026-01-21 795 devres_free(devm_state);
0610cc3159b786 Josua Mayer 2026-01-21 @796 return ERR_PTR(ret);
84564481bc4520 Aswath Govindraju 2022-01-07 797 }

--
0-DAY CI Kernel Test Service