Re: [PATCH v4] pidfd: add ioctl to retrieve pid info

From: kernel test robot
Date: Sat Oct 05 2024 - 18:26:38 EST


Hi,

kernel test robot noticed the following build errors:

[auto build test ERROR on 9852d85ec9d492ebef56dc5f229416c925758edc]

url: https://github.com/intel-lab-lkp/linux/commits/luca-boccassi-gmail-com/pidfd-add-ioctl-to-retrieve-pid-info/20241005-041639
base: 9852d85ec9d492ebef56dc5f229416c925758edc
patch link: https://lore.kernel.org/r/20241004194751.215507-1-luca.boccassi%40gmail.com
patch subject: [PATCH v4] pidfd: add ioctl to retrieve pid info
config: arm-randconfig-002-20241006 (https://download.01.org/0day-ci/archive/20241006/202410060624.Z84m82vK-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241006/202410060624.Z84m82vK-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410060624.Z84m82vK-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> fs/pidfs.c:156:25: error: implicit declaration of function 'task_css_check' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
struct cgroup *cgrp = task_css_check(task, pids_cgrp_id, 1)->cgroup;
^
fs/pidfs.c:156:64: error: member reference type 'int' is not a pointer
struct cgroup *cgrp = task_css_check(task, pids_cgrp_id, 1)->cgroup;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
fs/pidfs.c:156:46: error: use of undeclared identifier 'pids_cgrp_id'
struct cgroup *cgrp = task_css_check(task, pids_cgrp_id, 1)->cgroup;
^
3 errors generated.

Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for GET_FREE_REGION
Depends on [n]: SPARSEMEM [=n]
Selected by [m]:
- RESOURCE_KUNIT_TEST [=m] && RUNTIME_TESTING_MENU [=y] && KUNIT [=m]


vim +/task_css_check +156 fs/pidfs.c

117
118 static long pidfd_info(struct task_struct *task, unsigned int cmd, unsigned long arg)
119 {
120 struct pidfd_info __user *uinfo = (struct pidfd_info __user *)arg;
121 size_t usize = _IOC_SIZE(cmd);
122 struct pidfd_info kinfo = {};
123 struct user_namespace *user_ns;
124 const struct cred *c;
125 __u64 request_mask;
126
127 if (!uinfo)
128 return -EINVAL;
129 if (usize < sizeof(struct pidfd_info))
130 return -EINVAL; /* First version, no smaller struct possible */
131
132 if (copy_from_user(&request_mask, &uinfo->request_mask, sizeof(request_mask)))
133 return -EFAULT;
134
135 c = get_task_cred(task);
136 if (!c)
137 return -ESRCH;
138
139 /* Unconditionally return identifiers and credentials, the rest only on request */
140
141 kinfo.pid = task_pid_vnr(task);
142 kinfo.tgid = task_tgid_vnr(task);
143 kinfo.ppid = task_ppid_nr_ns(task, task_active_pid_ns(task));
144
145 user_ns = current_user_ns();
146 kinfo.ruid = from_kuid_munged(user_ns, c->uid);
147 kinfo.rgid = from_kgid_munged(user_ns, c->gid);
148 kinfo.euid = from_kuid_munged(user_ns, c->euid);
149 kinfo.egid = from_kgid_munged(user_ns, c->egid);
150 kinfo.suid = from_kuid_munged(user_ns, c->suid);
151 kinfo.sgid = from_kgid_munged(user_ns, c->sgid);
152 kinfo.fsuid = from_kuid_munged(user_ns, c->fsuid);
153 kinfo.fsgid = from_kgid_munged(user_ns, c->fsgid);
154
155 if (request_mask & PIDFD_INFO_CGROUPID) {
> 156 struct cgroup *cgrp = task_css_check(task, pids_cgrp_id, 1)->cgroup;
157 if (!cgrp)
158 return -ENODEV;
159
160 kinfo.cgroupid = cgroup_id(cgrp);
161 kinfo.result_mask |= PIDFD_INFO_CGROUPID;
162 }
163
164 /*
165 * If userspace and the kernel have the same struct size it can just
166 * be copied. If userspace provides an older struct, only the bits that
167 * userspace knows about will be copied. If userspace provides a new
168 * struct, only the bits that the kernel knows about will be copied and
169 * the size value will be set to the size the kernel knows about.
170 */
171 if (copy_to_user(uinfo, &kinfo, min(usize, sizeof(kinfo))))
172 return -EFAULT;
173
174 return 0;
175 }
176

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki