kern/163076: It is not possible to read in chunks from linprocfs and procfs.

Petr Salinger Petr.Salinger at seznam.cz
Fri Dec 9 16:10:14 UTC 2011


The following reply was made to PR kern/163076; it has been noted by GNATS.

From: Petr Salinger <Petr.Salinger at seznam.cz>
To: mdf at FreeBSD.org
Cc: Jaakko Heinonen <jh at FreeBSD.org>,
        =?ISO-8859-15?Q?Dag-Erling_Sm=F8rgrav?= <des at des.no>,
        Poul-Henning Kamp <phk at phk.freebsd.dk>, bug-followup at FreeBSD.org
Subject: Re: kern/163076: It is not possible to read in chunks from linprocfs
 and procfs.
Date: Fri, 9 Dec 2011 17:18:00 +0100 (CET)

  <CAMBSHm_H95zv48t9x2Whxb-wP5wp36TNCeOY6tUX-vSVAsPbPQ at mail.gmail.com>
 User-Agent: Alpine 2.02 (LRH 1266 2009-07-14)
 MIME-Version: 1.0
 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
 X-FELK-MailScanner-Information: 
 X-MailScanner-ID: pB9G4r01051652
 X-FELK-MailScanner: Found to be clean
 X-FELK-MailScanner-SpamCheck: not spam, SpamAssassin (not cached,
 	score=-1.12, required 6, BAYES_00 -1.90, FREEMAIL_FROM 0.00,
 	SPF_NEUTRAL 0.78)
 X-FELK-MailScanner-From: petr.salinger at seznam.cz
 X-FELK-MailScanner-To: bug-followup at freebsd.org, des at des.no, jh at freebsd.org,
 	mdf at freebsd.org, phk at phk.freebsd.dk
 X-FELK-MailScanner-Watermark: 1324051494.72495 at 1Eu3fJUhMt52tBWic+21fw
 X-Spam-Status: No
 
 >> As I wrote existing code depends on sbuf_len() to return the actual
 >> length regardless of the error status after sbuf_finish(). I am not
 >> willing to through all code using sbufs to check where it causes
 >> problems. phk@ asserts that r222004 is correct.
 >
 > What is causing sbuf to have an error in the first place?  The size of
 > flies in /proc are generally small and malloc(3) errors are rare.
 
 In this particular case, the userland wants to read first n bytes,
 the sbuf is allocated as fixed for n bytes.
 The first n bytes are generated and correctly stored in sbuf,
 for the rest bytes, there is no space in sbuf, but these bytes are not 
 needed later anyway.
 
 In stable-8,
 sbuf_data(sb) point to data, the sbuf_len(sb) returns number of stored 
 bytes.
 
 In stable-9,
 sbuf_data(sb) point to data, the sbuf_len(sb) returns -1.
 
 Petr


More information about the freebsd-bugs mailing list