pstore: add pstore unregister
pstore doesn't support unregistering yet. It was marked as TODO. This patch adds some code to fix it: 1) Add functions to unregister kmsg/console/ftrace/pmsg. 2) Add a function to free compression buffer. 3) Unmap the memory and free it. 4) Add a function to unregister pstore filesystem. Signed-off-by: Geliang Tang <geliangtang@163.com> Acked-by: Kees Cook <keescook@chromium.org> [Removed __exit annotation from ramoops_remove(). Reported by Arnd Bergmann] Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
@@ -104,22 +104,23 @@ static const struct file_operations pstore_knob_fops = {
|
||||
.write = pstore_ftrace_knob_write,
|
||||
};
|
||||
|
||||
static struct dentry *pstore_ftrace_dir;
|
||||
|
||||
void pstore_register_ftrace(void)
|
||||
{
|
||||
struct dentry *dir;
|
||||
struct dentry *file;
|
||||
|
||||
if (!psinfo->write_buf)
|
||||
return;
|
||||
|
||||
dir = debugfs_create_dir("pstore", NULL);
|
||||
if (!dir) {
|
||||
pstore_ftrace_dir = debugfs_create_dir("pstore", NULL);
|
||||
if (!pstore_ftrace_dir) {
|
||||
pr_err("%s: unable to create pstore directory\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
file = debugfs_create_file("record_ftrace", 0600, dir, NULL,
|
||||
&pstore_knob_fops);
|
||||
file = debugfs_create_file("record_ftrace", 0600, pstore_ftrace_dir,
|
||||
NULL, &pstore_knob_fops);
|
||||
if (!file) {
|
||||
pr_err("%s: unable to create record_ftrace file\n", __func__);
|
||||
goto err_file;
|
||||
@@ -127,5 +128,17 @@ void pstore_register_ftrace(void)
|
||||
|
||||
return;
|
||||
err_file:
|
||||
debugfs_remove(dir);
|
||||
debugfs_remove(pstore_ftrace_dir);
|
||||
}
|
||||
|
||||
void pstore_unregister_ftrace(void)
|
||||
{
|
||||
mutex_lock(&pstore_ftrace_lock);
|
||||
if (pstore_ftrace_enabled) {
|
||||
unregister_ftrace_function(&pstore_ftrace_ops);
|
||||
pstore_ftrace_enabled = 0;
|
||||
}
|
||||
mutex_unlock(&pstore_ftrace_lock);
|
||||
|
||||
debugfs_remove_recursive(pstore_ftrace_dir);
|
||||
}
|
||||
|
Reference in New Issue
Block a user