Messages in this thread | | | Date | Thu, 19 Feb 2015 13:24:01 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] kernel/module.c: Free lock-classes if parse_args failed |
| |
* Peter Zijlstra <peterz@infradead.org> wrote:
> > indeed ... > > How about something like so? It would fix this particular > issue and lays the groundwork for maybe reusing some of > the resources we now leak.
> @@ -3916,6 +3926,20 @@ void lockdep_free_key_range(void *start, unsigned long size) > if (locked) > graph_unlock(); > raw_local_irq_restore(flags); > + > + /* > + * Wait for any possible iterators from look_up_lock_class() to pass > + * before continuing to free the memory they refer to. > + * > + * sync_sched() is sufficient because the read-side is IRQ disable. > + */ > + synchronize_sched();
> + /* Free lock-classes; relies on the preceding sync_rcu(). */ > lockdep_free_key_range(mod->module_core, mod->core_size);
> free_module: > + /* Free lock-classes; relies on the preceding sync_rcu() */ > + lockdep_free_key_range(mod->module_core, mod->core_size);
Yeah. Looks good to me in principle, without having tested it that is as I don't use modules on devel boxes:
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Thanks,
Ingo
| |