lkml.org 
[lkml]   [2018]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v1 2/2] signal: add procfd_signal() syscall
    On Tue, Nov 20, 2018 at 07:37:58AM +0800, kbuild test robot wrote:
    > 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))
    > ^~~~~~~~~~~~~~

    On my radar and fixed. This happens when CONFIG_PROC_FS unset.

    > 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


    \
     
     \ /
      Last update: 2018-11-20 00:46    [W:4.071 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site