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