diff options
author | jhb <jhb@FreeBSD.org> | 2006-09-06 21:59:36 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2006-09-06 21:59:36 +0000 |
commit | 27f742341b8ef59cde95e6ea310c9edc4f791b68 (patch) | |
tree | 3ed0bf311e286285d65d7588661d65bd81314e80 /sys/kern/uipc_sockbuf.c | |
parent | 8637a912149e261f1463b2d062506177d2c30e39 (diff) | |
download | FreeBSD-src-27f742341b8ef59cde95e6ea310c9edc4f791b68.zip FreeBSD-src-27f742341b8ef59cde95e6ea310c9edc4f791b68.tar.gz |
Use sysctl_handle_long() instead of duplicating it's logic for
kern.ipc.maxsockbuf so that this sysctl works for 32-bit binaries running
on amd64 via compat/freebsd32.
MFC after: 3 days
Diffstat (limited to 'sys/kern/uipc_sockbuf.c')
-rw-r--r-- | sys/kern/uipc_sockbuf.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index d9f1ec8..f34df44 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -253,18 +253,14 @@ static int sysctl_handle_sb_max(SYSCTL_HANDLER_ARGS) { int error = 0; - u_long old_sb_max = sb_max; + u_long tmp_sb_max = sb_max; - error = SYSCTL_OUT(req, arg1, sizeof(u_long)); + error = sysctl_handle_long(oidp, &tmp_sb_max, arg2, req); if (error || !req->newptr) return (error); - error = SYSCTL_IN(req, arg1, sizeof(u_long)); - if (error) - return (error); - if (sb_max < MSIZE + MCLBYTES) { - sb_max = old_sb_max; + if (tmp_sb_max < MSIZE + MCLBYTES) return (EINVAL); - } + sb_max = tmp_sb_max; sb_max_adj = (u_quad_t)sb_max * MCLBYTES / (MSIZE + MCLBYTES); return (0); } |