Merge branch 'writable_limits' of git://decibel.fi.muni.cz/~xslaby/linux
* 'writable_limits' of git://decibel.fi.muni.cz/~xslaby/linux: unistd: add __NR_prlimit64 syscall numbers rlimits: implement prlimit64 syscall rlimits: switch more rlimit syscalls to do_prlimit rlimits: redo do_setrlimit to more generic do_prlimit rlimits: add rlimit64 structure rlimits: do security check under task_lock rlimits: allow setrlimit to non-current tasks rlimits: split sys_setrlimit rlimits: selinux, do rlimits changes under task_lock rlimits: make sure ->rlim_max never grows in sys_setrlimit rlimits: add task_struct to update_rlimit_cpu rlimits: security, add task_struct to setrlimit Fix up various system call number conflicts. We not only added fanotify system calls in the meantime, but asm-generic/unistd.h added a wait4 along with a range of reserved per-architecture system calls.
This commit is contained in:
commit
b34d8915c4
15 changed files with 207 additions and 75 deletions
|
@ -117,6 +117,6 @@ void set_process_cpu_timer(struct task_struct *task, unsigned int clock_idx,
|
|||
|
||||
long clock_nanosleep_restart(struct restart_block *restart_block);
|
||||
|
||||
void update_rlimit_cpu(unsigned long rlim_new);
|
||||
void update_rlimit_cpu(struct task_struct *task, unsigned long rlim_new);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -43,6 +43,13 @@ struct rlimit {
|
|||
unsigned long rlim_max;
|
||||
};
|
||||
|
||||
#define RLIM64_INFINITY (~0ULL)
|
||||
|
||||
struct rlimit64 {
|
||||
__u64 rlim_cur;
|
||||
__u64 rlim_max;
|
||||
};
|
||||
|
||||
#define PRIO_MIN (-20)
|
||||
#define PRIO_MAX 20
|
||||
|
||||
|
@ -73,6 +80,8 @@ struct rlimit {
|
|||
struct task_struct;
|
||||
|
||||
int getrusage(struct task_struct *p, int who, struct rusage __user *ru);
|
||||
int do_prlimit(struct task_struct *tsk, unsigned int resource,
|
||||
struct rlimit *new_rlim, struct rlimit *old_rlim);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
|
@ -1499,7 +1499,8 @@ struct security_operations {
|
|||
int (*task_setnice) (struct task_struct *p, int nice);
|
||||
int (*task_setioprio) (struct task_struct *p, int ioprio);
|
||||
int (*task_getioprio) (struct task_struct *p);
|
||||
int (*task_setrlimit) (unsigned int resource, struct rlimit *new_rlim);
|
||||
int (*task_setrlimit) (struct task_struct *p, unsigned int resource,
|
||||
struct rlimit *new_rlim);
|
||||
int (*task_setscheduler) (struct task_struct *p, int policy,
|
||||
struct sched_param *lp);
|
||||
int (*task_getscheduler) (struct task_struct *p);
|
||||
|
@ -1749,7 +1750,8 @@ void security_task_getsecid(struct task_struct *p, u32 *secid);
|
|||
int security_task_setnice(struct task_struct *p, int nice);
|
||||
int security_task_setioprio(struct task_struct *p, int ioprio);
|
||||
int security_task_getioprio(struct task_struct *p);
|
||||
int security_task_setrlimit(unsigned int resource, struct rlimit *new_rlim);
|
||||
int security_task_setrlimit(struct task_struct *p, unsigned int resource,
|
||||
struct rlimit *new_rlim);
|
||||
int security_task_setscheduler(struct task_struct *p,
|
||||
int policy, struct sched_param *lp);
|
||||
int security_task_getscheduler(struct task_struct *p);
|
||||
|
@ -2311,7 +2313,8 @@ static inline int security_task_getioprio(struct task_struct *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int security_task_setrlimit(unsigned int resource,
|
||||
static inline int security_task_setrlimit(struct task_struct *p,
|
||||
unsigned int resource,
|
||||
struct rlimit *new_rlim)
|
||||
{
|
||||
return 0;
|
||||
|
|
|
@ -35,6 +35,7 @@ struct oldold_utsname;
|
|||
struct old_utsname;
|
||||
struct pollfd;
|
||||
struct rlimit;
|
||||
struct rlimit64;
|
||||
struct rusage;
|
||||
struct sched_param;
|
||||
struct sel_arg_struct;
|
||||
|
@ -644,6 +645,9 @@ asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *r
|
|||
#endif
|
||||
asmlinkage long sys_setrlimit(unsigned int resource,
|
||||
struct rlimit __user *rlim);
|
||||
asmlinkage long sys_prlimit64(pid_t pid, unsigned int resource,
|
||||
const struct rlimit64 __user *new_rlim,
|
||||
struct rlimit64 __user *old_rlim);
|
||||
asmlinkage long sys_getrusage(int who, struct rusage __user *ru);
|
||||
asmlinkage long sys_umask(int mask);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue