Commit 97bb6c17 authored by Borislav Petkov's avatar Borislav Petkov

EDAC: Get rid of edac_handlers

Use mc_devices list instead to check whether we have EDAC driver
instances successfully registered with EDAC core.
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
parent db47d5f8
...@@ -601,7 +601,6 @@ static int add_mc_to_global_list(struct mem_ctl_info *mci) ...@@ -601,7 +601,6 @@ static int add_mc_to_global_list(struct mem_ctl_info *mci)
} }
list_add_tail_rcu(&mci->link, insert_before); list_add_tail_rcu(&mci->link, insert_before);
atomic_inc(&edac_handlers);
return 0; return 0;
fail0: fail0:
...@@ -619,7 +618,6 @@ static int add_mc_to_global_list(struct mem_ctl_info *mci) ...@@ -619,7 +618,6 @@ static int add_mc_to_global_list(struct mem_ctl_info *mci)
static int del_mc_from_global_list(struct mem_ctl_info *mci) static int del_mc_from_global_list(struct mem_ctl_info *mci)
{ {
int handlers = atomic_dec_return(&edac_handlers);
list_del_rcu(&mci->link); list_del_rcu(&mci->link);
/* these are for safe removal of devices from global list while /* these are for safe removal of devices from global list while
...@@ -628,7 +626,7 @@ static int del_mc_from_global_list(struct mem_ctl_info *mci) ...@@ -628,7 +626,7 @@ static int del_mc_from_global_list(struct mem_ctl_info *mci)
synchronize_rcu(); synchronize_rcu();
INIT_LIST_HEAD(&mci->link); INIT_LIST_HEAD(&mci->link);
return handlers; return list_empty(&mc_devices);
} }
struct mem_ctl_info *edac_mc_find(int idx) struct mem_ctl_info *edac_mc_find(int idx)
...@@ -763,7 +761,7 @@ struct mem_ctl_info *edac_mc_del_mc(struct device *dev) ...@@ -763,7 +761,7 @@ struct mem_ctl_info *edac_mc_del_mc(struct device *dev)
/* mark MCI offline: */ /* mark MCI offline: */
mci->op_state = OP_OFFLINE; mci->op_state = OP_OFFLINE;
if (!del_mc_from_global_list(mci)) if (del_mc_from_global_list(mci))
edac_mc_owner = NULL; edac_mc_owner = NULL;
mutex_unlock(&mem_ctls_mutex); mutex_unlock(&mem_ctls_mutex);
......
...@@ -20,9 +20,6 @@ ...@@ -20,9 +20,6 @@
int edac_op_state = EDAC_OPSTATE_INVAL; int edac_op_state = EDAC_OPSTATE_INVAL;
EXPORT_SYMBOL_GPL(edac_op_state); EXPORT_SYMBOL_GPL(edac_op_state);
atomic_t edac_handlers = ATOMIC_INIT(0);
EXPORT_SYMBOL_GPL(edac_handlers);
int edac_err_assert = 0; int edac_err_assert = 0;
EXPORT_SYMBOL_GPL(edac_err_assert); EXPORT_SYMBOL_GPL(edac_err_assert);
......
...@@ -29,7 +29,6 @@ struct device; ...@@ -29,7 +29,6 @@ struct device;
extern int edac_op_state; extern int edac_op_state;
extern int edac_err_assert; extern int edac_err_assert;
extern atomic_t edac_handlers;
extern struct bus_type *edac_get_sysfs_subsys(void); extern struct bus_type *edac_get_sysfs_subsys(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment