• T
    TOMOYO: Fix incomplete read after seek. · e0b057b4
    Tetsuo Handa 提交于
    Commit f23571e8 "TOMOYO: Copy directly to userspace buffer." introduced
    tomoyo_flush() that flushes data to be read as soon as possible.
    tomoyo_select_domain() (which is called by write()) enqueues data which meant
    to be read by next read(), but previous read()'s read buffer's size was not
    cleared. As a result, since 2.6.36, sequence like
    
       char *cp = "select global-pid=1\n";
       read(fd, buf1, sizeof(buf1));
       write(fd, cp, strlen(cp));
       read(fd, buf2, sizeof(buf2));
    
    causes enqueued data to be flushed to buf1 rather than buf2.
    Fix this bug by clearing read buffer's size upon write() request.
    Signed-off-by: NTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: NJames Morris <jmorris@namei.org>
    e0b057b4
common.c 74.8 KB