diff -Nupr src.orig/net/ipv4/fib_frontend.c src/net/ipv4/fib_frontend.c --- src.orig/net/ipv4/fib_frontend.c 2016-12-15 19:55:39.724000000 +0000 +++ src/net/ipv4/fib_frontend.c 2016-12-15 19:57:09.672000000 +0000 @@ -728,6 +728,7 @@ errout: return err; } +#include "kpatch-macros.h" static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh) { struct net *net = sock_net(skb->sk); @@ -746,6 +747,7 @@ static int inet_rtm_newroute(struct sk_b } err = fib_table_insert(tb, &cfg); + KPATCH_PRINTK("[inet_rtm_newroute]: err is %d\n", err); errout: return err; } diff -Nupr src.orig/net/ipv4/fib_semantics.c src/net/ipv4/fib_semantics.c --- src.orig/net/ipv4/fib_semantics.c 2016-12-15 19:55:39.720000000 +0000 +++ src/net/ipv4/fib_semantics.c 2016-12-15 19:57:09.672000000 +0000 @@ -991,6 +991,7 @@ fib_convert_metrics(struct fib_info *fi, return 0; } +#include "kpatch-macros.h" struct fib_info *fib_create_info(struct fib_config *cfg) { int err; @@ -1018,6 +1019,7 @@ struct fib_info *fib_create_info(struct #endif err = -ENOBUFS; + KPATCH_PRINTK("[fib_create_info]: create error err is %d\n",err); if (fib_info_cnt >= fib_info_hash_size) { unsigned int new_size = fib_info_hash_size << 1; struct hlist_head *new_info_hash; @@ -1038,6 +1040,7 @@ struct fib_info *fib_create_info(struct if (!fib_info_hash_size) goto failure; } + KPATCH_PRINTK("[fib_create_info]: 2 create error err is %d\n",err); fi = kzalloc(sizeof(*fi)+nhs*sizeof(struct fib_nh), GFP_KERNEL); if (!fi) @@ -1049,6 +1052,7 @@ struct fib_info *fib_create_info(struct goto failure; } else fi->fib_metrics = (u32 *) dst_default_metrics; + KPATCH_PRINTK("[fib_create_info]: 3 create error err is %d\n",err); fi->fib_net = net; fi->fib_protocol = cfg->fc_protocol; @@ -1065,6 +1069,7 @@ struct fib_info *fib_create_info(struct if (!nexthop_nh->nh_pcpu_rth_output) goto failure; } endfor_nexthops(fi) + KPATCH_PRINTK("[fib_create_info]: 4 create error err is %d\n",err); err = fib_convert_metrics(fi, cfg); if (err) @@ -1117,6 +1122,8 @@ struct fib_info *fib_create_info(struct nh->nh_weight = 1; #endif } + KPATCH_PRINTK("[fib_create_info]: 5 create error err is %d\n",err); + KPATCH_PRINTK("[fib_create_info]: 6 create error err is %d\n",err); if (fib_props[cfg->fc_type].error) { if (cfg->fc_gw || cfg->fc_oif || cfg->fc_mp) @@ -1134,6 +1141,7 @@ struct fib_info *fib_create_info(struct goto err_inval; } } + KPATCH_PRINTK("[fib_create_info]: 7 create error err is %d\n",err); if (cfg->fc_scope > RT_SCOPE_HOST) goto err_inval; @@ -1162,6 +1170,7 @@ struct fib_info *fib_create_info(struct if (linkdown == fi->fib_nhs) fi->fib_flags |= RTNH_F_LINKDOWN; } + KPATCH_PRINTK("[fib_create_info]: 8 create error err is %d\n",err); if (fi->fib_prefsrc && !fib_valid_prefsrc(cfg, fi->fib_prefsrc)) goto err_inval; @@ -1170,6 +1179,7 @@ struct fib_info *fib_create_info(struct fib_info_update_nh_saddr(net, nexthop_nh); fib_add_weight(fi, nexthop_nh); } endfor_nexthops(fi) + KPATCH_PRINTK("[fib_create_info]: 9 create error err is %d\n",err); fib_rebalance(fi); @@ -1181,6 +1191,7 @@ link_it: ofi->fib_treeref++; return ofi; } + KPATCH_PRINTK("[fib_create_info]: 10 create error err is %d\n",err); fi->fib_treeref++; atomic_inc(&fi->fib_clntref); @@ -1204,6 +1215,7 @@ link_it: hlist_add_head(&nexthop_nh->nh_hash, head); } endfor_nexthops(fi) spin_unlock_bh(&fib_info_lock); + KPATCH_PRINTK("[fib_create_info]: 11 create error err is %d\n",err); return fi; err_inval: @@ -1214,6 +1226,7 @@ failure: fi->fib_dead = 1; free_fib_info(fi); } + KPATCH_PRINTK("[fib_create_info]: 12 create error err is %d\n",err); return ERR_PTR(err); } diff -Nupr src.orig/net/ipv4/fib_trie.c src/net/ipv4/fib_trie.c --- src.orig/net/ipv4/fib_trie.c 2016-12-15 19:55:39.720000000 +0000 +++ src/net/ipv4/fib_trie.c 2016-12-15 19:57:09.676000000 +0000 @@ -1078,6 +1078,7 @@ static int fib_insert_alias(struct trie } /* Caller must hold RTNL. */ +#include "kpatch-macros.h" int fib_table_insert(struct fib_table *tb, struct fib_config *cfg) { struct trie *t = (struct trie *)tb->tb_data; @@ -1101,11 +1102,14 @@ int fib_table_insert(struct fib_table *t if ((plen < KEYLENGTH) && (key << plen)) return -EINVAL; + KPATCH_PRINTK("[fib_table_insert]: start\n"); fi = fib_create_info(cfg); if (IS_ERR(fi)) { err = PTR_ERR(fi); + KPATCH_PRINTK("[fib_table_insert]: create error err is %d\n",err); goto err; } + KPATCH_PRINTK("[fib_table_insert]: cross\n"); l = fib_find_node(t, &tp, key); fa = l ? fib_find_alias(&l->leaf, slen, tos, fi->fib_priority,