Re: [PATCH] nmbclusters should be always positive

2015-01-20 Thread John Baldwin
On Monday, January 19, 2015 6:12:25 pm Davide Italiano wrote:
> Currently, the following is allowed in FreeBSD:
> 
> root@rabbit1:/home/davide/udp-clt # sysctl kern.ipc.nmbclusters=2147483647
> kern.ipc.nmbclusters: 2036598 -> -2147483648
> 
> The following is an attempt of fixing.
> I also think nmbcluster should actually be u_int and not it, but this
> is a discussion for another day, maybe.
> 
> diff --git a/sys/kern/kern_mbuf.c b/sys/kern/kern_mbuf.c
> index 7ab6509..15b38a9 100644
> --- a/sys/kern/kern_mbuf.c
> +++ b/sys/kern/kern_mbuf.c
> @@ -162,7 +162,7 @@ sysctl_nmbclusters(SYSCTL_HANDLER_ARGS)
> newnmbclusters = nmbclusters;
> error = sysctl_handle_int(oidp, &newnmbclusters, 0, req);
> if (error == 0 && req->newptr && newnmbclusters != nmbclusters) {
> -   if (newnmbclusters > nmbclusters &&
> +   if (newnmbclusters > 0 && newnmbclusters > nmbclusters &&
> nmbufs >= nmbclusters + nmbjumbop + nmbjumbo9 +
> nmbjumbo16) {
> nmbclusters = newnmbclusters;
> nmbclusters = uma_zone_set_max(zone_clust, 
nmbclusters);

1) If you fix this one you need to fix the other handlers in this file (all 
the jumbo ones, etc.)

2) Shouldn't the 'newnmbclusters > nmbclusters' check catch this already?  
That should fail right?  Might be worth figuring out why it isn't.

-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


[PATCH] nmbclusters should be always positive

2015-01-19 Thread Davide Italiano
Currently, the following is allowed in FreeBSD:

root@rabbit1:/home/davide/udp-clt # sysctl kern.ipc.nmbclusters=2147483647
kern.ipc.nmbclusters: 2036598 -> -2147483648

The following is an attempt of fixing.
I also think nmbcluster should actually be u_int and not it, but this
is a discussion for another day, maybe.

diff --git a/sys/kern/kern_mbuf.c b/sys/kern/kern_mbuf.c
index 7ab6509..15b38a9 100644
--- a/sys/kern/kern_mbuf.c
+++ b/sys/kern/kern_mbuf.c
@@ -162,7 +162,7 @@ sysctl_nmbclusters(SYSCTL_HANDLER_ARGS)
newnmbclusters = nmbclusters;
error = sysctl_handle_int(oidp, &newnmbclusters, 0, req);
if (error == 0 && req->newptr && newnmbclusters != nmbclusters) {
-   if (newnmbclusters > nmbclusters &&
+   if (newnmbclusters > 0 && newnmbclusters > nmbclusters &&
nmbufs >= nmbclusters + nmbjumbop + nmbjumbo9 +
nmbjumbo16) {
nmbclusters = newnmbclusters;
nmbclusters = uma_zone_set_max(zone_clust, nmbclusters);


-- 
Davide

"There are no solved problems; there are only problems that are more
or less solved" -- Henri Poincare
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"