[bug report] staging: mt7621-pinctrl: ralink: add pinctrl driver

Dan Carpenter dan.carpenter at oracle.com
Thu Jun 21 08:43:44 UTC 2018


Hello NeilBrown,

The patch 0317d60de869: "staging: mt7621-pinctrl: ralink: add pinctrl
driver" from Mar 15, 2018, leads to the following static checker
warning:

	drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c:144 rt2880_pinctrl_dt_node_to_map()
	info: return a literal instead of 'max_maps'

drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
   127  static int rt2880_pinctrl_dt_node_to_map(struct pinctrl_dev *pctrldev,
   128                                  struct device_node *np_config,
   129                                  struct pinctrl_map **map,
   130                                  unsigned *num_maps)
   131  {
   132          int max_maps = 0;
   133          struct pinctrl_map *tmp;
   134          struct device_node *np;
   135  
   136          for_each_child_of_node(np_config, np) {
   137                  int ret = of_property_count_strings(np, "ralink,group");
   138  
   139                  if (ret >= 0)
   140                          max_maps += ret;
   141          }
   142  
   143          if (!max_maps)
   144                  return max_maps;
                        ^^^^^^^^^^^^^^^
This error path is buggy.  I don't know if we intended to return zero or
negative, but if we return success we should set "*num_maps = 0;" so
that it's not used uninitialized in the caller.

   145  
   146          *map = kcalloc(max_maps, sizeof(struct pinctrl_map), GFP_KERNEL);
   147          if (!*map)
   148                  return -ENOMEM;
   149  
   150          tmp = *map;
   151  
   152          for_each_child_of_node(np_config, np)
   153                  rt2880_pinctrl_dt_subnode_to_map(pctrldev, np, &tmp);
   154          *num_maps = max_maps;
   155  
   156          return 0;
   157  }

regards,
dan carpenter


More information about the devel mailing list