lkml.org 
[lkml]   [2005]   [Mar]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] 2.6.10 - direct-io async short read bug
    Badari Pulavarty <pbadari@us.ibm.com> wrote:
    >
    > On Wed, 2005-03-09 at 11:53, Andrew Morton wrote:
    > > Suparna Bhattacharya <suparna@in.ibm.com> wrote:
    > > >
    > > > > Solaris, which does forcedirectio as a mount option, actually
    > > > > will do buffered I/O on the trailing part. Consider it like a bounce
    > > > > buffer. That way they don't DMA the trailing data and succeed the I/O.
    > > > > The I/O returns actual bytes till EOF, just like read(2) is supposed to.
    > > > > Either this or a fully DMA'd number 4 is really what we should
    > > > > do. If security can only be solved via a bounce buffer, who cares? If
    > > > > the user created themselves a non-aligned file to open O_DIRECT, that's
    > > > > their problem if the last part-sector is negligably slower.
    > > >
    > > > If writes/truncates take care of zeroing out the rest of the sector
    > > > on disk, might we still be OK without having to do the bounce buffer
    > > > thing ?
    > >
    > > We can probably rely on the rest of the sector outside i_size being zeroed
    > > anyway. Because if it contains non-zero gunk then the fs already has a
    > > problem, and the user can get at that gunk with an expanding truncate and
    > > mmap() anyway.
    > >
    >
    > Rest of the sector or rest of the block ?

    The filesystem-sized block (1<<i_blkbits) which straddles i_size should
    have zeroes outside i_size.

    There's one situation where it might not be zeroed out, and that's when the
    final page is mapped MAP_SHARED and the application modifies that page
    outside i_size while writeout is actually in flight. We can't do much about
    that.

    > Are you implying that, we
    > already do this, so there is no problem reading beyond EOF to user
    > buffer ? Or we need to zero out the userbuffer beyond EOF ?

    It should be acceptable to assume that the final (1<<i_blkbits) block of
    the file contains zeroes outside i_size.

    And if it doesn't contain those zeroes, well, applications are able to read
    that data already. Although I wouldn't count that as a security hole: that
    data is something which an application wrote there while writing the file,
    rather than being left-over uncontrolled stuff.


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:11    [W:2.801 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site