Page MenuHomeFreeBSD

D17210.diff
No OneTemporary

D17210.diff

Index: head/sys/sys/racct.h
===================================================================
--- head/sys/sys/racct.h
+++ head/sys/sys/racct.h
@@ -164,6 +164,15 @@
#define RACCT_UNLOCK() mtx_unlock(&racct_lock)
#define RACCT_LOCK_ASSERT() mtx_assert(&racct_lock, MA_OWNED)
+#define RACCT_PROC_LOCK(p) do { \
+ if (__predict_false(racct_enable)) \
+ PROC_LOCK(p); \
+} while (0)
+#define RACCT_PROC_UNLOCK(p) do { \
+ if (__predict_false(racct_enable)) \
+ PROC_UNLOCK(p); \
+} while (0)
+
int racct_add(struct proc *p, int resource, uint64_t amount);
void racct_add_cred(struct ucred *cred, int resource, uint64_t amount);
void racct_add_force(struct proc *p, int resource, uint64_t amount);
@@ -188,6 +197,9 @@
void racct_proc_throttle(struct proc *p, int timeout);
#else
+
+#define RACCT_PROC_LOCK(p) do { } while (0)
+#define RACCT_PROC_UNLOCK(p) do { } while (0)
static inline int
racct_add(struct proc *p, int resource, uint64_t amount)
Index: head/sys/vm/vm_mmap.c
===================================================================
--- head/sys/vm/vm_mmap.c
+++ head/sys/vm/vm_mmap.c
@@ -1055,12 +1055,8 @@
* a hard resource limit, return ENOMEM.
*/
if (!old_mlock && uap->how & MCL_CURRENT) {
- PROC_LOCK(td->td_proc);
- if (map->size > lim_cur(td, RLIMIT_MEMLOCK)) {
- PROC_UNLOCK(td->td_proc);
+ if (map->size > lim_cur(td, RLIMIT_MEMLOCK))
return (ENOMEM);
- }
- PROC_UNLOCK(td->td_proc);
}
#ifdef RACCT
if (racct_enable) {
@@ -1445,21 +1441,21 @@
curmap = map == &td->td_proc->p_vmspace->vm_map;
if (curmap) {
- PROC_LOCK(td->td_proc);
- if (map->size + size > lim_cur_proc(td->td_proc, RLIMIT_VMEM)) {
- PROC_UNLOCK(td->td_proc);
+ RACCT_PROC_LOCK(td->td_proc);
+ if (map->size + size > lim_cur(td, RLIMIT_VMEM)) {
+ RACCT_PROC_UNLOCK(td->td_proc);
return (ENOMEM);
}
if (racct_set(td->td_proc, RACCT_VMEM, map->size + size)) {
- PROC_UNLOCK(td->td_proc);
+ RACCT_PROC_UNLOCK(td->td_proc);
return (ENOMEM);
}
if (!old_mlock && map->flags & MAP_WIREFUTURE) {
if (ptoa(pmap_wired_count(map->pmap)) + size >
- lim_cur_proc(td->td_proc, RLIMIT_MEMLOCK)) {
+ lim_cur(td, RLIMIT_MEMLOCK)) {
racct_set_force(td->td_proc, RACCT_VMEM,
map->size);
- PROC_UNLOCK(td->td_proc);
+ RACCT_PROC_UNLOCK(td->td_proc);
return (ENOMEM);
}
error = racct_set(td->td_proc, RACCT_MEMLOCK,
@@ -1467,11 +1463,11 @@
if (error != 0) {
racct_set_force(td->td_proc, RACCT_VMEM,
map->size);
- PROC_UNLOCK(td->td_proc);
+ RACCT_PROC_UNLOCK(td->td_proc);
return (error);
}
}
- PROC_UNLOCK(td->td_proc);
+ RACCT_PROC_UNLOCK(td->td_proc);
}
/*

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 13, 7:56 AM (13 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23665293
Default Alt Text
D17210.diff (2 KB)

Event Timeline