• Dave Chinner's avatar
    xfs: initialise attrd item to zero · f3d430ff
    Dave Chinner authored
    
    
    On the first allocation of a attrd item, xfs_trans_add_item() fires
    an assert like so:
    
     XFS (pmem0): EXPERIMENTAL logged extended attributes feature added. Use at your own risk!
     XFS: Assertion failed: !test_bit(XFS_LI_DIRTY, &lip->li_flags), file: fs/xfs/xfs_trans.c, line: 683
     ------------[ cut here ]------------
     kernel BUG at fs/xfs/xfs_message.c:102!
     Call Trace:
      <TASK>
      xfs_trans_add_item+0x17e/0x190
      xfs_trans_get_attrd+0x67/0x90
      xfs_attr_create_done+0x13/0x20
      xfs_defer_finish_noroll+0x100/0x690
      __xfs_trans_commit+0x144/0x330
      xfs_trans_commit+0x10/0x20
      xfs_attr_set+0x3e2/0x4c0
      xfs_initxattrs+0xaa/0xe0
      security_inode_init_security+0xb0/0x130
      xfs_init_security+0x18/0x20
      xfs_generic_create+0x13a/0x340
      xfs_vn_create+0x17/0x20
      path_openat+0xff3/0x12f0
      do_filp_open+0xb2/0x150
    
    The attrd log item is allocated via kmem_cache_alloc, and
    xfs_log_item_init() does not zero the entire log item structure - it
    assumes that the structure is already all zeros as it only
    initialises non-zero fields. Fix the attr items to be allocated
    via the *zalloc methods.
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: Allison Henderson<allison.henderson@oracle.com>
    Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    f3d430ff
xfs_attr_item.c 21.3 KB