Re: [PATCH v2 24/26] ibnbd: include client and server modules into kernel compilation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Roman,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.17-rc5 next-20180517]
[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/Roman-Pen/InfiniBand-Transport-IBTRS-and-Network-Block-Device-IBNBD/20180520-222445
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.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
        make.cross ARCH=sh 

All warnings (new ones prefixed by >>):

   In file included from include/linux/printk.h:7:0,
                    from include/linux/kernel.h:14,
                    from include/linux/list.h:9,
                    from include/linux/module.h:9,
                    from drivers/block/ibnbd/ibnbd-clt-sysfs.c:37:
   drivers/block/ibnbd/ibnbd-clt-sysfs.c: In function 'ibnbd_clt_parse_map_options':
   include/linux/kern_levels.h:5:18: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t {aka unsigned int}' [-Wformat=]
    #define KERN_SOH "\001"  /* ASCII Start Of Header */
                     ^
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
    #define KERN_ERR KERN_SOH "3" /* error conditions */
                     ^~~~~~~~
   include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
     printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
            ^~~~~~~~
>> drivers/block/ibnbd/ibnbd-clt-sysfs.c:139:5: note: in expansion of macro 'pr_err'
        pr_err("map_device: too many (> %lu) paths "
        ^~~~~~
   drivers/block/ibnbd/ibnbd-clt-sysfs.c: In function 'ibnbd_clt_map_device_store':
>> drivers/block/ibnbd/ibnbd-clt-sysfs.c:613:1: warning: the frame size of 1616 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    }
    ^

vim +/pr_err +139 drivers/block/ibnbd/ibnbd-clt-sysfs.c

ea541da7d Roman Pen 2018-05-18   88  
ea541da7d Roman Pen 2018-05-18   89  static int ibnbd_clt_parse_map_options(const char *buf,
ea541da7d Roman Pen 2018-05-18   90  				       char *sessname,
ea541da7d Roman Pen 2018-05-18   91  				       struct ibtrs_addr *paths,
ea541da7d Roman Pen 2018-05-18   92  				       size_t *path_cnt,
ea541da7d Roman Pen 2018-05-18   93  				       size_t max_path_cnt,
ea541da7d Roman Pen 2018-05-18   94  				       char *pathname,
ea541da7d Roman Pen 2018-05-18   95  				       enum ibnbd_access_mode *access_mode,
ea541da7d Roman Pen 2018-05-18   96  				       enum ibnbd_io_mode *io_mode)
ea541da7d Roman Pen 2018-05-18   97  {
ea541da7d Roman Pen 2018-05-18   98  	char *options, *sep_opt;
ea541da7d Roman Pen 2018-05-18   99  	char *p;
ea541da7d Roman Pen 2018-05-18  100  	substring_t args[MAX_OPT_ARGS];
ea541da7d Roman Pen 2018-05-18  101  	int opt_mask = 0;
ea541da7d Roman Pen 2018-05-18  102  	int token;
ea541da7d Roman Pen 2018-05-18  103  	int ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  104  	int i;
ea541da7d Roman Pen 2018-05-18  105  	int p_cnt = 0;
ea541da7d Roman Pen 2018-05-18  106  
ea541da7d Roman Pen 2018-05-18  107  	options = kstrdup(buf, GFP_KERNEL);
ea541da7d Roman Pen 2018-05-18  108  	if (!options)
ea541da7d Roman Pen 2018-05-18  109  		return -ENOMEM;
ea541da7d Roman Pen 2018-05-18  110  
ea541da7d Roman Pen 2018-05-18  111  	sep_opt = strstrip(options);
ea541da7d Roman Pen 2018-05-18  112  	strip(sep_opt);
ea541da7d Roman Pen 2018-05-18  113  	while ((p = strsep(&sep_opt, " ")) != NULL) {
ea541da7d Roman Pen 2018-05-18  114  		if (!*p)
ea541da7d Roman Pen 2018-05-18  115  			continue;
ea541da7d Roman Pen 2018-05-18  116  
ea541da7d Roman Pen 2018-05-18  117  		token = match_token(p, ibnbd_opt_tokens, args);
ea541da7d Roman Pen 2018-05-18  118  		opt_mask |= token;
ea541da7d Roman Pen 2018-05-18  119  
ea541da7d Roman Pen 2018-05-18  120  		switch (token) {
ea541da7d Roman Pen 2018-05-18  121  		case IBNBD_OPT_SESSNAME:
ea541da7d Roman Pen 2018-05-18  122  			p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18  123  			if (!p) {
ea541da7d Roman Pen 2018-05-18  124  				ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18  125  				goto out;
ea541da7d Roman Pen 2018-05-18  126  			}
ea541da7d Roman Pen 2018-05-18  127  			if (strlen(p) > NAME_MAX) {
ea541da7d Roman Pen 2018-05-18  128  				pr_err("map_device: sessname too long\n");
ea541da7d Roman Pen 2018-05-18  129  				ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  130  				kfree(p);
ea541da7d Roman Pen 2018-05-18  131  				goto out;
ea541da7d Roman Pen 2018-05-18  132  			}
ea541da7d Roman Pen 2018-05-18  133  			strlcpy(sessname, p, NAME_MAX);
ea541da7d Roman Pen 2018-05-18  134  			kfree(p);
ea541da7d Roman Pen 2018-05-18  135  			break;
ea541da7d Roman Pen 2018-05-18  136  
ea541da7d Roman Pen 2018-05-18  137  		case IBNBD_OPT_PATH:
ea541da7d Roman Pen 2018-05-18  138  			if (p_cnt >= max_path_cnt) {
ea541da7d Roman Pen 2018-05-18 @139  				pr_err("map_device: too many (> %lu) paths "
ea541da7d Roman Pen 2018-05-18  140  				       "provided\n", max_path_cnt);
ea541da7d Roman Pen 2018-05-18  141  				ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18  142  				goto out;
ea541da7d Roman Pen 2018-05-18  143  			}
ea541da7d Roman Pen 2018-05-18  144  			p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18  145  			if (!p) {
ea541da7d Roman Pen 2018-05-18  146  				ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18  147  				goto out;
ea541da7d Roman Pen 2018-05-18  148  			}
ea541da7d Roman Pen 2018-05-18  149  
ea541da7d Roman Pen 2018-05-18  150  			ret = ibtrs_addr_to_sockaddr(p, strlen(p), IBTRS_PORT,
ea541da7d Roman Pen 2018-05-18  151  						     &paths[p_cnt]);
ea541da7d Roman Pen 2018-05-18  152  			if (ret) {
ea541da7d Roman Pen 2018-05-18  153  				pr_err("Can't parse path %s: %d\n", p, ret);
ea541da7d Roman Pen 2018-05-18  154  				kfree(p);
ea541da7d Roman Pen 2018-05-18  155  				goto out;
ea541da7d Roman Pen 2018-05-18  156  			}
ea541da7d Roman Pen 2018-05-18  157  
ea541da7d Roman Pen 2018-05-18  158  			p_cnt++;
ea541da7d Roman Pen 2018-05-18  159  
ea541da7d Roman Pen 2018-05-18  160  			kfree(p);
ea541da7d Roman Pen 2018-05-18  161  			break;
ea541da7d Roman Pen 2018-05-18  162  
ea541da7d Roman Pen 2018-05-18  163  		case IBNBD_OPT_DEV_PATH:
ea541da7d Roman Pen 2018-05-18  164  			p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18  165  			if (!p) {
ea541da7d Roman Pen 2018-05-18  166  				ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18  167  				goto out;
ea541da7d Roman Pen 2018-05-18  168  			}
ea541da7d Roman Pen 2018-05-18  169  			if (strlen(p) > NAME_MAX) {
ea541da7d Roman Pen 2018-05-18  170  				pr_err("map_device: Device path too long\n");
ea541da7d Roman Pen 2018-05-18  171  				ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  172  				kfree(p);
ea541da7d Roman Pen 2018-05-18  173  				goto out;
ea541da7d Roman Pen 2018-05-18  174  			}
ea541da7d Roman Pen 2018-05-18  175  			strlcpy(pathname, p, NAME_MAX);
ea541da7d Roman Pen 2018-05-18  176  			kfree(p);
ea541da7d Roman Pen 2018-05-18  177  			break;
ea541da7d Roman Pen 2018-05-18  178  
ea541da7d Roman Pen 2018-05-18  179  		case IBNBD_OPT_ACCESS_MODE:
ea541da7d Roman Pen 2018-05-18  180  			p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18  181  			if (!p) {
ea541da7d Roman Pen 2018-05-18  182  				ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18  183  				goto out;
ea541da7d Roman Pen 2018-05-18  184  			}
ea541da7d Roman Pen 2018-05-18  185  
ea541da7d Roman Pen 2018-05-18  186  			if (!strcmp(p, "ro")) {
ea541da7d Roman Pen 2018-05-18  187  				*access_mode = IBNBD_ACCESS_RO;
ea541da7d Roman Pen 2018-05-18  188  			} else if (!strcmp(p, "rw")) {
ea541da7d Roman Pen 2018-05-18  189  				*access_mode = IBNBD_ACCESS_RW;
ea541da7d Roman Pen 2018-05-18  190  			} else if (!strcmp(p, "migration")) {
ea541da7d Roman Pen 2018-05-18  191  				*access_mode = IBNBD_ACCESS_MIGRATION;
ea541da7d Roman Pen 2018-05-18  192  			} else {
ea541da7d Roman Pen 2018-05-18  193  				pr_err("map_device: Invalid access_mode:"
ea541da7d Roman Pen 2018-05-18  194  				       " '%s'\n", p);
ea541da7d Roman Pen 2018-05-18  195  				ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  196  				kfree(p);
ea541da7d Roman Pen 2018-05-18  197  				goto out;
ea541da7d Roman Pen 2018-05-18  198  			}
ea541da7d Roman Pen 2018-05-18  199  
ea541da7d Roman Pen 2018-05-18  200  			kfree(p);
ea541da7d Roman Pen 2018-05-18  201  			break;
ea541da7d Roman Pen 2018-05-18  202  
ea541da7d Roman Pen 2018-05-18  203  		case IBNBD_OPT_IO_MODE:
ea541da7d Roman Pen 2018-05-18  204  			p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18  205  			if (!p) {
ea541da7d Roman Pen 2018-05-18  206  				ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18  207  				goto out;
ea541da7d Roman Pen 2018-05-18  208  			}
ea541da7d Roman Pen 2018-05-18  209  			if (!strcmp(p, "blockio")) {
ea541da7d Roman Pen 2018-05-18  210  				*io_mode = IBNBD_BLOCKIO;
ea541da7d Roman Pen 2018-05-18  211  			} else if (!strcmp(p, "fileio")) {
ea541da7d Roman Pen 2018-05-18  212  				*io_mode = IBNBD_FILEIO;
ea541da7d Roman Pen 2018-05-18  213  			} else {
ea541da7d Roman Pen 2018-05-18  214  				pr_err("map_device: Invalid io_mode: '%s'.\n",
ea541da7d Roman Pen 2018-05-18  215  				       p);
ea541da7d Roman Pen 2018-05-18  216  				ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  217  				kfree(p);
ea541da7d Roman Pen 2018-05-18  218  				goto out;
ea541da7d Roman Pen 2018-05-18  219  			}
ea541da7d Roman Pen 2018-05-18  220  			kfree(p);
ea541da7d Roman Pen 2018-05-18  221  			break;
ea541da7d Roman Pen 2018-05-18  222  
ea541da7d Roman Pen 2018-05-18  223  		default:
ea541da7d Roman Pen 2018-05-18  224  			pr_err("map_device: Unknown parameter or missing value"
ea541da7d Roman Pen 2018-05-18  225  			       " '%s'\n", p);
ea541da7d Roman Pen 2018-05-18  226  			ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  227  			goto out;
ea541da7d Roman Pen 2018-05-18  228  		}
ea541da7d Roman Pen 2018-05-18  229  	}
ea541da7d Roman Pen 2018-05-18  230  
ea541da7d Roman Pen 2018-05-18  231  	for (i = 0; i < ARRAY_SIZE(ibnbd_opt_mandatory); i++) {
ea541da7d Roman Pen 2018-05-18  232  		if ((opt_mask & ibnbd_opt_mandatory[i])) {
ea541da7d Roman Pen 2018-05-18  233  			ret = 0;
ea541da7d Roman Pen 2018-05-18  234  		} else {
ea541da7d Roman Pen 2018-05-18  235  			pr_err("map_device: Parameters missing\n");
ea541da7d Roman Pen 2018-05-18  236  			ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18  237  			break;
ea541da7d Roman Pen 2018-05-18  238  		}
ea541da7d Roman Pen 2018-05-18  239  	}
ea541da7d Roman Pen 2018-05-18  240  
ea541da7d Roman Pen 2018-05-18  241  out:
ea541da7d Roman Pen 2018-05-18  242  	*path_cnt = p_cnt;
ea541da7d Roman Pen 2018-05-18  243  	kfree(options);
ea541da7d Roman Pen 2018-05-18  244  	return ret;
ea541da7d Roman Pen 2018-05-18  245  }
ea541da7d Roman Pen 2018-05-18  246  

:::::: The code at line 139 was first introduced by commit
:::::: ea541da7d8b2518d2b1d68d23d19bb13cca1119b ibnbd: client: sysfs interface functions

:::::: TO: Roman Pen <roman.penyaev@xxxxxxxxxxxxxxxx>
:::::: CC: 0day robot <lkp@xxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux