1
linux/fs/afs
Anton Blanchard f129ccc923 afs: Fix oops in afs_unlink_writeback
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: Anton Blanchard <anton@samba.org>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-02-25 11:12:37 -08:00
..
afs_cm.h
afs_fs.h
afs_vl.h
afs.h
cache.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
callback.c Fix various old email addresses for dwmw2 2008-06-06 11:29:10 -07:00
cell.c AFS: Implement an autocell mount capability [ver #2] 2010-08-11 17:11:29 +00:00
cmservice.c afs: add afs_wq and use it instead of the system workqueue 2011-01-14 09:25:11 -08:00
dir.c AFS: Use d_automount() rather than abusing follow_link() 2011-01-15 20:07:33 -05:00
file.c AFS: Don't put struct file on the stack 2010-05-21 18:31:28 -04:00
flock.c fs/locks.c: prepare for BKL removal 2010-10-05 11:02:04 +02:00
fsclient.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
inode.c AFS: Use d_automount() rather than abusing follow_link() 2011-01-15 20:07:33 -05:00
internal.h AFS: Use d_automount() rather than abusing follow_link() 2011-01-15 20:07:33 -05:00
Kconfig DNS: Make AFS go to the DNS for AFSDB records for unknown cells 2010-08-05 17:17:51 +00:00
main.c afs: add afs_wq and use it instead of the system workqueue 2011-01-14 09:25:11 -08:00
Makefile FS-Cache: Make kAFS use FS-Cache 2009-04-03 16:42:41 +01:00
misc.c AFS: Correctly translate auth error aborts and don't failover in such cases 2009-06-16 21:20:14 -07:00
mntpt.c Unexport do_add_mount() and add in follow_automount(), not ->d_automount() 2011-01-15 20:07:48 -05:00
netdevices.c afs: BUG to BUG_ON changes 2009-04-09 10:41:19 -07:00
proc.c AFS: Implement an autocell mount capability [ver #2] 2010-08-11 17:11:29 +00:00
rxrpc.c afs: add afs_wq and use it instead of the system workqueue 2011-01-14 09:25:11 -08:00
security.c fs: provide rcu-walk aware permission i_ops 2011-01-07 17:50:29 +11:00
server.c afs: add afs_wq and use it instead of the system workqueue 2011-01-14 09:25:11 -08:00
super.c switch afs 2011-01-12 20:04:20 -05:00
vlclient.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
vlocation.c afs: add afs_wq and use it instead of the system workqueue 2011-01-14 09:25:11 -08:00
vnode.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
volume.c afs: add bdi backing to mount session. 2010-04-22 11:58:18 +02:00
write.c afs: Fix oops in afs_unlink_writeback 2011-02-25 11:12:37 -08:00