* [mcgrof:modules-next 7/12] kernel/module/main.c:2578:1-11: second lock on line 2591
@ 2023-03-05 10:51 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-03-05 10:51 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Song Liu <song@kernel.org>
CC: Luis Chamberlain <mcgrof@kernel.org>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Christophe Leroy <christophe.leroy@csgroup.eu>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git modules-next
head: b1ec22f8dc85bb0b2e82a528a7ebca377f46d4cb
commit: a76b092b56554ac80f8d2540355b8978f91ce107 [7/12] module: replace module_layout with module_memory
:::::: branch date: 2 days ago
:::::: commit date: 12 days ago
config: csky-randconfig-c034-20230305 (https://download.01.org/0day-ci/archive/20230305/202303051802.lUI3TlTX-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Link: https://lore.kernel.org/r/202303051802.lUI3TlTX-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> kernel/module/main.c:2578:1-11: second lock on line 2591
kernel/module/main.c:1215:1-11: second lock on line 1235
kernel/module/main.c:2885:1-11: second lock on line 2901
--
>> kernel/module/main.c:2617:1-7: preceding lock on line 2578
vim +2578 kernel/module/main.c
34e1169d996ab1 kernel/module.c Kees Cook 2012-10-16 2565
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2566 /*
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2567 * We try to place it in the list now to make sure it's unique before
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2568 * we dedicate too many resources. In particular, temporary percpu
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2569 * memory exhaustion.
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2570 */
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2571 static int add_unformed_module(struct module *mod)
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2572 {
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2573 int err;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2574 struct module *old;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2575
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2576 mod->state = MODULE_STATE_UNFORMED;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2577
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 @2578 mutex_lock(&module_mutex);
4f6de4d51f4a3a kernel/module.c Mathias Krause 2013-07-02 2579 old = find_module_all(mod->name, strlen(mod->name), true);
4f6de4d51f4a3a kernel/module.c Mathias Krause 2013-07-02 2580 if (old != NULL) {
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2581 if (old->state == MODULE_STATE_COMING
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2582 || old->state == MODULE_STATE_UNFORMED) {
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2583 /* Wait in case it fails to load. */
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2584 mutex_unlock(&module_mutex);
9cc019b8c94fa5 kernel/module.c Peter Zijlstra 2015-02-11 2585 err = wait_event_interruptible(module_wq,
9cc019b8c94fa5 kernel/module.c Peter Zijlstra 2015-02-11 2586 finished_loading(mod->name));
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2587 if (err)
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2588 goto out_unlocked;
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2589
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2590 /* The module might have gone in the meantime. */
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 @2591 mutex_lock(&module_mutex);
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2592 old = find_module_all(mod->name, strlen(mod->name),
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2593 true);
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2594 }
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2595
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2596 /*
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2597 * We are here only when the same module was being loaded. Do
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2598 * not try to load it again right now. It prevents long delays
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2599 * caused by serialized module load failures. It might happen
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2600 * when more devices of the same type trigger load of
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2601 * a particular module.
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2602 */
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2603 if (old && old->state == MODULE_STATE_LIVE)
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2604 err = -EEXIST;
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2605 else
0254127ab977e7 kernel/module/main.c Petr Pavlu 2022-12-05 2606 err = -EBUSY;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2607 goto out;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2608 }
4f666546d04775 kernel/module.c Peter Zijlstra 2015-05-27 2609 mod_update_bounds(mod);
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2610 list_add_rcu(&mod->list, &modules);
93c2e105f6bcee kernel/module.c Peter Zijlstra 2015-05-27 2611 mod_tree_insert(mod);
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2612 err = 0;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2613
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2614 out:
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2615 mutex_unlock(&module_mutex);
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2616 out_unlocked:
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 @2617 return err;
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2618 }
a3535c7e4f4495 kernel/module.c Rusty Russell 2013-01-21 2619
:::::: The code at line 2578 was first introduced by commit
:::::: a3535c7e4f4495fe947f7901d25447d80e04fe52 module: clean up load_module a little more.
:::::: TO: Rusty Russell <rusty@rustcorp.com.au>
:::::: CC: Rusty Russell <rusty@rustcorp.com.au>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-03-05 10:52 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-05 10:51 [mcgrof:modules-next 7/12] kernel/module/main.c:2578:1-11: second lock on line 2591 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.