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
next prev parent 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.