Commit d3f706f6 authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller

ipv4: fib: Convert FIB notification chain to be atomic

In order not to hold RTNL for long periods of time we're going to dump
the FIB tables using RCU.

Convert the FIB notification chain to be atomic, as we can't block in
RCU critical sections.
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 17f8be7d
...@@ -84,17 +84,17 @@ ...@@ -84,17 +84,17 @@
#include <trace/events/fib.h> #include <trace/events/fib.h>
#include "fib_lookup.h" #include "fib_lookup.h"
static BLOCKING_NOTIFIER_HEAD(fib_chain); static ATOMIC_NOTIFIER_HEAD(fib_chain);
int register_fib_notifier(struct notifier_block *nb) int register_fib_notifier(struct notifier_block *nb)
{ {
return blocking_notifier_chain_register(&fib_chain, nb); return atomic_notifier_chain_register(&fib_chain, nb);
} }
EXPORT_SYMBOL(register_fib_notifier); EXPORT_SYMBOL(register_fib_notifier);
int unregister_fib_notifier(struct notifier_block *nb) int unregister_fib_notifier(struct notifier_block *nb)
{ {
return blocking_notifier_chain_unregister(&fib_chain, nb); return atomic_notifier_chain_unregister(&fib_chain, nb);
} }
EXPORT_SYMBOL(unregister_fib_notifier); EXPORT_SYMBOL(unregister_fib_notifier);
...@@ -102,7 +102,7 @@ int call_fib_notifiers(struct net *net, enum fib_event_type event_type, ...@@ -102,7 +102,7 @@ int call_fib_notifiers(struct net *net, enum fib_event_type event_type,
struct fib_notifier_info *info) struct fib_notifier_info *info)
{ {
info->net = net; info->net = net;
return blocking_notifier_call_chain(&fib_chain, event_type, info); return atomic_notifier_call_chain(&fib_chain, event_type, info);
} }
static int call_fib_entry_notifiers(struct net *net, static int call_fib_entry_notifiers(struct net *net,
......
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