Hi Christian, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.20-rc3] [cannot apply to next-20181119] [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/Christian-Brauner/proc-allow-signaling-processes-via-file-descriptors/20181120-063836 config: riscv-tinyconfig (attached as .config) compiler: riscv64-linux-gcc (GCC) 8.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.1.0 make.cross ARCH=riscv All errors (new ones prefixed by >>): kernel/signal.c: In function '__do_sys_procfd_signal': >> kernel/signal.c:3341:7: error: implicit declaration of function 'proc_is_procfd'; did you mean 'clockid_to_fd'? [-Werror=implicit-function-declaration] if (!proc_is_procfd(f.file)) ^~~~~~~~~~~~~~ clockid_to_fd cc1: some warnings being treated as errors vim +3341 kernel/signal.c 3314 3315 /** 3316 * sys_procfd_signal - send a signal to a process through a process file 3317 * descriptor 3318 * @fd: the file descriptor of the process 3319 * @sig: signal to be sent 3320 * @info: the signal info 3321 * @flags: future flags to be passed 3322 */ 3323 SYSCALL_DEFINE4(procfd_signal, int, fd, int, sig, siginfo_t __user *, info, 3324 int, flags) 3325 { 3326 int ret; 3327 struct pid *pid; 3328 kernel_siginfo_t kinfo; 3329 struct fd f; 3330 3331 /* Enforce flags be set to 0 until we add an extension. */ 3332 if (flags) 3333 return -EINVAL; 3334 3335 f = fdget_raw(fd); 3336 if (!f.file) 3337 return -EBADF; 3338 3339 ret = -EINVAL; 3340 /* Is this a process file descriptor? */ > 3341 if (!proc_is_procfd(f.file)) 3342 goto err; 3343 3344 pid = f.file->private_data; 3345 if (!pid) 3346 goto err; 3347 3348 if (info) { 3349 ret = __copy_siginfo_from_user(sig, &kinfo, info); 3350 if (unlikely(ret)) 3351 goto err; 3352 /* 3353 * Not even root can pretend to send signals from the kernel. 3354 * Nor can they impersonate a kill()/tgkill(), which adds 3355 * source info. 3356 */ 3357 ret = -EPERM; 3358 if ((kinfo.si_code >= 0 || kinfo.si_code == SI_TKILL) && 3359 (task_pid(current) != pid)) 3360 goto err; 3361 } else { 3362 prepare_kill_siginfo(sig, &kinfo); 3363 } 3364 3365 ret = kill_pid_info(sig, &kinfo, pid); 3366 3367 err: 3368 fdput(f); 3369 return ret; 3370 } 3371 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip