On 19-Dec-01 Matthew Dillon wrote:
>:>     hmm.. ok, there are some subsystems using sbuf's:
>:>     linprocfs
>:>     procfs
>:>     pseudofs
>:>     I think someone may have broken something in pseudofs, procfs,
>:>     and/or linprocfs that is causing the VFS cache and sbuf MALLOC
>:>     area to run away.
>:>     Anybody have any ideas?
>:This certainly appear to be the case.  I've unmounted procfs and
>:linprocfs and I've got an uptime of 5 hours now.  Result! :)
>     Excellent!  Can you narrow the problem down further, to either procfs or
>     linprocfs?
>     I think I *may* have found it.  Or at least I've found one error.  There
>     could be more:
> void
> sbuf_delete(struct sbuf *s)
> {
>         assert_sbuf_integrity(s);
>         /* don't care if it's finished or not */
>         if (SBUF_ISDYNAMIC(s))
>                 SBFREE(s->s_buf);
>         bzero(s, sizeof *s);
>         if (SBUF_ISDYNSTRUCT(s))
>                 SBFREE(s);
> }
>     The structure is being bzero()'d before its dynamic flag gets checked.
>     I've included a patch below.  Josef, I would appreciate it if you would
>     apply the patch and try your system with the various procfs devices
>     mounted again.  It's an obvious bug so I'm comitting it to -current now,
>     the question is:  Is it the *only* bug?
>                                               -Matt

Hmm, why bzero at all if you are just going to free it?  Why not move the bzero
to an else after the ISDYNSTRUCT check?  (Not that this is really all that
important, but... :)


John Baldwin <[EMAIL PROTECTED]>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to