Messages in this thread | | From | Linus Torvalds <> | Date | Fri, 6 Jul 2012 13:30:01 -0700 | Subject | Re: Regression - /proc/kmsg does not (always) block for 1-byte reads |
| |
Kay, this needs to be fixed.
Suggested fix: just use the 'seq_printf()' interfaces, which do the proper buffering, and allow any size reads of various packetized data.
Of course, I'd also suggest that whoever was the genius who thought it was a good idea to read things ONE F*CKING BYTE AT A TIME with system calls for each byte should be retroactively aborted. Who the f*ck does idiotic things like that? How did they noty die as babies, considering that they were likely too stupid to find a tit to suck on?
Linus
On Fri, Jul 6, 2012 at 12:38 PM, Alan Cox <[email protected]> wrote: > On Fri, 6 Jul 2012 20:45:44 +0300 > Jukka Ollila <[email protected]> wrote: > >> Hello, >> >> A few days ago I filed a kernel regression report concerning a change >> in /proc/kmsg behaviour with short reads: >> >> https://bugzilla.kernel.org/show_bug.cgi?id=44211 >> >> The comments suggest that this is probably intentional, but that it >> would be best make sure that the current semantics wrt short reads are >> as intended. >> >> The problem appears on a Debian (unstable) system that drains >> /proc/kmsg into a separate fifo read by klogd(8): >> >> /bin/dd bs=1 if=/proc/kmsg of=/var/run/klogd/kmsg >> >> With the recent kernel logging changes this /bin/dd exits immediately, >> as 1-byte reads are shorter than any log message could possibly be and >> read() returns 0. No dd feeding the fifo results in no logging and a >> rather unhappy klogd on the reading end of /var/run/klogd/kmsg. >> >> I suppose a safe solution is to only do reads that are big enough for >> any single kernel message, but this is still a change that affects >> user space being shipped, so some might find it surprising. >> >> I don't know what other distros do. Is it just Debian being the odd one out? > > If this is observed on an actual standard distro userspace and breaks it > then its a regression and it needs fixing or reverting. > > Cc'ing Linus
| |