summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-01-04 12:36:54 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2010-01-04 12:36:54 -0800
commitc5974b835a909ff15c3b7e6cf6789b5eb919f419 (patch)
tree959088bbf10da0d8496b1310fd6f3be6ea11966e
parent14107c750b840d6efd7fdf2f6d513f35e2eb6230 (diff)
parent3e10e716abf3c71bdb5d86b8f507f9e72236c9cd (diff)
downloadconfigs-c5974b835a909ff15c3b7e6cf6789b5eb919f419.tar.gz
Merge branch 'limits_cleanup' of git://decibel.fi.muni.cz/~xslaby/linux
* 'limits_cleanup' of git://decibel.fi.muni.cz/~xslaby/linux: resource: add helpers for fetching rlimits resource: move kernel function inside __KERNEL__ SECURITY: selinux, fix update_rlimit_cpu parameter
-rw-r--r--include/linux/resource.h8
-rw-r--r--include/linux/sched.h22
-rw-r--r--security/selinux/hooks.c2
3 files changed, 29 insertions, 3 deletions
diff --git a/include/linux/resource.h b/include/linux/resource.h
index 40fc7e62608..f1e914eefea 100644
--- a/include/linux/resource.h
+++ b/include/linux/resource.h
@@ -3,8 +3,6 @@
#include <linux/time.h>
-struct task_struct;
-
/*
* Resource control/accounting header file for linux
*/
@@ -70,6 +68,12 @@ struct rlimit {
*/
#include <asm/resource.h>
+#ifdef __KERNEL__
+
+struct task_struct;
+
int getrusage(struct task_struct *p, int who, struct rusage __user *ru);
+#endif /* __KERNEL__ */
+
#endif
diff --git a/include/linux/sched.h b/include/linux/sched.h
index f2f842db03c..8d4991be9d5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2601,6 +2601,28 @@ static inline void mm_init_owner(struct mm_struct *mm, struct task_struct *p)
}
#endif /* CONFIG_MM_OWNER */
+static inline unsigned long task_rlimit(const struct task_struct *tsk,
+ unsigned int limit)
+{
+ return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_cur);
+}
+
+static inline unsigned long task_rlimit_max(const struct task_struct *tsk,
+ unsigned int limit)
+{
+ return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_max);
+}
+
+static inline unsigned long rlimit(unsigned int limit)
+{
+ return task_rlimit(current, limit);
+}
+
+static inline unsigned long rlimit_max(unsigned int limit)
+{
+ return task_rlimit_max(current, limit);
+}
+
#endif /* __KERNEL__ */
#endif
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 7a374c2eb04..9a2ee845e9d 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2365,7 +2365,7 @@ static void selinux_bprm_committing_creds(struct linux_binprm *bprm)
initrlim = init_task.signal->rlim + i;
rlim->rlim_cur = min(rlim->rlim_max, initrlim->rlim_cur);
}
- update_rlimit_cpu(rlim->rlim_cur);
+ update_rlimit_cpu(current->signal->rlim[RLIMIT_CPU].rlim_cur);
}
}