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] [thread-next>] [day] [month] [year] [list]
Message-ID: <201606300207.qRpR8HZL%fengguang.wu@intel.com>
Date:	Thu, 30 Jun 2016 02:51:20 +0800
From:	kbuild test robot <lkp@...el.com>
To:	Oleg Nesterov <oleg@...hat.com>
Cc:	kbuild-all@...org, Andy Lutomirski <luto@...capital.net>,
	Andy Lutomirski <luto@...nel.org>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	Peter Zijlstra <peterz@...radead.org>,
	Tejun Heo <tj@...nel.org>, LKP <lkp@...org>,
	LKML <linux-kernel@...r.kernel.org>,
	kernel test robot <xiaolong.ye@...el.com>
Subject: Re: [PATCH] kthread: to_live_kthread() needs try_get_task_stack()

Hi,

[auto build test WARNING on linus/master]
[also build test WARNING on v4.7-rc5 next-20160629]
[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/Oleg-Nesterov/kthread-to_live_kthread-needs-try_get_task_stack/20160630-020824
config: x86_64-randconfig-s3-06300221 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/uapi/linux/capability.h:16,
                    from include/linux/capability.h:15,
                    from include/linux/sched.h:15,
                    from kernel/kthread.c:8:
   kernel/kthread.c: In function 'to_live_kthread':
   kernel/kthread.c:67:23: error: implicit declaration of function 'try_get_task_stack' [-Werror=implicit-function-declaration]
     if (likely(vfork) && try_get_task_stack(k))
                          ^
   include/linux/compiler.h:151:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> kernel/kthread.c:67:2: note: in expansion of macro 'if'
     if (likely(vfork) && try_get_task_stack(k))
     ^~
   kernel/kthread.c: In function 'kthread_unpark':
   kernel/kthread.c:430:3: error: implicit declaration of function 'put_task_stack' [-Werror=implicit-function-declaration]
      put_task_stack(k);
      ^~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/if +67 kernel/kthread.c

     2	 *   Copyright (C) 2004 IBM Corporation, Rusty Russell.
     3	 *
     4	 * Creation is done via kthreadd, so that we get a clean environment
     5	 * even if we're invoked from userspace (think modprobe, hotplug cpu,
     6	 * etc.).
     7	 */
   > 8	#include <linux/sched.h>
     9	#include <linux/kthread.h>
    10	#include <linux/completion.h>
    11	#include <linux/err.h>
    12	#include <linux/cpuset.h>
    13	#include <linux/unistd.h>
    14	#include <linux/file.h>
    15	#include <linux/export.h>
    16	#include <linux/mutex.h>
    17	#include <linux/slab.h>
    18	#include <linux/freezer.h>
    19	#include <linux/ptrace.h>
    20	#include <linux/uaccess.h>
    21	#include <trace/events/sched.h>
    22	
    23	static DEFINE_SPINLOCK(kthread_create_lock);
    24	static LIST_HEAD(kthread_create_list);
    25	struct task_struct *kthreadd_task;
    26	
    27	struct kthread_create_info
    28	{
    29		/* Information passed to kthread() from kthreadd. */
    30		int (*threadfn)(void *data);
    31		void *data;
    32		int node;
    33	
    34		/* Result passed back to kthread_create() from kthreadd. */
    35		struct task_struct *result;
    36		struct completion *done;
    37	
    38		struct list_head list;
    39	};
    40	
    41	struct kthread {
    42		unsigned long flags;
    43		unsigned int cpu;
    44		void *data;
    45		struct completion parked;
    46		struct completion exited;
    47	};
    48	
    49	enum KTHREAD_BITS {
    50		KTHREAD_IS_PER_CPU = 0,
    51		KTHREAD_SHOULD_STOP,
    52		KTHREAD_SHOULD_PARK,
    53		KTHREAD_IS_PARKED,
    54	};
    55	
    56	#define __to_kthread(vfork)	\
    57		container_of(vfork, struct kthread, exited)
    58	
    59	static inline struct kthread *to_kthread(struct task_struct *k)
    60	{
    61		return __to_kthread(k->vfork_done);
    62	}
    63	
    64	static struct kthread *to_live_kthread(struct task_struct *k)
    65	{
    66		struct completion *vfork = ACCESS_ONCE(k->vfork_done);
  > 67		if (likely(vfork) && try_get_task_stack(k))
    68			return __to_kthread(vfork);
    69		return NULL;
    70	}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Download attachment ".config.gz" of type "application/octet-stream" (23018 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ