Subject: fix oops in spu_alloc_node From: Patrick Mansfield Fix the following oops in spu_alloc_node. I didn't see other reports of this or a fix, and don't know why it is not hit more often, I seemed to only hit it after running a simple spu executable multiple times in a row without much delay (scripted or from command line). Unable to handle kernel paging request for data at address 0x00004060 Faulting instruction address: 0xc0000000000345b4 cpu 0x0: Vector: 300 (Data Access) at [c000000001ffb750] pc: c0000000000345b4: .spu_alloc_node+0x90/0x128 lr: c00000000003459c: .spu_alloc_node+0x78/0x128 sp: c000000001ffb9d0 msr: 9000000000009032 dar: 4060 dsisr: 42000000 current = 0xc00000001ff7a810 paca = 0xc00000000033bf80 pid = 1860, comm = ppu_main enter ? for help 0:mon> t [c000000001ffba60] d00000000002d424 .spu_activate+0x3a4/0x3e4 [spufs] [c000000001ffbb40] d00000000002c648 .spu_acquire_runnable+0x90/0xe0 [spufs] [c000000001ffbbd0] d00000000002e738 .spufs_run_spu+0x9c/0x4e8 [spufs] [c000000001ffbcc0] d00000000002cb34 .do_spu_run+0xac/0x168 [spufs] [c000000001ffbd80] c00000000003556c .sys_spu_run+0xb0/0x140 [c000000001ffbe30] c00000000000861c syscall_exit+0x0/0x40 Signed-off-by: Patrick Mansfield Index: linux-2.6/arch/powerpc/platforms/cell/spu_base.c =================================================================== --- linux-2.6.orig/arch/powerpc/platforms/cell/spu_base.c +++ linux-2.6/arch/powerpc/platforms/cell/spu_base.c @@ -391,7 +391,7 @@ void spu_free(struct spu *spu) { mutex_lock(&spu_mutex); list_add_tail(&spu->list, &spu_list[spu->node]); - list_add_tail(&spu->full_list, &spu_list[spu->node]); + list_add_tail(&spu->full_list, &spu_full_list); mutex_unlock(&spu_mutex); } EXPORT_SYMBOL_GPL(spu_free);