mirror of https://github.com/torvalds/linux.git
rv: Convert to use __free
Convert to use __free to tidy up the code. Signed-off-by: Nam Cao <namcao@linutronix.de> Reviewed-by: Gabriele Monaco <gmonaco@redhat.com> Link: https://lore.kernel.org/r/62854e2fcb8f8dd2180a98a9700702dcf89a6980.1763370183.git.namcao@linutronix.de Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
This commit is contained in:
parent
8db3790c4d
commit
b30f635bb6
|
|
@ -420,35 +420,27 @@ static const struct file_operations interface_desc_fops = {
|
||||||
static int create_monitor_dir(struct rv_monitor *mon, struct rv_monitor *parent)
|
static int create_monitor_dir(struct rv_monitor *mon, struct rv_monitor *parent)
|
||||||
{
|
{
|
||||||
struct dentry *root = parent ? parent->root_d : get_monitors_root();
|
struct dentry *root = parent ? parent->root_d : get_monitors_root();
|
||||||
const char *name = mon->name;
|
struct dentry *dir __free(rv_remove) = rv_create_dir(mon->name, root);
|
||||||
struct dentry *tmp;
|
struct dentry *tmp;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
mon->root_d = rv_create_dir(name, root);
|
if (!dir)
|
||||||
if (!mon->root_d)
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
tmp = rv_create_file("enable", RV_MODE_WRITE, mon->root_d, mon, &interface_enable_fops);
|
tmp = rv_create_file("enable", RV_MODE_WRITE, dir, mon, &interface_enable_fops);
|
||||||
if (!tmp) {
|
if (!tmp)
|
||||||
retval = -ENOMEM;
|
return -ENOMEM;
|
||||||
goto out_remove_root;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = rv_create_file("desc", RV_MODE_READ, mon->root_d, mon, &interface_desc_fops);
|
tmp = rv_create_file("desc", RV_MODE_READ, dir, mon, &interface_desc_fops);
|
||||||
if (!tmp) {
|
if (!tmp)
|
||||||
retval = -ENOMEM;
|
return -ENOMEM;
|
||||||
goto out_remove_root;
|
|
||||||
}
|
|
||||||
|
|
||||||
retval = reactor_populate_monitor(mon);
|
retval = reactor_populate_monitor(mon, dir);
|
||||||
if (retval)
|
if (retval)
|
||||||
goto out_remove_root;
|
return retval;
|
||||||
|
|
||||||
|
mon->root_d = no_free_ptr(dir);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_remove_root:
|
|
||||||
rv_remove(mon->root_d);
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -827,39 +819,36 @@ int __init rv_init_interface(void)
|
||||||
{
|
{
|
||||||
struct dentry *tmp;
|
struct dentry *tmp;
|
||||||
int retval;
|
int retval;
|
||||||
|
struct dentry *root_dir __free(rv_remove) = rv_create_dir("rv", NULL);
|
||||||
|
|
||||||
rv_root.root_dir = rv_create_dir("rv", NULL);
|
if (!root_dir)
|
||||||
if (!rv_root.root_dir)
|
return 1;
|
||||||
goto out_err;
|
|
||||||
|
|
||||||
rv_root.monitors_dir = rv_create_dir("monitors", rv_root.root_dir);
|
rv_root.monitors_dir = rv_create_dir("monitors", root_dir);
|
||||||
if (!rv_root.monitors_dir)
|
if (!rv_root.monitors_dir)
|
||||||
goto out_err;
|
return 1;
|
||||||
|
|
||||||
tmp = rv_create_file("available_monitors", RV_MODE_READ, rv_root.root_dir, NULL,
|
tmp = rv_create_file("available_monitors", RV_MODE_READ, root_dir, NULL,
|
||||||
&available_monitors_ops);
|
&available_monitors_ops);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
goto out_err;
|
return 1;
|
||||||
|
|
||||||
tmp = rv_create_file("enabled_monitors", RV_MODE_WRITE, rv_root.root_dir, NULL,
|
tmp = rv_create_file("enabled_monitors", RV_MODE_WRITE, root_dir, NULL,
|
||||||
&enabled_monitors_ops);
|
&enabled_monitors_ops);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
goto out_err;
|
return 1;
|
||||||
|
|
||||||
tmp = rv_create_file("monitoring_on", RV_MODE_WRITE, rv_root.root_dir, NULL,
|
tmp = rv_create_file("monitoring_on", RV_MODE_WRITE, root_dir, NULL,
|
||||||
&monitoring_on_fops);
|
&monitoring_on_fops);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
goto out_err;
|
return 1;
|
||||||
retval = init_rv_reactors(rv_root.root_dir);
|
retval = init_rv_reactors(root_dir);
|
||||||
if (retval)
|
if (retval)
|
||||||
goto out_err;
|
return 1;
|
||||||
|
|
||||||
turn_monitoring_on();
|
turn_monitoring_on();
|
||||||
|
|
||||||
return 0;
|
rv_root.root_dir = no_free_ptr(root_dir);
|
||||||
|
|
||||||
out_err:
|
return 0;
|
||||||
rv_remove(rv_root.root_dir);
|
|
||||||
printk(KERN_ERR "RV: Error while creating the RV interface\n");
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ struct rv_interface {
|
||||||
#define rv_create_file tracefs_create_file
|
#define rv_create_file tracefs_create_file
|
||||||
#define rv_remove tracefs_remove
|
#define rv_remove tracefs_remove
|
||||||
|
|
||||||
|
DEFINE_FREE(rv_remove, struct dentry *, if (_T) rv_remove(_T));
|
||||||
|
|
||||||
#define MAX_RV_MONITOR_NAME_SIZE 32
|
#define MAX_RV_MONITOR_NAME_SIZE 32
|
||||||
#define MAX_RV_REACTOR_NAME_SIZE 32
|
#define MAX_RV_REACTOR_NAME_SIZE 32
|
||||||
|
|
||||||
|
|
@ -30,10 +32,10 @@ bool rv_is_container_monitor(struct rv_monitor *mon);
|
||||||
bool rv_is_nested_monitor(struct rv_monitor *mon);
|
bool rv_is_nested_monitor(struct rv_monitor *mon);
|
||||||
|
|
||||||
#ifdef CONFIG_RV_REACTORS
|
#ifdef CONFIG_RV_REACTORS
|
||||||
int reactor_populate_monitor(struct rv_monitor *mon);
|
int reactor_populate_monitor(struct rv_monitor *mon, struct dentry *root);
|
||||||
int init_rv_reactors(struct dentry *root_dir);
|
int init_rv_reactors(struct dentry *root_dir);
|
||||||
#else
|
#else
|
||||||
static inline int reactor_populate_monitor(struct rv_monitor *mon)
|
static inline int reactor_populate_monitor(struct rv_monitor *mon, struct dentry *root)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -405,14 +405,15 @@ static const struct file_operations reacting_on_fops = {
|
||||||
/**
|
/**
|
||||||
* reactor_populate_monitor - creates per monitor reactors file
|
* reactor_populate_monitor - creates per monitor reactors file
|
||||||
* @mon: The monitor.
|
* @mon: The monitor.
|
||||||
|
* @root: The directory of the monitor.
|
||||||
*
|
*
|
||||||
* Returns 0 if successful, error otherwise.
|
* Returns 0 if successful, error otherwise.
|
||||||
*/
|
*/
|
||||||
int reactor_populate_monitor(struct rv_monitor *mon)
|
int reactor_populate_monitor(struct rv_monitor *mon, struct dentry *root)
|
||||||
{
|
{
|
||||||
struct dentry *tmp;
|
struct dentry *tmp;
|
||||||
|
|
||||||
tmp = rv_create_file("reactors", RV_MODE_WRITE, mon->root_d, mon, &monitor_reactors_ops);
|
tmp = rv_create_file("reactors", RV_MODE_WRITE, root, mon, &monitor_reactors_ops);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
@ -439,32 +440,27 @@ static struct rv_reactor rv_nop = {
|
||||||
|
|
||||||
int init_rv_reactors(struct dentry *root_dir)
|
int init_rv_reactors(struct dentry *root_dir)
|
||||||
{
|
{
|
||||||
struct dentry *available, *reacting;
|
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
available = rv_create_file("available_reactors", RV_MODE_READ, root_dir, NULL,
|
struct dentry *available __free(rv_remove) =
|
||||||
&available_reactors_ops);
|
rv_create_file("available_reactors", RV_MODE_READ, root_dir,
|
||||||
if (!available)
|
NULL, &available_reactors_ops);
|
||||||
goto out_err;
|
|
||||||
|
|
||||||
reacting = rv_create_file("reacting_on", RV_MODE_WRITE, root_dir, NULL, &reacting_on_fops);
|
struct dentry *reacting __free(rv_remove) =
|
||||||
if (!reacting)
|
rv_create_file("reacting_on", RV_MODE_WRITE, root_dir, NULL, &reacting_on_fops);
|
||||||
goto rm_available;
|
|
||||||
|
if (!reacting || !available)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
retval = __rv_register_reactor(&rv_nop);
|
retval = __rv_register_reactor(&rv_nop);
|
||||||
if (retval)
|
if (retval)
|
||||||
goto rm_reacting;
|
return retval;
|
||||||
|
|
||||||
turn_reacting_on();
|
turn_reacting_on();
|
||||||
|
|
||||||
|
retain_and_null_ptr(available);
|
||||||
|
retain_and_null_ptr(reacting);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rm_reacting:
|
|
||||||
rv_remove(reacting);
|
|
||||||
rm_available:
|
|
||||||
rv_remove(available);
|
|
||||||
out_err:
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rv_react(struct rv_monitor *monitor, const char *msg, ...)
|
void rv_react(struct rv_monitor *monitor, const char *msg, ...)
|
||||||
|
|
|
||||||
|
|
@ -10640,7 +10640,8 @@ static __init int tracer_init_tracefs(void)
|
||||||
tracer_init_tracefs_work_func(NULL);
|
tracer_init_tracefs_work_func(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
rv_init_interface();
|
if (rv_init_interface())
|
||||||
|
pr_err("RV: Error while creating the RV interface\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue