block: add ioprio_check_cap function
Aio per command iopriority support introduces a second interface between userland and the kernel capable of passing iopriority. The aio interface also needs the ability to verify that the submitting context has sufficient privileges to submit IOPRIO_RT commands. This patch creates the ioprio_check_cap function to be used by the ioprio_set system call and also by the aio interface. Signed-off-by: Adam Manzanares <adam.manzanares@wdc.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
1da92779e2
commit
aa43457799
@ -61,15 +61,10 @@ int set_task_ioprio(struct task_struct *task, int ioprio)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(set_task_ioprio);
|
||||
|
||||
SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio)
|
||||
int ioprio_check_cap(int ioprio)
|
||||
{
|
||||
int class = IOPRIO_PRIO_CLASS(ioprio);
|
||||
int data = IOPRIO_PRIO_DATA(ioprio);
|
||||
struct task_struct *p, *g;
|
||||
struct user_struct *user;
|
||||
struct pid *pgrp;
|
||||
kuid_t uid;
|
||||
int ret;
|
||||
|
||||
switch (class) {
|
||||
case IOPRIO_CLASS_RT:
|
||||
@ -92,6 +87,21 @@ SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio)
|
||||
{
|
||||
struct task_struct *p, *g;
|
||||
struct user_struct *user;
|
||||
struct pid *pgrp;
|
||||
kuid_t uid;
|
||||
int ret;
|
||||
|
||||
ret = ioprio_check_cap(ioprio);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = -ESRCH;
|
||||
rcu_read_lock();
|
||||
switch (which) {
|
||||
|
@ -77,4 +77,6 @@ extern int ioprio_best(unsigned short aprio, unsigned short bprio);
|
||||
|
||||
extern int set_task_ioprio(struct task_struct *task, int ioprio);
|
||||
|
||||
extern int ioprio_check_cap(int ioprio);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user