Add checking to call to call_fib_entry_notifiers for IPv4 route replace.
Allows a notifier handler to fail the replace.

Signed-off-by: David Ahern <d...@cumulusnetworks.com>
---
 net/ipv4/fib_trie.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 67116233e2bc..3dcffd3ce98c 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -1219,8 +1219,13 @@ int fib_table_insert(struct net *net, struct fib_table 
*tb,
                        new_fa->tb_id = tb->tb_id;
                        new_fa->fa_default = -1;
 
-                       call_fib_entry_notifiers(net, FIB_EVENT_ENTRY_REPLACE,
-                                                key, plen, new_fa, extack);
+                       err = call_fib_entry_notifiers(net,
+                                                      FIB_EVENT_ENTRY_REPLACE,
+                                                      key, plen, new_fa,
+                                                      extack);
+                       if (err)
+                               goto out_free_new_fa;
+
                        rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen,
                                  tb->tb_id, &cfg->fc_nlinfo, nlflags);
 
-- 
2.11.0

Reply via email to