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 :::::: CC: 0day robot --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation