Hi Amir, I love your patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v5.0-rc1 next-20190110] [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/Amir-Goldstein/fanotify-add-support-for-more-event-types/20190111-090241 config: mips-loongson1c_defconfig (attached as .config) compiler: mipsel-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 GCC_VERSION=7.2.0 make.cross ARCH=mips All warnings (new ones prefixed by >>): In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs/notify/mark.c:76: fs/notify/mark.c: In function 'fsnotify_add_mark_list': >> include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ >> fs/notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs/notify/mark.c:587:65: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs/notify/mark.c:76: include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ >> fs/notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs/notify/mark.c:587:68: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs/notify/mark.c:76: include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ >> fs/notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs/notify/mark.c:587:74: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs/notify/mark.c:76: include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ >> fs/notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs/notify/mark.c:587:77: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx -- In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs//notify/mark.c:76: fs//notify/mark.c: In function 'fsnotify_add_mark_list': >> include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ fs//notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs//notify/mark.c:587:65: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs//notify/mark.c:76: include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ fs//notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs//notify/mark.c:587:68: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs//notify/mark.c:76: include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ fs//notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs//notify/mark.c:587:74: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx In file included from include/linux/kernel.h:14:0, from include/linux/list.h:9, from include/linux/wait.h:7, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs//notify/mark.c:76: include/linux/kern_levels.h:5:18: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'long int' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/printk.h:424:10: note: in definition of macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~ include/linux/kern_levels.h:12:22: note: in expansion of macro 'KERN_SOH' #define KERN_WARNING KERN_SOH "4" /* warning conditions */ ^~~~~~~~ include/linux/printk.h:440:21: note: in expansion of macro 'KERN_WARNING' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~ fs//notify/mark.c:587:3: note: in expansion of macro 'pr_warn_ratelimited' pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ^~~~~~~~~~~~~~~~~~~ fs//notify/mark.c:587:77: note: format string is defined here pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", ~^ %lx vim +/pr_warn_ratelimited +587 fs/notify/mark.c 545 546 /* 547 * Add mark into proper place in given list of marks. These marks may be used 548 * for the fsnotify backend to determine which event types should be delivered 549 * to which group and for which inodes. These marks are ordered according to 550 * priority, highest number first, and then by the group's location in memory. 551 */ 552 static int fsnotify_add_mark_list(struct fsnotify_mark *mark, 553 fsnotify_connp_t *connp, unsigned int type, 554 int allow_dups, __kernel_fsid_t *fsid) 555 { 556 struct fsnotify_mark *lmark, *last = NULL; 557 struct fsnotify_mark_connector *conn; 558 int cmp; 559 int err = 0; 560 561 if (WARN_ON(!fsnotify_valid_obj_type(type))) 562 return -EINVAL; 563 564 /* Backend is expected to check for zero fsid (e.g. tmpfs) */ 565 if (fsid && WARN_ON_ONCE(!fsid->val[0] && !fsid->val[1])) 566 return -ENODEV; 567 568 restart: 569 spin_lock(&mark->lock); 570 conn = fsnotify_grab_connector(connp); 571 if (!conn) { 572 spin_unlock(&mark->lock); 573 err = fsnotify_attach_connector_to_object(connp, type, fsid); 574 if (err) 575 return err; 576 goto restart; 577 } else if (fsid && (conn->fsid.val[0] || conn->fsid.val[1]) && 578 (fsid->val[0] != conn->fsid.val[0] || 579 fsid->val[1] != conn->fsid.val[1])) { 580 /* 581 * Backend is expected to check for non uniform fsid 582 * (e.g. btrfs), but maybe we missed something? 583 * Only allow setting conn->fsid once to non zero fsid. 584 * inotify and non-fid fanotify groups do not set nor test 585 * conn->fsid. 586 */ > 587 pr_warn_ratelimited("%s: fsid mismatch on object of type %u: %x.%x != %x.%x\n", 588 __func__, conn->type, 589 fsid->val[0], fsid->val[1], 590 conn->fsid.val[0], conn->fsid.val[1]); 591 err = -EXDEV; 592 goto out_err; 593 } 594 595 /* is mark the first mark? */ 596 if (hlist_empty(&conn->list)) { 597 hlist_add_head_rcu(&mark->obj_list, &conn->list); 598 goto added; 599 } 600 601 /* should mark be in the middle of the current list? */ 602 hlist_for_each_entry(lmark, &conn->list, obj_list) { 603 last = lmark; 604 605 if ((lmark->group == mark->group) && 606 (lmark->flags & FSNOTIFY_MARK_FLAG_ATTACHED) && 607 !allow_dups) { 608 err = -EEXIST; 609 goto out_err; 610 } 611 612 cmp = fsnotify_compare_groups(lmark->group, mark->group); 613 if (cmp >= 0) { 614 hlist_add_before_rcu(&mark->obj_list, &lmark->obj_list); 615 goto added; 616 } 617 } 618 619 BUG_ON(last == NULL); 620 /* mark should be the last entry. last is the current last entry */ 621 hlist_add_behind_rcu(&mark->obj_list, &last->obj_list); 622 added: 623 mark->connector = conn; 624 out_err: 625 spin_unlock(&conn->lock); 626 spin_unlock(&mark->lock); 627 return err; 628 } 629 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation