Hi Amir, I love your patch! Perhaps something to improve: [auto build test WARNING on 11a48a5a18c63fd7621bb050228cebf13566e4d8] url: https://github.com/0day-ci/linux/commits/Amir-Goldstein/Fanotify-event-with-name-info/20200219-160517 base: 11a48a5a18c63fd7621bb050228cebf13566e4d8 config: c6x-randconfig-a001-20200219 (attached as .config) compiler: c6x-elf-gcc (GCC) 7.5.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=7.5.0 make.cross ARCH=c6x If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): In file included from include/linux/kernel.h:15:0, from include/linux/list.h:9, from include/linux/preempt.h:11, from include/linux/spinlock.h:51, from include/linux/seqlock.h:36, from include/linux/time.h:6, from include/linux/stat.h:19, from include/linux/fcntl.h:5, from fs/notify/fanotify/fanotify_user.c:3: fs/notify/fanotify/fanotify_user.c: In function 'copy_info_to_user': >> fs/notify/fanotify/fanotify_user.c:238:11: warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'size_t {aka unsigned int}' [-Wformat=] pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^ include/linux/printk.h:288:21: note: in definition of macro 'pr_fmt' #define pr_fmt(fmt) fmt ^~~ include/linux/dynamic_debug.h:143:2: note: in expansion of macro '__dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:153:2: note: in expansion of macro '_dynamic_func_call' _dynamic_func_call(fmt, __dynamic_pr_debug, \ ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:335:2: note: in expansion of macro 'dynamic_pr_debug' dynamic_pr_debug(fmt, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:2: note: in expansion of macro 'pr_debug' pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:11: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Wformat=] pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^ include/linux/printk.h:288:21: note: in definition of macro 'pr_fmt' #define pr_fmt(fmt) fmt ^~~ include/linux/dynamic_debug.h:143:2: note: in expansion of macro '__dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:153:2: note: in expansion of macro '_dynamic_func_call' _dynamic_func_call(fmt, __dynamic_pr_debug, \ ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:335:2: note: in expansion of macro 'dynamic_pr_debug' dynamic_pr_debug(fmt, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:2: note: in expansion of macro 'pr_debug' pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:11: warning: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'size_t {aka unsigned int}' [-Wformat=] pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^ include/linux/printk.h:288:21: note: in definition of macro 'pr_fmt' #define pr_fmt(fmt) fmt ^~~ include/linux/dynamic_debug.h:143:2: note: in expansion of macro '__dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:153:2: note: in expansion of macro '_dynamic_func_call' _dynamic_func_call(fmt, __dynamic_pr_debug, \ ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:335:2: note: in expansion of macro 'dynamic_pr_debug' dynamic_pr_debug(fmt, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:2: note: in expansion of macro 'pr_debug' pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:11: warning: format '%lu' expects argument of type 'long unsigned int', but argument 7 has type 'size_t {aka unsigned int}' [-Wformat=] pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^ include/linux/printk.h:288:21: note: in definition of macro 'pr_fmt' #define pr_fmt(fmt) fmt ^~~ include/linux/dynamic_debug.h:143:2: note: in expansion of macro '__dynamic_func_call' __dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:153:2: note: in expansion of macro '_dynamic_func_call' _dynamic_func_call(fmt, __dynamic_pr_debug, \ ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:335:2: note: in expansion of macro 'dynamic_pr_debug' dynamic_pr_debug(fmt, ##__VA_ARGS__) ^~~~~~~~~~~~~~~~ fs/notify/fanotify/fanotify_user.c:238:2: note: in expansion of macro 'pr_debug' pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", ^~~~~~~~ vim +238 fs/notify/fanotify/fanotify_user.c 224 225 static int copy_info_to_user(__kernel_fsid_t *fsid, struct fanotify_fid_hdr *fh, 226 struct fanotify_fid *fid, const struct qstr *name, 227 char __user *buf, size_t count) 228 { 229 struct fanotify_event_info_fid info = { }; 230 struct file_handle handle = { }; 231 unsigned char bounce[max(FANOTIFY_INLINE_FH_LEN, DNAME_INLINE_LEN)]; 232 const unsigned char *data; 233 size_t fh_len = fh->len; 234 size_t name_len = name ? name->len : 0; 235 size_t info_len = fanotify_fid_info_len(fh_len, name_len); 236 size_t len = info_len; 237 > 238 pr_debug("%s: fh_len=%lu name_len=%lu, info_len=%lu, count=%lu\n", 239 __func__, fh_len, name_len, info_len, count); 240 241 if (!fh_len || (name && !name_len)) 242 return 0; 243 244 if (WARN_ON_ONCE(len < sizeof(info) || len > count)) 245 return -EFAULT; 246 247 /* 248 * Copy event info fid header followed by vaiable sized file handle 249 * and optionally followed by vaiable sized filename. 250 */ 251 info.hdr.info_type = name_len ? FAN_EVENT_INFO_TYPE_DFID_NAME : 252 FAN_EVENT_INFO_TYPE_FID; 253 info.hdr.len = len; 254 info.fsid = *fsid; 255 if (copy_to_user(buf, &info, sizeof(info))) 256 return -EFAULT; 257 258 buf += sizeof(info); 259 len -= sizeof(info); 260 if (WARN_ON_ONCE(len < sizeof(handle))) 261 return -EFAULT; 262 263 handle.handle_type = fh->type; 264 handle.handle_bytes = fh_len; 265 if (copy_to_user(buf, &handle, sizeof(handle))) 266 return -EFAULT; 267 268 buf += sizeof(handle); 269 len -= sizeof(handle); 270 if (WARN_ON_ONCE(len < fh_len)) 271 return -EFAULT; 272 273 /* 274 * For an inline fh and inline file name, copy through stack to exclude 275 * the copy from usercopy hardening protections. 276 */ 277 data = fanotify_fid_fh(fid, fh_len); 278 if (fh_len <= FANOTIFY_INLINE_FH_LEN) { 279 memcpy(bounce, data, fh_len); 280 data = bounce; 281 } 282 if (copy_to_user(buf, data, fh_len)) 283 return -EFAULT; 284 285 buf += fh_len; 286 len -= fh_len; 287 288 if (name_len) { 289 /* Copy the filename with terminating null */ 290 name_len++; 291 if (WARN_ON_ONCE(len < name_len)) 292 return -EFAULT; 293 294 data = name->name; 295 if (name_len <= DNAME_INLINE_LEN) { 296 memcpy(bounce, data, name_len); 297 data = bounce; 298 } 299 if (copy_to_user(buf, data, name_len)) 300 return -EFAULT; 301 302 buf += name_len; 303 len -= name_len; 304 } 305 306 /* Pad with 0's */ 307 WARN_ON_ONCE(len < 0 || len >= FANOTIFY_EVENT_ALIGN); 308 if (len > 0 && clear_user(buf, len)) 309 return -EFAULT; 310 311 return info_len; 312 } 313 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip