Date: Thu, 31 Aug 2000 19:25:43 -0400 (EDT) From: Brian Fundakowski Feldman <green@FreeBSD.org> To: Don Lewis <Don.Lewis@tsc.tdk.com> Cc: freebsd-stable@FreeBSD.ORG Subject: Re: 4.1 STABLE broken since today! Message-ID: <Pine.BSF.4.21.0008311915530.17114-100000@green.dyndns.org> In-Reply-To: <200008311321.GAA09415@salsa.gv.tsc.tdk.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 31 Aug 2000, Don Lewis wrote:
> On Aug 31, 6:11am, Tor.Egge@fast.no wrote:
> } Subject: Re: 4.1 STABLE broken since today!
> } >
> } > As commented on freebsd-current, this seems to have hit the -CURRENT
> } > kernel at the same time. Someone should *not* have MFC'd some change
> } > immediately. Not clear who yet. I'm suspicious of the sbappend() changes
> } > that have been going in recently.
> }
> }
> } 1. The value of diff in chgsbsize was always positive
> } (unsigned - unsigned results in an unsigned value).
> } This causes bogus values in ui_sbsize.
>
> [ snip ]
>
> } The following patch works for me.
> }
> } Index: sys/kern/kern_proc.c
> } ===================================================================
> } RCS file: /home/ncvs/src/sys/kern/kern_proc.c,v
> } retrieving revision 1.72
> } diff -u -r1.72 kern_proc.c
> } --- sys/kern/kern_proc.c 2000/08/30 04:49:07 1.72
> } +++ sys/kern/kern_proc.c 2000/08/31 03:56:30
> } @@ -210,7 +211,7 @@
> } if (uip == NULL)
> } uip = uicreate(uid);
> } s = splnet();
> } - diff = to - *hiwat;
> } + diff = (rlim_t) to - (rlim_t) *hiwat;
> } /* don't allow them to exceed max, but allow subtraction */
> } if (diff > 0 && uip->ui_sbsize + diff > max) {
> } (void)uifree(uip);
>
> This depends on rlim_t being a signed type (which is happens to be).
> Also, if "to" is the same width as rlim_t, then this code could break
> if the difference was greater than the maximum positive value of rlim_t
> (not likely in this particular case). Changing the test from
> diff > 0
> to
> to > *hiwat
> is much safer.
Well, rlim_t isn't going to change in the foreseeable future. Also,
we don't support any architectures that support nearly 2^63 bytes of
physical memory; it's fair to say that there's no way for it to cause
a problem, but if you don't like it, cleanups can be done at leisure
:)
> I prefer the following patch to kern_proc.c, which also pulls uifree()
> out of splnet(), and eliminates some duplicate code. I'm not yet running
> 4-stable, so I can't test this patch other than to see if it compiles
> without error.
We'll see, then; since this isn't critical, it can wait, right?
--
Brian Fundakowski Feldman \ FreeBSD: The Power to Serve! /
green@FreeBSD.org `------------------------------'
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0008311915530.17114-100000>
