kernel/module.c: Free lock-classes if parse_args failed
authorAndrey Tsyvarev <tsyvarev@ispras.ru>
Fri, 6 Feb 2015 04:39:57 +0000 (15:09 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 6 Feb 2015 05:01:40 +0000 (15:31 +1030)
parse_args call module parameters' .set handlers, which may use locks defined in the module.
So, these classes should be freed in case parse_args returns error(e.g. due to incorrect parameter passed).

Signed-off-by: Andrey Tsyvarev <tsyvarev@ispras.ru>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
kernel/module.c

index d856e96a3cce440f4c9bb0bc5e7fbf2eee4b1afe..441ed3fc9c89cc2146a2ea3e4a59bbcaccd67805 100644 (file)
@@ -3356,6 +3356,9 @@ static int load_module(struct load_info *info, const char __user *uargs,
        module_bug_cleanup(mod);
        mutex_unlock(&module_mutex);
 
+       /* Free lock-classes: */
+       lockdep_free_key_range(mod->module_core, mod->core_size);
+
        /* we can't deallocate the module until we clear memory protection */
        unset_module_init_ro_nx(mod);
        unset_module_core_ro_nx(mod);
This page took 0.025718 seconds and 5 git commands to generate.