Messages in this thread |  | | Subject | [PATCH v2 0/5] module: Remove stop_machine from module unloading | From | Masami Hiramatsu <> | Date | Thu, 23 Oct 2014 15:26:36 -0400 |
| |
Hi,
Here is the second version of removing stop_machine() from module unloading patchset.
Currently, each module unloading calls stop_machine()s 2 times. One is for safely removing module from lists and one is to check the reference counter. However, both are not necessary for those purposes (required by current implementation).
First, we can use RCU for the list operation, we just need a synchronize_rcu right before cleaning up. Second, the reference counter can be checked atomically by using atomic_t, instead of per-cpu module_ref.
In v2, the series updated as below;
- Fix to initialize return value in 1/5. - Remove module LOCKUP code(v1 4/5). - Split v1 5/5 into replacing module_ref with atomic_t and removing stop_machine patches. - Also, add BUG_ON and WARN_ON for the cases if the reference counter becomes a negative value.
Thank you,
---
Masami Hiramatsu (5): module: Wait for RCU synchronizing before releasing a module module: Unlink module with RCU synchronizing instead of stop_machine lib/bug: Use RCU list ops for module_bug_list module: Replace module_ref with atomic_t refcnt module: Remove stop_machine from module unloading
include/linux/module.h | 16 ------ include/trace/events/module.h | 2 - kernel/module.c | 117 ++++++++++++++++------------------------- lib/bug.c | 20 +++++-- 4 files changed, 63 insertions(+), 92 deletions(-)
-- Masami HIRAMATSU Software Platform Research Dpt. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
|  |