lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Sat, 1 Oct 2022 07:12:46 +0800
From:   kernel test robot <lkp@...el.com>
To:     David Vernet <void@...ifault.com>, ast@...nel.org,
        daniel@...earbox.net, andrii@...nel.org, martin.lau@...ux.dev
Cc:     kbuild-all@...ts.01.org, kernel-team@...com, bpf@...r.kernel.org,
        linux-kernel@...r.kernel.org, yhs@...com, song@...nel.org,
        john.fastabend@...il.com, kpsingh@...nel.org, sdf@...gle.com,
        haoluo@...gle.com, jolsa@...nel.org, tj@...nel.org,
        memxor@...il.com
Subject: Re: [PATCH 1/2] bpf: Add kfuncs for storing struct task_struct * as
 a kptr

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 <lkp@...el.com>

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

View attachment "config" of type "text/plain" (279398 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ