Hi YueHaibing,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on pinctrl/devel]
[also build test ERROR on v4.18-rc7 next-20180731]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/YueHaibing/pinctrl-berlin-fix-pctrl-functions-allocation-in-berlin_pinctrl_build_state/20180801-131813
base:   
https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 8.1.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=8.1.0 make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   drivers/pinctrl/berlin/berlin.c: In function 'berlin_pinctrl_build_state':
>> drivers/pinctrl/berlin/berlin.c:259:5: error: too few arguments to function 
>> 'kfree'
        kfree( );
        ^~~~~
   In file included from drivers/pinctrl/berlin/berlin.c:20:
   include/linux/slab.h:183:6: note: declared here
    void kfree(const void *);
         ^~~~~

vim +/kfree +259 drivers/pinctrl/berlin/berlin.c

   202  
   203  static int berlin_pinctrl_build_state(struct platform_device *pdev)
   204  {
   205          struct berlin_pinctrl *pctrl = platform_get_drvdata(pdev);
   206          const struct berlin_desc_group *desc_group;
   207          const struct berlin_desc_function *desc_function;
   208          int i, max_functions = 0;
   209  
   210          pctrl->nfunctions = 0;
   211  
   212          for (i = 0; i < pctrl->desc->ngroups; i++) {
   213                  desc_group = pctrl->desc->groups + i;
   214                  /* compute the maxiumum number of functions a group can 
have */
   215                  max_functions += 1 << (desc_group->bit_width + 1);
   216          }
   217  
   218          /* we will reallocate later */
   219          pctrl->functions = kcalloc(max_functions,
   220                                     sizeof(*pctrl->functions), 
GFP_KERNEL);
   221          if (!pctrl->functions)
   222                  return -ENOMEM;
   223  
   224          /* register all functions */
   225          for (i = 0; i < pctrl->desc->ngroups; i++) {
   226                  desc_group = pctrl->desc->groups + i;
   227                  desc_function = desc_group->functions;
   228  
   229                  while (desc_function->name) {
   230                          berlin_pinctrl_add_function(pctrl, 
desc_function->name);
   231                          desc_function++;
   232                  }
   233          }
   234  
   235          pctrl->functions = krealloc(pctrl->functions,
   236                                      pctrl->nfunctions * 
sizeof(*pctrl->functions),
   237                                      GFP_KERNEL);
   238  
   239          /* map functions to theirs groups */
   240          for (i = 0; i < pctrl->desc->ngroups; i++) {
   241                  desc_group = pctrl->desc->groups + i;
   242                  desc_function = desc_group->functions;
   243  
   244                  while (desc_function->name) {
   245                          struct berlin_pinctrl_function
   246                                  *function = pctrl->functions;
   247                          const char **groups;
   248                          bool found = false;
   249  
   250                          while (function->name) {
   251                                  if (!strcmp(desc_function->name, 
function->name)) {
   252                                          found = true;
   253                                          break;
   254                                  }
   255                                  function++;
   256                          }
   257  
   258                          if (!found) {
 > 259                                  kfree( );
   260                                  return -EINVAL;
   261                          }
   262  
   263                          if (!function->groups) {
   264                                  function->groups =
   265                                          devm_kcalloc(&pdev->dev,
   266                                                       function->ngroups,
   267                                                       sizeof(char *),
   268                                                       GFP_KERNEL);
   269  
   270                                  if (!function->groups) {
   271                                          kfree(pctrl->functions);
   272                                          return -ENOMEM;
   273                                  }
   274                          }
   275  
   276                          groups = function->groups;
   277                          while (*groups)
   278                                  groups++;
   279  
   280                          *groups = desc_group->name;
   281  
   282                          desc_function++;
   283                  }
   284          }
   285  
   286          return 0;
   287  }
   288  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to