Hi David, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on bpf-next/master] [also build test WARNING on next-20220930] [cannot apply to bpf/master linus/master v6.0-rc7] [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/David-Vernet/Support-storing-struct-task_struct-objects-as-kptrs/20221001-044848 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: m68k-allyesconfig compiler: m68k-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/bcd8fc859e8153905211ff7ac025680507884bb8 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review David-Vernet/Support-storing-struct-task_struct-objects-as-kptrs/20221001-044848 git checkout bcd8fc859e8153905211ff7ac025680507884bb8 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash kernel/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> kernel/bpf/helpers.c:1720:21: warning: no previous prototype for 'bpf_task_acquire' [-Wmissing-prototypes] 1720 | struct task_struct *bpf_task_acquire(struct task_struct *p) | ^~~~~~~~~~~~~~~~ >> kernel/bpf/helpers.c:1732:21: warning: no previous prototype for 'bpf_task_kptr_get' [-Wmissing-prototypes] 1732 | struct task_struct *bpf_task_kptr_get(struct task_struct **pp) | ^~~~~~~~~~~~~~~~~ >> kernel/bpf/helpers.c:1751:22: warning: no previous prototype for 'bpf_task_release' [-Wmissing-prototypes] 1751 | __used noinline void bpf_task_release(struct task_struct *p) | ^~~~~~~~~~~~~~~~ vim +/bpf_task_acquire +1720 kernel/bpf/helpers.c 1713 1714 /** 1715 * bpf_task_acquire - Acquire a reference to a task. A task acquired by this 1716 * kfunc which is not stored in a map as a kptr, must be released by calling 1717 * bpf_task_release(). 1718 */ 1719 __used noinline > 1720 struct task_struct *bpf_task_acquire(struct task_struct *p) 1721 { 1722 refcount_inc(&p->rcu_users); 1723 return p; 1724 } 1725 1726 /** 1727 * bpf_task_kptr_get - Acquire a reference on a struct task_struct * kptr. A 1728 * task kptr acquired by this kfunc which is not stored in a map as a kptr, 1729 * must be released by calling bpf_task_release(). 1730 */ 1731 __used noinline > 1732 struct task_struct *bpf_task_kptr_get(struct task_struct **pp) 1733 { 1734 struct task_struct *p; 1735 1736 rcu_read_lock(); 1737 p = READ_ONCE(*pp); 1738 if (p && !refcount_inc_not_zero(&p->rcu_users)) 1739 p = NULL; 1740 rcu_read_unlock(); 1741 1742 return p; 1743 } 1744 1745 /** 1746 * bpf_task_release - Release the reference acquired on a struct task_struct *. 1747 * If this kfunc is invoked in an RCU read region, the task_struct is 1748 * guaranteed to not be freed until the current grace period has ended, even if 1749 * its refcount drops to 0. 1750 */ > 1751 __used noinline void bpf_task_release(struct task_struct *p) 1752 { 1753 if (!p) 1754 return; 1755 1756 put_task_struct_rcu_user(p); 1757 } 1758 -- 0-DAY CI Kernel Test Service https://01.org/lkp