Skip to content
  • Anton Blanchard's avatar
    afs: Fix oops in afs_unlink_writeback · f129ccc9
    Anton Blanchard authored
    
    
    I'm seeing the following oops when testing afs:
    
      Unable to handle kernel paging request for data at address 0x00000008
      ...
      NIP [c0000000003393b0] .afs_unlink_writeback+0x38/0xc0
      LR [c00000000033987c] .afs_put_writeback+0x98/0xec
      Call Trace:
      [c00000000345f600] [c00000000033987c] .afs_put_writeback+0x98/0xec
      [c00000000345f690] [c00000000033ae80] .afs_write_begin+0x6a4/0x75c
      [c00000000345f790] [c00000000012b77c] .generic_file_buffered_write+0x148/0x320
      [c00000000345f8d0] [c00000000012e1b8] .__generic_file_aio_write+0x37c/0x3e4
      [c00000000345f9d0] [c00000000012e2a8] .generic_file_aio_write+0x88/0xfc
      [c00000000345fa90] [c0000000003390a8] .afs_file_write+0x10c/0x178
      [c00000000345fb40] [c000000000188788] .do_sync_write+0xc4/0x128
      [c00000000345fcc0] [c000000000189658] .vfs_write+0xe8/0x1d8
      [c00000000345fd70] [c000000000189884] .SyS_write+0x68/0xb0
      [c00000000345fe30] [c000000000008564] syscall_exit+0x0/0x40
    
    afs_write_begin hits an error and calls afs_unlink_writeback. In there
    we do list_del_init on an uninitialised list.
    
    The patch below initialises ->link when creating the afs_writeback struct.
    
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f129ccc9