* RFC: Inconsistent short read behaviour in __do_proc_dointvec vs _proc_do_string
@ 2011-12-21 18:10 Earl Chew
0 siblings, 0 replies; only message in thread
From: Earl Chew @ 2011-12-21 18:10 UTC (permalink / raw)
To: linux-kernel
Should repeated short reads in __do_proc_dointvec behave consistently with _proc_do_string ?
Consider:
> char c[1];
> int n;
>
> while (1)
> {
> n = read(0, c, 1);
>
> if (n <= 0) break;
>
> write (1, c, 1);
> }
Running this program on /proc/self/stat emits the expected output.
Running this program on /proc/sys/kernel/random/poolsize does not :-(
The issue is that __do_proc_dointvec does not accommodate non-zero file positions
when reading:
> if (!tbl_data || !table->maxlen || !*lenp || (*ppos && !write)) {
> *lenp = 0;
> return 0;
> }
OTOH _proc_do_string seems quite willing to accommodate it:
> if (write) {
> ...
> } else {
> len = strlen(data);
> if (len > maxlen)
> len = maxlen;
>
> if (*ppos > len) {
> *lenp = 0;
> return 0;
> }
Should __do_proc_intvec behave more like _proc_do_string, or vice-versa ?
Earl
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-12-21 18:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-21 18:10 RFC: Inconsistent short read behaviour in __do_proc_dointvec vs _proc_do_string Earl Chew
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).