ematch: simpler tcf_em_unregister()
Simply delete ops from list and let list debugging do the job. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
6eba6a372b
Коммит
4d24b52ac5
|
@ -246,7 +246,7 @@ struct tcf_ematch_ops
|
|||
};
|
||||
|
||||
extern int tcf_em_register(struct tcf_ematch_ops *);
|
||||
extern int tcf_em_unregister(struct tcf_ematch_ops *);
|
||||
extern void tcf_em_unregister(struct tcf_ematch_ops *);
|
||||
extern int tcf_em_tree_validate(struct tcf_proto *, struct nlattr *,
|
||||
struct tcf_ematch_tree *);
|
||||
extern void tcf_em_tree_destroy(struct tcf_proto *, struct tcf_ematch_tree *);
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
*
|
||||
* static void __exit exit_my_ematch(void)
|
||||
* {
|
||||
* return tcf_em_unregister(&my_ops);
|
||||
* tcf_em_unregister(&my_ops);
|
||||
* }
|
||||
*
|
||||
* module_init(init_my_ematch);
|
||||
|
@ -154,23 +154,11 @@ EXPORT_SYMBOL(tcf_em_register);
|
|||
*
|
||||
* Returns -ENOENT if no matching ematch was found.
|
||||
*/
|
||||
int tcf_em_unregister(struct tcf_ematch_ops *ops)
|
||||
void tcf_em_unregister(struct tcf_ematch_ops *ops)
|
||||
{
|
||||
int err = 0;
|
||||
struct tcf_ematch_ops *e;
|
||||
|
||||
write_lock(&ematch_mod_lock);
|
||||
list_for_each_entry(e, &ematch_ops, link) {
|
||||
if (e == ops) {
|
||||
list_del(&e->link);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
err = -ENOENT;
|
||||
out:
|
||||
list_del(&ops->link);
|
||||
write_unlock(&ematch_mod_lock);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(tcf_em_unregister);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче