Re: Repeated corruption of file->f_ep_lock
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2005-09-18 01:28:11
On Sat, 2005-09-17 at 23:11 +1000, Paul Mackerras wrote:
David Woodhouse writes:quoted
The previous and next members of 'struct file', which are f_ep_list and f_mapping respectively, are always fine. It's just f_ep_lock which is scribbled upon, and the scribble is fairly repeatable: 'owner_cpu' is almost always set to 0x901 but occasionally 0x501, and the 'lock' field has values like 20282484, 24042884, 28022484, 24042084, 22000424 (hex). Do those numbers seem meaningful to anyone? Any clues as to where they might be coming from?They look like part of an exception stack frame. The 901 or 501 would be the trap number; 500 for an external interrupt or 900 for a decrementer interrupt, plus 1 which we use as a marker to say that only the volatile registers have been saved in the frame. The other values (20282484 etc.) could possibly be condition register values. That would fit with owner_cpu being 2 words past the lock field; the trap field in struct pt_regs is 2 words past the ccr field.
kernel stack overflow ? Also, you could try using the DABR (Data Access Breakpoint) if any on your CPU to try to catch at the instant of the corruption... Ben.