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: <201702190734.I8gbYj8k%fengguang.wu@intel.com>
Date:   Sun, 19 Feb 2017 07:34:26 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Alexey Gladkov <gladkov.alexey@...il.com>
Cc:     kbuild-all@...org,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        "Kirill A. Shutemov" <kirill@...temov.name>,
        Vasiliy Kulikov <segoon@...nwall.com>,
        Al Viro <viro@...iv.linux.org.uk>,
        "Eric W. Biederman" <ebiederm@...ssion.com>,
        Oleg Nesterov <oleg@...hat.com>,
        Pavel Emelyanov <xemul@...allels.com>
Subject: Re: [PATCH] Add pidfs filesystem

Hi Alexey,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.10-rc8 next-20170217]
[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/Alexey-Gladkov/Add-pidfs-filesystem/20170219-070129
config: x86_64-randconfig-x001-201708 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   fs/proc/root.c: In function 'proc_kill_sb':
>> fs/proc/root.c:107:9: error: 'struct pid_namespace' has no member named 'pidfs_self'; did you mean 'proc_self'?
      if (ns->pidfs_self)
            ^~
   fs/proc/root.c:108:11: error: 'struct pid_namespace' has no member named 'pidfs_self'; did you mean 'proc_self'?
       dput(ns->pidfs_self);
              ^~
>> fs/proc/root.c:110:9: error: 'struct pid_namespace' has no member named 'pidfs_thread_self'; did you mean 'proc_thread_self'?
      if (ns->pidfs_thread_self)
            ^~
   fs/proc/root.c:111:11: error: 'struct pid_namespace' has no member named 'pidfs_thread_self'; did you mean 'proc_thread_self'?
       dput(ns->pidfs_thread_self);
              ^~
   fs/proc/root.c: In function 'pid_ns_prepare_proc':
>> fs/proc/root.c:282:5: error: 'struct pid_namespace' has no member named 'pidfs_mnt'; did you mean 'proc_mnt'?
      ns->pidfs_mnt = mnt;
        ^~
   fs/proc/root.c: In function 'pid_ns_release_proc':
   fs/proc/root.c:292:18: error: 'struct pid_namespace' has no member named 'pidfs_mnt'; did you mean 'proc_mnt'?
      kern_unmount(ns->pidfs_mnt);
                     ^~
--
   fs/proc/self.c: In function 'proc_setup_self':
>> fs/proc/self.c:66:5: error: 'struct pid_namespace' has no member named 'pidfs_self'; did you mean 'proc_self'?
      ns->pidfs_self = self;
        ^~
--
   fs/proc/thread_self.c: In function 'proc_setup_thread_self':
>> fs/proc/thread_self.c:67:5: error: 'struct pid_namespace' has no member named 'pidfs_thread_self'; did you mean 'proc_thread_self'?
      ns->pidfs_thread_self = thread_self;
        ^~

vim +107 fs/proc/root.c

   101	{
   102		struct pid_namespace *ns;
   103	
   104		ns = (struct pid_namespace *)sb->s_fs_info;
   105	
   106		if (IS_ENABLED(CONFIG_PROC_PIDFS) && sb->s_type == &pidfs_fs_type) {
 > 107			if (ns->pidfs_self)
   108				dput(ns->pidfs_self);
   109	
 > 110			if (ns->pidfs_thread_self)
   111				dput(ns->pidfs_thread_self);
   112		} else {
   113			if (ns->proc_self)
   114				dput(ns->proc_self);
   115	
   116			if (ns->proc_thread_self)
   117				dput(ns->proc_thread_self);
   118		}
   119	
   120		kill_anon_super(sb);
   121		put_pid_ns(ns);
   122	}
   123	
   124	static struct file_system_type proc_fs_type = {
   125		.name		= "proc",
   126		.mount		= proc_mount,
   127		.kill_sb	= proc_kill_sb,
   128		.fs_flags	= FS_USERNS_MOUNT,
   129	};
   130	
   131	struct file_system_type pidfs_fs_type = {
   132		.name		= "pidfs",
   133		.mount		= proc_mount,
   134		.kill_sb	= proc_kill_sb,
   135		.fs_flags	= FS_USERNS_MOUNT,
   136	};
   137	
   138	void __init proc_root_init(void)
   139	{
   140		int err;
   141	
   142		proc_init_inodecache();
   143		set_proc_pid_nlink();
   144		err = register_filesystem(&proc_fs_type);
   145		if (err)
   146			return;
   147	
   148		err = register_filesystem(&pidfs_fs_type);
   149		if (err)
   150			return;
   151	
   152		proc_self_init();
   153		proc_thread_self_init();
   154		proc_symlink("mounts", NULL, "self/mounts");
   155	
   156		proc_net_init();
   157	
   158	#ifdef CONFIG_SYSVIPC
   159		proc_mkdir("sysvipc", NULL);
   160	#endif
   161		proc_mkdir("fs", NULL);
   162		proc_mkdir("driver", NULL);
   163		proc_create_mount_point("fs/nfsd"); /* somewhere for the nfsd filesystem to be mounted */
   164	#if defined(CONFIG_SUN_OPENPROMFS) || defined(CONFIG_SUN_OPENPROMFS_MODULE)
   165		/* just give it a mountpoint */
   166		proc_create_mount_point("openprom");
   167	#endif
   168		proc_tty_init();
   169		proc_mkdir("bus", NULL);
   170		proc_sys_init();
   171	}
   172	
   173	static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
   174	{
   175		generic_fillattr(d_inode(dentry), stat);
   176		stat->nlink = proc_root.nlink + nr_processes();
   177		return 0;
   178	}
   179	
   180	static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry, unsigned int flags)
   181	{
   182		if (!proc_pid_lookup(dir, dentry, flags))
   183			return NULL;
   184		
   185		return proc_lookup(dir, dentry, flags);
   186	}
   187	
   188	static int proc_root_readdir(struct file *file, struct dir_context *ctx)
   189	{
   190		if (ctx->pos < FIRST_PROCESS_ENTRY) {
   191			int error = proc_readdir(file, ctx);
   192			if (unlikely(error <= 0))
   193				return error;
   194			ctx->pos = FIRST_PROCESS_ENTRY;
   195		}
   196	
   197		return proc_pid_readdir(file, ctx);
   198	}
   199	
   200	static int pidfs_root_readdir(struct file *file, struct dir_context *ctx)
   201	{
   202		if (ctx->pos < FIRST_PROCESS_ENTRY)
   203			ctx->pos = FIRST_PROCESS_ENTRY;
   204	
   205		return proc_pid_readdir(file, ctx);
   206	}
   207	
   208	/*
   209	 * The root /proc directory is special, as it has the
   210	 * <pid> directories. Thus we don't use the generic
   211	 * directory handling functions for that..
   212	 */
   213	static const struct file_operations proc_root_operations = {
   214		.read		 = generic_read_dir,
   215		.iterate_shared	 = proc_root_readdir,
   216		.llseek		= generic_file_llseek,
   217	};
   218	
   219	static const struct file_operations pidfs_root_operations = {
   220		.read		 = generic_read_dir,
   221		.iterate_shared	 = pidfs_root_readdir,
   222		.llseek		= generic_file_llseek,
   223	};
   224	
   225	/*
   226	 * proc root can do almost nothing..
   227	 */
   228	static const struct inode_operations proc_root_inode_operations = {
   229		.lookup		= proc_root_lookup,
   230		.getattr	= proc_root_getattr,
   231	};
   232	
   233	static const struct inode_operations pidfs_root_inode_operations = {
   234		.lookup		= proc_pid_lookup,
   235		.getattr	= proc_root_getattr,
   236	};
   237	
   238	/*
   239	 * This is the root "inode" in the /proc tree..
   240	 */
   241	struct proc_dir_entry proc_root = {
   242		.low_ino	= PROC_ROOT_INO, 
   243		.namelen	= 5, 
   244		.mode		= S_IFDIR | S_IRUGO | S_IXUGO, 
   245		.nlink		= 2, 
   246		.count		= ATOMIC_INIT(1),
   247		.proc_iops	= &proc_root_inode_operations, 
   248		.proc_fops	= &proc_root_operations,
   249		.parent		= &proc_root,
   250		.subdir		= RB_ROOT,
   251		.name		= "/proc",
   252	};
   253	
   254	struct proc_dir_entry pidfs_root = {
   255		.low_ino	= PROC_ROOT_INO,
   256		.namelen	= 6,
   257		.mode		= S_IFDIR | S_IRUGO | S_IXUGO,
   258		.nlink		= 2,
   259		.count		= ATOMIC_INIT(1),
   260		.proc_iops	= &pidfs_root_inode_operations,
   261		.proc_fops	= &pidfs_root_operations,
   262		.parent		= &pidfs_root,
   263		.subdir		= RB_ROOT,
   264		.name		= "/pidfs",
   265	};
   266	
   267	int pid_ns_prepare_proc(struct pid_namespace *ns)
   268	{
   269		struct vfsmount *mnt;
   270	
   271		mnt = kern_mount_data(&proc_fs_type, ns);
   272		if (IS_ERR(mnt))
   273			return PTR_ERR(mnt);
   274	
   275		ns->proc_mnt = mnt;
   276	
   277		if (IS_ENABLED(CONFIG_PROC_PIDFS)) {
   278			mnt = kern_mount_data(&pidfs_fs_type, ns);
   279			if (IS_ERR(mnt))
   280				return PTR_ERR(mnt);
   281	
 > 282			ns->pidfs_mnt = mnt;
   283		}
   284		return 0;
   285	}

---
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/gzip" (25024 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ