All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [for-next][PATCH 6/7] eventfs: Remove eventfs_file and just use eventfs_inode
Date: Thu, 5 Oct 2023 23:06:06 +0800	[thread overview]
Message-ID: <202310052216.4SgqasWo-lkp@intel.com> (raw)
In-Reply-To: <20231005015351.632548413@goodmis.org>

Hi Steven,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.6-rc4 next-20231005]
[cannot apply to shuah-kselftest/next shuah-kselftest/fixes]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Steven-Rostedt/tracing-Expand-all-ring-buffers-individually/20231005-095439
base:   linus/master
patch link:    https://lore.kernel.org/r/20231005015351.632548413%40goodmis.org
patch subject: [for-next][PATCH 6/7] eventfs: Remove eventfs_file and just use eventfs_inode
config: loongarch-allyesconfig (https://download.01.org/0day-ci/archive/20231005/202310052216.4SgqasWo-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231005/202310052216.4SgqasWo-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310052216.4SgqasWo-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/tracefs/event_inode.c:909:6: warning: no previous prototype for 'eventfs_remove_events_dir' [-Wmissing-prototypes]
     909 | void eventfs_remove_events_dir(struct dentry *dentry)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
--
>> fs/tracefs/event_inode.c:805: warning: Function parameter or member 'head' not described in 'eventfs_remove_rec'
>> fs/tracefs/event_inode.c:805: warning: Function parameter or member 'level' not described in 'eventfs_remove_rec'
>> fs/tracefs/event_inode.c:864: warning: expecting prototype for eventfs_remove(). Prototype was for eventfs_remove_dir() instead
--
>> kernel/trace/trace_events.c:2285:5: warning: no previous prototype for 'system_callback' [-Wmissing-prototypes]
    2285 | int system_callback(const char *name, umode_t *mode, void **data,
         |     ^~~~~~~~~~~~~~~


vim +/eventfs_remove_events_dir +909 fs/tracefs/event_inode.c

5bdcd5f5331a27 Ajay Kaher              2023-07-28  796  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  797  /**
5bdcd5f5331a27 Ajay Kaher              2023-07-28  798   * eventfs_remove_rec - remove eventfs dir or file from list
6fa46da887d339 Steven Rostedt (Google  2023-10-04  799)  * @ei: eventfs_inode to be removed.
5bdcd5f5331a27 Ajay Kaher              2023-07-28  800   *
6fa46da887d339 Steven Rostedt (Google  2023-10-04  801)  * This function recursively remove eventfs_inode which
6fa46da887d339 Steven Rostedt (Google  2023-10-04  802)  * contains info of file or dir.
5bdcd5f5331a27 Ajay Kaher              2023-07-28  803   */
6fa46da887d339 Steven Rostedt (Google  2023-10-04  804) static void eventfs_remove_rec(struct eventfs_inode *ei, struct list_head *head, int level)
5bdcd5f5331a27 Ajay Kaher              2023-07-28 @805  {
6fa46da887d339 Steven Rostedt (Google  2023-10-04  806) 	struct eventfs_inode *ei_child;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  807  
6fa46da887d339 Steven Rostedt (Google  2023-10-04  808) 	if (!ei)
5bdcd5f5331a27 Ajay Kaher              2023-07-28  809  		return;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  810  	/*
5bdcd5f5331a27 Ajay Kaher              2023-07-28  811  	 * Check recursion depth. It should never be greater than 3:
5bdcd5f5331a27 Ajay Kaher              2023-07-28  812  	 * 0 - events/
5bdcd5f5331a27 Ajay Kaher              2023-07-28  813  	 * 1 - events/group/
5bdcd5f5331a27 Ajay Kaher              2023-07-28  814  	 * 2 - events/group/event/
5bdcd5f5331a27 Ajay Kaher              2023-07-28  815  	 * 3 - events/group/event/file
5bdcd5f5331a27 Ajay Kaher              2023-07-28  816  	 */
5bdcd5f5331a27 Ajay Kaher              2023-07-28  817  	if (WARN_ON_ONCE(level > 3))
5bdcd5f5331a27 Ajay Kaher              2023-07-28  818  		return;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  819  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  820  	/* search for nested folders or files */
6fa46da887d339 Steven Rostedt (Google  2023-10-04  821) 	list_for_each_entry_srcu(ei_child, &ei->children, list,
5bdcd5f5331a27 Ajay Kaher              2023-07-28  822  				 lockdep_is_held(&eventfs_mutex)) {
6fa46da887d339 Steven Rostedt (Google  2023-10-04  823) 		eventfs_remove_rec(ei_child, head, level + 1);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  824  	}
5bdcd5f5331a27 Ajay Kaher              2023-07-28  825  
6fa46da887d339 Steven Rostedt (Google  2023-10-04  826) 	list_del_rcu(&ei->list);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  827) 	list_add_tail(&ei->del_list, head);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  828  }
5bdcd5f5331a27 Ajay Kaher              2023-07-28  829  
6fa46da887d339 Steven Rostedt (Google  2023-10-04  830) static void unhook_dentry(struct dentry **dentry, struct dentry **list)
5bdcd5f5331a27 Ajay Kaher              2023-07-28  831  {
6fa46da887d339 Steven Rostedt (Google  2023-10-04  832) 	if (*dentry) {
6fa46da887d339 Steven Rostedt (Google  2023-10-04  833) 		unsigned long ptr = (unsigned long)*list;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  834  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  835  		/* Keep the dentry from being freed yet */
6fa46da887d339 Steven Rostedt (Google  2023-10-04  836) 		dget(*dentry);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  837  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  838  		/*
5bdcd5f5331a27 Ajay Kaher              2023-07-28  839  		 * Paranoid: The dget() above should prevent the dentry
6fa46da887d339 Steven Rostedt (Google  2023-10-04  840) 		 * from being freed and calling eventfs_set_ei_status_free().
5bdcd5f5331a27 Ajay Kaher              2023-07-28  841  		 * But just in case, set the link list LSB pointer to 1
6fa46da887d339 Steven Rostedt (Google  2023-10-04  842) 		 * and have eventfs_set_ei_status_free() check that to
5bdcd5f5331a27 Ajay Kaher              2023-07-28  843  		 * make sure that if it does happen, it will not think
6fa46da887d339 Steven Rostedt (Google  2023-10-04  844) 		 * the d_fsdata is an eventfs_inode.
5bdcd5f5331a27 Ajay Kaher              2023-07-28  845  		 *
6fa46da887d339 Steven Rostedt (Google  2023-10-04  846) 		 * For this to work, no eventfs_inode should be allocated
5bdcd5f5331a27 Ajay Kaher              2023-07-28  847  		 * on a odd space, as the ef should always be allocated
5bdcd5f5331a27 Ajay Kaher              2023-07-28  848  		 * to be at least word aligned. Check for that too.
5bdcd5f5331a27 Ajay Kaher              2023-07-28  849  		 */
5bdcd5f5331a27 Ajay Kaher              2023-07-28  850  		WARN_ON_ONCE(ptr & 1);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  851  
6fa46da887d339 Steven Rostedt (Google  2023-10-04  852) 		(*dentry)->d_fsdata = (void *)(ptr | 1);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  853) 		*list = *dentry;
6fa46da887d339 Steven Rostedt (Google  2023-10-04  854) 		*dentry = NULL;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  855  	}
6fa46da887d339 Steven Rostedt (Google  2023-10-04  856) }
6fa46da887d339 Steven Rostedt (Google  2023-10-04  857) /**
6fa46da887d339 Steven Rostedt (Google  2023-10-04  858)  * eventfs_remove - remove eventfs dir or file from list
6fa46da887d339 Steven Rostedt (Google  2023-10-04  859)  * @ei: eventfs_inode to be removed.
6fa46da887d339 Steven Rostedt (Google  2023-10-04  860)  *
6fa46da887d339 Steven Rostedt (Google  2023-10-04  861)  * This function acquire the eventfs_mutex lock and call eventfs_remove_rec()
6fa46da887d339 Steven Rostedt (Google  2023-10-04  862)  */
6fa46da887d339 Steven Rostedt (Google  2023-10-04  863) void eventfs_remove_dir(struct eventfs_inode *ei)
6fa46da887d339 Steven Rostedt (Google  2023-10-04 @864) {
6fa46da887d339 Steven Rostedt (Google  2023-10-04  865) 	struct eventfs_inode *tmp;
6fa46da887d339 Steven Rostedt (Google  2023-10-04  866) 	LIST_HEAD(ei_del_list);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  867) 	struct dentry *dentry_list = NULL;
6fa46da887d339 Steven Rostedt (Google  2023-10-04  868) 	struct dentry *dentry;
6fa46da887d339 Steven Rostedt (Google  2023-10-04  869) 	int i;
6fa46da887d339 Steven Rostedt (Google  2023-10-04  870) 
6fa46da887d339 Steven Rostedt (Google  2023-10-04  871) 	if (!ei)
6fa46da887d339 Steven Rostedt (Google  2023-10-04  872) 		return;
6fa46da887d339 Steven Rostedt (Google  2023-10-04  873) 
6fa46da887d339 Steven Rostedt (Google  2023-10-04  874) 	mutex_lock(&eventfs_mutex);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  875) 	eventfs_remove_rec(ei, &ei_del_list, 0);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  876) 
6fa46da887d339 Steven Rostedt (Google  2023-10-04  877) 	list_for_each_entry_safe(ei, tmp, &ei_del_list, del_list) {
6fa46da887d339 Steven Rostedt (Google  2023-10-04  878) 		for (i = 0; i < ei->nr_entries; i++)
6fa46da887d339 Steven Rostedt (Google  2023-10-04  879) 			unhook_dentry(&ei->d_children[i], &dentry_list);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  880) 		unhook_dentry(&ei->dentry, &dentry_list);
6fa46da887d339 Steven Rostedt (Google  2023-10-04  881) 		call_srcu(&eventfs_srcu, &ei->rcu, free_ei);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  882  	}
5bdcd5f5331a27 Ajay Kaher              2023-07-28  883  	mutex_unlock(&eventfs_mutex);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  884  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  885  	while (dentry_list) {
5bdcd5f5331a27 Ajay Kaher              2023-07-28  886  		unsigned long ptr;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  887  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  888  		dentry = dentry_list;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  889  		ptr = (unsigned long)dentry->d_fsdata & ~1UL;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  890  		dentry_list = (struct dentry *)ptr;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  891  		dentry->d_fsdata = NULL;
5bdcd5f5331a27 Ajay Kaher              2023-07-28  892  		d_invalidate(dentry);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  893  		mutex_lock(&eventfs_mutex);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  894  		/* dentry should now have at least a single reference */
5bdcd5f5331a27 Ajay Kaher              2023-07-28  895  		WARN_ONCE((int)d_count(dentry) < 1,
6fa46da887d339 Steven Rostedt (Google  2023-10-04  896) 			  "dentry %px (%s) less than one reference (%d) after invalidate\n",
6fa46da887d339 Steven Rostedt (Google  2023-10-04  897) 			  dentry, dentry->d_name.name, d_count(dentry));
5bdcd5f5331a27 Ajay Kaher              2023-07-28  898  		mutex_unlock(&eventfs_mutex);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  899  		dput(dentry);
5bdcd5f5331a27 Ajay Kaher              2023-07-28  900  	}
5bdcd5f5331a27 Ajay Kaher              2023-07-28  901  }
5bdcd5f5331a27 Ajay Kaher              2023-07-28  902  
5bdcd5f5331a27 Ajay Kaher              2023-07-28  903  /**
5bdcd5f5331a27 Ajay Kaher              2023-07-28  904   * eventfs_remove_events_dir - remove eventfs dir or file from list
5bdcd5f5331a27 Ajay Kaher              2023-07-28  905   * @dentry: events's dentry to be removed.
5bdcd5f5331a27 Ajay Kaher              2023-07-28  906   *
5bdcd5f5331a27 Ajay Kaher              2023-07-28  907   * This function remove events main directory
5bdcd5f5331a27 Ajay Kaher              2023-07-28  908   */
5bdcd5f5331a27 Ajay Kaher              2023-07-28 @909  void eventfs_remove_events_dir(struct dentry *dentry)

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2023-10-05 15:07 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-05  1:53 [for-next][PATCH 0/7] tracing: Updates for 6.7 Steven Rostedt
2023-10-05  1:53 ` [for-next][PATCH 1/7] tracing: Expand all ring buffers individually Steven Rostedt
2023-10-05  1:53 ` [for-next][PATCH 2/7] ring_buffer: Use try_cmpxchg instead of cmpxchg in rb_insert_pages Steven Rostedt
2023-10-05  1:53 ` [for-next][PATCH 3/7] tracing/user_events: Allow events to persist for perfmon_capable users Steven Rostedt
2023-10-05  1:53 ` [for-next][PATCH 4/7] selftests/user_events: Test persist flag cases Steven Rostedt
2023-10-05  1:53 ` [for-next][PATCH 5/7] tracing/user_events: Document persist event flags Steven Rostedt
2023-10-05  1:53 ` [for-next][PATCH 6/7] eventfs: Remove eventfs_file and just use eventfs_inode Steven Rostedt
2023-10-05 15:06   ` kernel test robot [this message]
2023-10-05  1:53 ` [for-next][PATCH 7/7] tracing/selftests: Update kprobe args char/string to match new functions Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202310052216.4SgqasWo-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.