kern/163076: It is not possible to read in chunks from
linprocfs and procfs.
Poul-Henning Kamp
phk at phk.freebsd.dk
Tue Dec 6 11:30:15 UTC 2011
The following reply was made to PR kern/163076; it has been noted by GNATS.
From: "Poul-Henning Kamp" <phk at phk.freebsd.dk>
To: Jaakko Heinonen <jh at FreeBSD.org>
Cc: Petr Salinger <Petr.Salinger at seznam.cz>, bug-followup at FreeBSD.org
Subject: Re: kern/163076: It is not possible to read in chunks from linprocfs and procfs.
Date: Tue, 06 Dec 2011 11:20:09 +0000
In message <20111205214201.GA37871 at jh>, Jaakko Heinonen writes:
>On 2011-12-05, Poul-Henning Kamp wrote:
>> Sbufs were designed to have "latching error semantics" and any errors
>> should not be cleared by sbuf_finish() for exactly that reason.
>
>Shouldn't sbuf_finish() then check s->s_error before appending the
>trailing '\0' and setting the SBUF_FINISHED flag? The problem in
>question wasn't caught earlier because sbuf_finish() happily finishes
>the buffer even if it has an error.
I belive the code is written so that there is always reserved space
for the final '\0'
sbuf_finish() should finish _any_ sbuf, and return zero only if
the finished buffer is fully OK.
I belive it does that, if not its a bug.
The intent is that you don't have to check for errors more than
one place: sbuf_finish()
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the freebsd-bugs
mailing list