net/ipv4: Allow notifier to fail route replace
authorDavid Ahern <dsa@cumulusnetworks.com>
Wed, 28 Mar 2018 01:21:58 +0000 (18:21 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 29 Mar 2018 18:10:30 +0000 (14:10 -0400)
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 <dsa@cumulusnetworks.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/fib_trie.c

index 67116233e2bc6275b2568e9c5d34b845be227140..3dcffd3ce98c4b6fbbe50fab120bb4fe56f5bc0a 100644 (file)
@@ -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);