• Tahsin Erdogan's avatar
    ext4: attach jinode after creation of xattr inode · bd3b963b
    Tahsin Erdogan authored
    In data=ordered mode jinode needs to be attached to the xattr inode when
    writing data to it. Attachment normally occurs during file open for regular
    files. Since we are not using file interface to write to the xattr inode,
    the jinode attach needs to be done manually.
    
    Otherwise the following crash occurs in data=ordered mode.
    
     BUG: unable to handle kernel NULL pointer dereference at           (null)
     IP: jbd2_journal_file_inode+0x37/0x110
     PGD 13b3c0067
     P4D 13b3c0067
     PUD 137660067
     PMD 0
    
     Oops: 0000 [#1] SMP
     CPU: 3 PID: 1877 Comm: python Not tainted 4.12.0-rc1+ #749
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     task: ffff88010e368980 task.stack: ffffc90000374000
     RIP: 0010:jbd2_journal_file_inode+0x37/0x110
     RSP: 0018:ffffc90000377980 EFLAGS: 00010246
     RAX: 0000000000000000 RBX: ffff880123b06230 RCX: 0000000000280000
     RDX: 0000000000000006 RSI: 0000000000000000 RDI: ffff88012c8585d0
     RBP: ffffc900003779b0 R08: 0000000000000202 R09: 0000000000000001
     R10: 0000000000000000 R11: 0000000000000400 R12: ffff8801111f81c0
     R13: ffff88013b2b6800 R14: ffffc90000377ab0 R15: 0000000000000001
     FS:  00007f0c99b77740(0000) GS:ffff88013fd80000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000000 CR3: 0000000136d91000 CR4: 00000000000006e0
     Call Trace:
      jbd2_journal_inode_add_write+0xe/0x10
      ext4_map_blocks+0x59e/0x620
      ext4_xattr_set_entry+0x501/0x7d0
      ext4_xattr_block_set+0x1b2/0x9b0
      ext4_xattr_set_handle+0x322/0x4f0
      ext4_xattr_set+0x144/0x1a0
      ext4_xattr_user_set+0x34/0x40
      __vfs_setxattr+0x66/0x80
      __vfs_setxattr_noperm+0x69/0x1c0
      vfs_setxattr+0xa2/0xb0
      setxattr+0x12e/0x150
      path_setxattr+0x87/0xb0
      SyS_setxattr+0xf/0x20
      entry_SYSCALL_64_fastpath+0x18/0xad
    Signed-off-by: default avatarTahsin Erdogan <tahsin@google.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    bd3b963b
xattr.c 60 KB