net: fib_notifier: propagate possible error during fib notifier registration
Unlike events for registered notifier, during the registration, the errors that happened for the block being registered are not propagated up to the caller. Make sure the error is propagated for FIB rules and entries. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7c550daffe
commit
55c894f762
@@ -409,17 +409,25 @@ int mr_dump(struct net *net, struct notifier_block *nb, unsigned short family,
|
||||
if (!v->dev)
|
||||
continue;
|
||||
|
||||
mr_call_vif_notifier(nb, family,
|
||||
FIB_EVENT_VIF_ADD,
|
||||
v, vifi, mrt->id);
|
||||
err = mr_call_vif_notifier(nb, family,
|
||||
FIB_EVENT_VIF_ADD,
|
||||
v, vifi, mrt->id);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
read_unlock(mrt_lock);
|
||||
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* Notify on table MFC entries */
|
||||
list_for_each_entry_rcu(mfc, &mrt->mfc_cache_list, list)
|
||||
mr_call_mfc_notifier(nb, family,
|
||||
FIB_EVENT_ENTRY_ADD,
|
||||
mfc, mrt->id);
|
||||
list_for_each_entry_rcu(mfc, &mrt->mfc_cache_list, list) {
|
||||
err = mr_call_mfc_notifier(nb, family,
|
||||
FIB_EVENT_ENTRY_ADD,
|
||||
mfc, mrt->id);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user