mirror of https://github.com/dynup/kpatch
150 lines
4.9 KiB
Diff
150 lines
4.9 KiB
Diff
diff -Nupr src.orig/net/ipv4/fib_frontend.c src/net/ipv4/fib_frontend.c
|
|
--- src.orig/net/ipv4/fib_frontend.c 2023-04-24 14:22:43.587960465 -0400
|
|
+++ src/net/ipv4/fib_frontend.c 2023-04-24 14:23:32.327128785 -0400
|
|
@@ -792,6 +792,7 @@ errout:
|
|
return err;
|
|
}
|
|
|
|
+#include "kpatch-macros.h"
|
|
static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|
struct netlink_ext_ack *extack)
|
|
{
|
|
@@ -813,6 +814,7 @@ static int inet_rtm_newroute(struct sk_b
|
|
err = fib_table_insert(net, tb, &cfg, extack);
|
|
if (!err && cfg.fc_type == RTN_LOCAL)
|
|
net->ipv4.fib_has_custom_local_routes = true;
|
|
+ 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 2023-04-24 14:22:43.587960465 -0400
|
|
+++ src/net/ipv4/fib_semantics.c 2023-04-24 14:23:32.328128789 -0400
|
|
@@ -1025,6 +1025,7 @@ static bool fib_valid_prefsrc(struct fib
|
|
return true;
|
|
}
|
|
|
|
+#include "kpatch-macros.h"
|
|
struct fib_info *fib_create_info(struct fib_config *cfg,
|
|
struct netlink_ext_ack *extack)
|
|
{
|
|
@@ -1058,6 +1059,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;
|
|
@@ -1078,6 +1080,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)
|
|
@@ -1091,6 +1094,8 @@ struct fib_info *fib_create_info(struct
|
|
}
|
|
|
|
fib_info_cnt++;
|
|
+ KPATCH_PRINTK("[fib_create_info]: 3 create error err is %d\n",err);
|
|
+
|
|
fi->fib_net = net;
|
|
fi->fib_protocol = cfg->fc_protocol;
|
|
fi->fib_scope = cfg->fc_scope;
|
|
@@ -1146,9 +1151,11 @@ struct fib_info *fib_create_info(struct
|
|
"LWT encap type not specified");
|
|
goto err_inval;
|
|
}
|
|
+ KPATCH_PRINTK("[fib_create_info]: 4 create error err is %d\n",err);
|
|
err = lwtunnel_build_state(cfg->fc_encap_type,
|
|
cfg->fc_encap, AF_INET, cfg,
|
|
&lwtstate, extack);
|
|
+ KPATCH_PRINTK("[fib_create_info]: 5 create error err is %d\n",err);
|
|
if (err)
|
|
goto failure;
|
|
|
|
@@ -1166,6 +1173,7 @@ struct fib_info *fib_create_info(struct
|
|
nh->nh_weight = 1;
|
|
#endif
|
|
}
|
|
+ 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) {
|
|
@@ -1187,6 +1195,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) {
|
|
NL_SET_ERR_MSG(extack, "Invalid scope");
|
|
@@ -1225,6 +1234,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)) {
|
|
NL_SET_ERR_MSG(extack, "Invalid prefsrc address");
|
|
@@ -1234,6 +1244,7 @@ struct fib_info *fib_create_info(struct
|
|
change_nexthops(fi) {
|
|
fib_info_update_nh_saddr(net, nexthop_nh);
|
|
} endfor_nexthops(fi)
|
|
+ KPATCH_PRINTK("[fib_create_info]: 9 create error err is %d\n",err);
|
|
|
|
fib_rebalance(fi);
|
|
|
|
@@ -1245,6 +1256,7 @@ link_it:
|
|
ofi->fib_treeref++;
|
|
return ofi;
|
|
}
|
|
+ KPATCH_PRINTK("[fib_create_info]: 10 create error err is %d\n",err);
|
|
|
|
fi->fib_treeref++;
|
|
refcount_set(&fi->fib_clntref, 1);
|
|
@@ -1268,6 +1280,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:
|
|
@@ -1278,6 +1291,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 2023-04-24 14:22:43.587960465 -0400
|
|
+++ src/net/ipv4/fib_trie.c 2023-04-24 14:23:32.328128789 -0400
|
|
@@ -1174,6 +1174,7 @@ static void fib_remove_alias(struct trie
|
|
struct key_vector *l, struct fib_alias *old);
|
|
|
|
/* Caller must hold RTNL. */
|
|
+#include "kpatch-macros.h"
|
|
int fib_table_insert(struct net *net, struct fib_table *tb,
|
|
struct fib_config *cfg, struct netlink_ext_ack *extack)
|
|
{
|
|
@@ -1195,11 +1196,14 @@ int fib_table_insert(struct net *net, st
|
|
|
|
pr_debug("Insert table=%u %08x/%d\n", tb->tb_id, key, plen);
|
|
|
|
+ KPATCH_PRINTK("[fib_table_insert]: start\n");
|
|
fi = fib_create_info(cfg, extack);
|
|
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,
|