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

Attachment: .config.gz
Description: application/gzip

Reply via email to