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