Prev: [PATCH] loop: Update mtime when writing using aops
Next: [PATCH 2.6.33.2 1/1] hid: add support for cymotion master solar keyboard
From: Frederic Weisbecker on 8 Apr 2010 07:00 On Thu, Apr 08, 2010 at 11:57:20AM +0200, Eric Dumazet wrote: > Hello > > Current linux-2.6 tree panics on my dev machine > > 64 bit kernel, 32bit user land > CONFIG_FRAME_POINTER=y > > perf timechart record & > > Instant crash > > Call Trace: > perf_trace_sched_switch+0xd5/0x120 > schedule+0x6b5/0x860 > retint_careful+0xd/0x21 > > RIP ffffffff81010955 perf_arch_fetch_caller_regs+0x15/0x40 > CR2: 00000000d21f1422 > > > rewind_frame_pointer() is probably wrong. > > No test performed to check frame is in current stack, or > that (!user_mode_vm(regs)) user_mode_vm() can not work here as we are actually filling regs from scratch. But we indeed need to have a safe dereference to avoid such crashes. A simple probe_kernel_address() should do the trick. This API is going to change for the next cycle as it won't need to rewind further than the first caller. So I'm going to do a rough probe_kernel_address() fix for the current version. The next one won't have this problem. > > > static inline unsigned long rewind_frame_pointer(int n) > { > struct stack_frame *frame; > > get_bp(frame); > > #ifdef CONFIG_FRAME_POINTER > while (n--) > frame = frame->next_frame; > #endif > > return (unsigned long)frame; > } > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |