Thread (3 messages) 3 messages, 2 authors, 2014-02-14

Re: [PATCH RT] arm/unwind: fail on unwind in irq disabled regions

From: Thomas Gleixner <hidden>
Date: 2014-02-13 22:57:39
Also in: lkml


On Fri, 24 Jan 2014, Sebastian Andrzej Siewior wrote:
Mostly unwind is done with irqs enabled however SLUB may call it with
irqs disabled while creating a new SLUB cache.

I had system freeze while loading a module which called
kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled
interrupts and then

->new_slab_objects()
 ->new_slab()
  ->setup_object()
   ->setup_object_debug()
    ->init_tracking()
     ->set_track()
      ->save_stack_trace()
       ->save_stack_trace_tsk()
        ->walk_stackframe()
         ->unwind_frame()
          ->unwind_find_idx()
           =>spin_lock_irqsave(&unwind_lock);

I would prefer not to turn this into a raw lock so for now it will just
fail if it is called with irqs disabled which might return a few "empty"
traces…
If we really end up with unwinding then the few cycles to follow the
stack are not that important anymore. We really want that output.

Thanks,

	tglx
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help