Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
* 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (260 commits) usb: renesas_usbhs: fixup inconsistent return from usbhs_pkt_push() usb/isp1760: Allow to optionally trigger low-level chip reset via GPIOLIB. USB: gadget: midi: memory leak in f_midi_bind_config() USB: gadget: midi: fix range check in f_midi_out_open() QE/FHCI: fixed the CONTROL bug usb: renesas_usbhs: tidyup for smatch warnings USB: Fix USB Kconfig dependency problem on 85xx/QoirQ platforms EHCI: workaround for MosChip controller bug usb: gadget: file_storage: fix race on unloading USB: ftdi_sio.c: Use ftdi async_icount structure for TIOCMIWAIT, as in other drivers USB: ftdi_sio.c:Fill MSR fields of the ftdi async_icount structure USB: ftdi_sio.c: Fill LSR fields of the ftdi async_icount structure USB: ftdi_sio.c:Fill TX field of the ftdi async_icount structure USB: ftdi_sio.c: Fill the RX field of the ftdi async_icount structure USB: ftdi_sio.c: Basic icount infrastructure for ftdi_sio usb/isp1760: Let OF bindings depend on general CONFIG_OF instead of PPC_OF . USB: ftdi_sio: Support TI/Luminary Micro Stellaris BD-ICDI Board USB: Fix runtime wakeup on OHCI xHCI/USB: Make xHCI driver have a BOS descriptor. usb: gadget: add new usb gadget for ACM and mass storage ...
This commit is contained in:
@@ -1344,13 +1344,24 @@ int kill_proc_info(int sig, struct siginfo *info, pid_t pid)
|
||||
return error;
|
||||
}
|
||||
|
||||
static int kill_as_cred_perm(const struct cred *cred,
|
||||
struct task_struct *target)
|
||||
{
|
||||
const struct cred *pcred = __task_cred(target);
|
||||
if (cred->user_ns != pcred->user_ns)
|
||||
return 0;
|
||||
if (cred->euid != pcred->suid && cred->euid != pcred->uid &&
|
||||
cred->uid != pcred->suid && cred->uid != pcred->uid)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* like kill_pid_info(), but doesn't use uid/euid of "current" */
|
||||
int kill_pid_info_as_uid(int sig, struct siginfo *info, struct pid *pid,
|
||||
uid_t uid, uid_t euid, u32 secid)
|
||||
int kill_pid_info_as_cred(int sig, struct siginfo *info, struct pid *pid,
|
||||
const struct cred *cred, u32 secid)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
struct task_struct *p;
|
||||
const struct cred *pcred;
|
||||
unsigned long flags;
|
||||
|
||||
if (!valid_signal(sig))
|
||||
@@ -1362,10 +1373,7 @@ int kill_pid_info_as_uid(int sig, struct siginfo *info, struct pid *pid,
|
||||
ret = -ESRCH;
|
||||
goto out_unlock;
|
||||
}
|
||||
pcred = __task_cred(p);
|
||||
if (si_fromuser(info) &&
|
||||
euid != pcred->suid && euid != pcred->uid &&
|
||||
uid != pcred->suid && uid != pcred->uid) {
|
||||
if (si_fromuser(info) && !kill_as_cred_perm(cred, p)) {
|
||||
ret = -EPERM;
|
||||
goto out_unlock;
|
||||
}
|
||||
@@ -1384,7 +1392,7 @@ out_unlock:
|
||||
rcu_read_unlock();
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kill_pid_info_as_uid);
|
||||
EXPORT_SYMBOL_GPL(kill_pid_info_as_cred);
|
||||
|
||||
/*
|
||||
* kill_something_info() interprets pid in interesting ways just like kill(2).
|
||||
|
Reference in New Issue
Block a user