Remove spurious call to priv_check(PRIV_VM_SWAP_NOQUOTA).

Call priv_check(PRIV_VM_SWAP_NORLIMIT) only when per-uid limit is
actually exceed.

Both changes aim at calling priv_check(9) only for the cases when
privilege is actually exercised by the process.

Reported and tested by:	rwatson
Reviewed by:	alc
MFC after:	3 days
This commit is contained in:
Konstantin Belousov 2009-10-18 12:55:39 +00:00
parent ab5f4f723d
commit 5c0e1c11a3

View File

@ -176,7 +176,7 @@ swap_reserve(vm_ooffset_t incr)
int
swap_reserve_by_uid(vm_ooffset_t incr, struct uidinfo *uip)
{
vm_ooffset_t r, s, max;
vm_ooffset_t r, s;
int res, error;
static int curfail;
static struct timeval lastfail;
@ -185,7 +185,6 @@ swap_reserve_by_uid(vm_ooffset_t incr, struct uidinfo *uip)
panic("swap_reserve: & PAGE_MASK");
res = 0;
error = priv_check(curthread, PRIV_VM_SWAP_NOQUOTA);
mtx_lock(&sw_dev_mtx);
r = swap_reserved + incr;
if (overcommit & SWAP_RESERVE_ALLOW_NONWIRED) {
@ -204,10 +203,9 @@ swap_reserve_by_uid(vm_ooffset_t incr, struct uidinfo *uip)
if (res) {
PROC_LOCK(curproc);
UIDINFO_VMSIZE_LOCK(uip);
error = priv_check(curthread, PRIV_VM_SWAP_NORLIMIT);
max = (error != 0) ? lim_cur(curproc, RLIMIT_SWAP) : 0;
if (max != 0 && uip->ui_vmsize + incr > max &&
(overcommit & SWAP_RESERVE_RLIMIT_ON) != 0)
if ((overcommit & SWAP_RESERVE_RLIMIT_ON) != 0 &&
uip->ui_vmsize + incr > lim_cur(curproc, RLIMIT_SWAP) &&
priv_check(curthread, PRIV_VM_SWAP_NORLIMIT))
res = 0;
else
uip->ui_vmsize += incr;