Messages in this thread | | | Date | Thu, 7 May 2015 11:58:32 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH 1/4] context_tracking: Protect against recursion |
| |
* Frederic Weisbecker <fweisbec@gmail.com> wrote:
> @@ -75,6 +94,11 @@ void context_tracking_enter(enum ctx_state state) > WARN_ON_ONCE(!current->mm); > > local_irq_save(flags); > + if (!context_tracking_recursion_enter()) { > + local_irq_restore(flags); > + return; > + } > + > if ( __this_cpu_read(context_tracking.state) != state) { > if (__this_cpu_read(context_tracking.active)) { > /* > @@ -105,6 +129,7 @@ void context_tracking_enter(enum ctx_state state) > */ > __this_cpu_write(context_tracking.state, state); > } > + context_tracking_recursion_exit();
> local_irq_restore(flags); > }
So why not add an 'out_irq_restore:' label and use goto instead of duplicating the return path in the recursion check?
> NOKPROBE_SYMBOL(context_tracking_enter); > @@ -139,6 +164,10 @@ void context_tracking_exit(enum ctx_state state) > return; > > local_irq_save(flags); > + if (!context_tracking_recursion_enter()) { > + local_irq_restore(flags); > + return;
Ditto.
No need to resend, I fixed this up in the patch.
Thanks,
Ingo
| |