diff options
Diffstat (limited to 'sys/kern/uipc_socket2.c')
-rw-r--r-- | sys/kern/uipc_socket2.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index 42e02a5..beb8fe5 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -432,10 +432,10 @@ sbreserve(sb, cc, so, p) if ((u_quad_t)cc > (u_quad_t)sb_max * MCLBYTES / (MSIZE + MCLBYTES)) return (0); delta = (rlim_t)cc - sb->sb_hiwat; - if (p && delta >= 0 && chgsbsize(so->so_cred->cr_uid, 0) + delta > - p->p_rlimit[RLIMIT_SBSIZE].rlim_cur) + if (p && !chgsbsize(so->so_cred->cr_uid, delta, + p->p_rlimit[RLIMIT_SBSIZE].rlim_cur)) { return (0); - (void)chgsbsize(so->so_cred->cr_uid, delta); + } sb->sb_hiwat = cc; sb->sb_mbmax = min(cc * sb_efficiency, sb_max); if (sb->sb_lowat > sb->sb_hiwat) @@ -453,7 +453,7 @@ sbrelease(sb, so) { sbflush(sb); - (void)chgsbsize(so->so_cred->cr_uid, -(rlim_t)sb->sb_hiwat); + (void)chgsbsize(so->so_cred->cr_uid, -(rlim_t)sb->sb_hiwat, RLIM_INFINITY); sb->sb_hiwat = sb->sb_mbmax = 0; } |