diff options
author | trasz <trasz@FreeBSD.org> | 2011-05-26 18:54:07 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2011-05-26 18:54:07 +0000 |
commit | 6a13eaa4d195334f72d62e170d39feb98bb54530 (patch) | |
tree | fd22235a26f3cb2bdbe163aace9fa59ce692aea1 | |
parent | 9a5935957db9056a8b9c474edaeda0fff476a6db (diff) | |
download | FreeBSD-src-6a13eaa4d195334f72d62e170d39feb98bb54530.zip FreeBSD-src-6a13eaa4d195334f72d62e170d39feb98bb54530.tar.gz |
Fix support for RACCT_CORE by merging forgotten file.
-rw-r--r-- | sys/kern/kern_sig.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index d5b49da..e1861eb 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include <sys/proc.h> #include <sys/posix4.h> #include <sys/pioctl.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sdt.h> #include <sys/sbuf.h> @@ -3173,14 +3174,15 @@ coredump(struct thread *td) * if it is larger than the limit. */ limit = (off_t)lim_cur(p, RLIMIT_CORE); - PROC_UNLOCK(p); - if (limit == 0) { + if (limit == 0 || racct_get_available(p, RACCT_CORE) == 0) { + PROC_UNLOCK(p); #ifdef AUDIT audit_proc_coredump(td, name, EFBIG); #endif free(name, M_TEMP); return (EFBIG); } + PROC_UNLOCK(p); restart: NDINIT(&nd, LOOKUP, NOFOLLOW | MPSAFE, UIO_SYSSPACE, name, td); |