lkml.org 
[lkml]   [2005]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectFix ea-in-inode default ACL creation
    From
    Date
    Hello,

    here is another nastiness.

    When a new inode is created, ext3_new_inode sets the EXT3_STATE_NEW
    flag, which tells ext3_do_update_inode to zero out the inode before
    filling in the inode's data. When a file is created in a directory with
    a default acl, the new inode inherits the directory's default acl; this
    generates attributes. The attributes are created before
    ext3_do_update_inode is called to write out the inode. In case of
    in-inode attributes, the new inode's attributes are written, and then
    zeroed out again by ext3_do_update_inode. Bad thing.

    Fix this by recognizing the EXT3_STATE_NEW case in
    ext3_xattr_set_handle, and zeroing out the inode there already when
    necessary.

    Signed-off-by: Andreas Gruenbacher <agruen@suse.de>

    Index: linux-2.6.11-latest/fs/ext3/xattr.c
    ===================================================================
    --- linux-2.6.11-latest.orig/fs/ext3/xattr.c
    +++ linux-2.6.11-latest/fs/ext3/xattr.c
    @@ -954,6 +954,13 @@ ext3_xattr_set_handle(handle_t *handle,
    error = ext3_get_inode_loc(inode, &is.iloc);
    if (error)
    goto cleanup;
    +
    + if (EXT3_I(inode)->i_state & EXT3_STATE_NEW) {
    + struct ext3_inode *raw_inode = ext3_raw_inode(&is.iloc);
    + memset(raw_inode, 0, EXT3_SB(inode->i_sb)->s_inode_size);
    + EXT3_I(inode)->i_state &= ~EXT3_STATE_NEW;
    + }
    +
    error = ext3_xattr_ibody_find(inode, &i, &is);
    if (error)
    goto cleanup;

    --
    Andreas Gruenbacher <agruen@suse.de>
    SUSE Labs, SUSE LINUX GMBH

    -
    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:09    [W:0.026 / U:0.216 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site