diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2013-12-13 20:53:31 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2013-12-13 20:53:31 +0000 |
commit | 3318a9c895596306e80fc28a559ed4e96c0b4d61 (patch) | |
tree | 15ff8e83e8375266f268cddde2aeb62fc48e4890 /sys/kern | |
parent | b13e60da569243e8c7a37edbe7600798e9a1f701 (diff) | |
download | src-3318a9c895596306e80fc28a559ed4e96c0b4d61.tar.gz src-3318a9c895596306e80fc28a559ed4e96c0b4d61.zip |
rlimit: add and utilize lim_shared
MFC after: 2 weeks
Notes
Notes:
svn path=/head/; revision=259330
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_resource.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c index 470eaedd52d7..72b90e3a69b6 100644 --- a/sys/kern/kern_resource.c +++ b/sys/kern/kern_resource.c @@ -80,6 +80,8 @@ static int donice(struct thread *td, struct proc *chgp, int n); static struct uidinfo *uilookup(uid_t uid); static void ruxagg_locked(struct rusage_ext *rux, struct thread *td); +static __inline int lim_shared(struct plimit *limp); + /* * Resource controls and accounting. */ @@ -1129,6 +1131,14 @@ lim_hold(limp) return (limp); } +static __inline int +lim_shared(limp) + struct plimit *limp; +{ + + return (limp->pl_refcnt > 1); +} + void lim_fork(struct proc *p1, struct proc *p2) { @@ -1162,7 +1172,7 @@ lim_copy(dst, src) struct plimit *dst, *src; { - KASSERT(dst->pl_refcnt == 1, ("lim_copy to shared limit")); + KASSERT(!lim_shared(dst), ("lim_copy to shared limit")); bcopy(src->pl_rlimit, dst->pl_rlimit, sizeof(src->pl_rlimit)); } |