Re: [PATCH v5 10/17] fanotify: cache fsid in fsnotify_mark_connector

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

 



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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux