diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/proc/vmcore.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c index b0f450a2bb7c..0d5071d29985 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c | |||
@@ -700,3 +700,26 @@ static int __init vmcore_init(void) | |||
700 | return 0; | 700 | return 0; |
701 | } | 701 | } |
702 | module_init(vmcore_init) | 702 | module_init(vmcore_init) |
703 | |||
704 | /* Cleanup function for vmcore module. */ | ||
705 | void vmcore_cleanup(void) | ||
706 | { | ||
707 | struct list_head *pos, *next; | ||
708 | |||
709 | if (proc_vmcore) { | ||
710 | remove_proc_entry(proc_vmcore->name, proc_vmcore->parent); | ||
711 | proc_vmcore = NULL; | ||
712 | } | ||
713 | |||
714 | /* clear the vmcore list. */ | ||
715 | list_for_each_safe(pos, next, &vmcore_list) { | ||
716 | struct vmcore *m; | ||
717 | |||
718 | m = list_entry(pos, struct vmcore, list); | ||
719 | list_del(&m->list); | ||
720 | kfree(m); | ||
721 | } | ||
722 | kfree(elfcorebuf); | ||
723 | elfcorebuf = NULL; | ||
724 | } | ||
725 | EXPORT_SYMBOL_GPL(vmcore_cleanup); | ||