Page MenuHomeVyOS Platform

kernel_debug.patch

Authored By
v.huti
Jul 14 2022, 1:59 PM
Size
12 KB
Referenced Files
None
Subscribers
None

kernel_debug.patch

diff --git a/include/net/route.h b/include/net/route.h
index 71e069675810..5818b43d20d0 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -72,6 +72,7 @@ struct rtable {
int rt_iif;
int rt_edscp;
+ __be32 rt_saddr;
u8 rt_gw_family;
/* Info on neighbour */
union {
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
index d39978d583f5..e4d2ddb1a7bb 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -359,7 +359,7 @@ enum rt_class_t {
/* Routing message attributes */
-enum rtattr_type_t {
+enum rtattr_type_t {/* attr */
RTA_UNSPEC,
RTA_DST,
RTA_SRC,
diff --git a/lib/nlattr.c b/lib/nlattr.c
index 86029ad5ead4..edde37753389 100644
--- a/lib/nlattr.c
+++ b/lib/nlattr.c
@@ -597,11 +597,11 @@ static int __nla_validate_parse(const struct nlattr *head, int len, int maxtype,
}
if (unlikely(rem > 0)) {
- pr_warn_ratelimited("netlink: %d bytes leftover after parsing attributes in process `%s'.\n",
+ pr_warn_ratelimited("netlink: %d bytes leftover after parsing attributes in process `%s' Q [patch, don`t return error] .\n",
rem, current->comm);
- NL_SET_ERR_MSG(extack, "bytes leftover after parsing attributes");
- if (validate & NL_VALIDATE_TRAILING)
- return -EINVAL;
+ /* NL_SET_ERR_MSG(extack, " bytes leftover after parsing attributes"); */
+ /* if (validate & NL_VALIDATE_TRAILING) */
+ /* return -EINVAL; */
}
return 0;
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index d86bcbf99650..459ccb17c55e 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -721,7 +721,7 @@ int fib_gw_from_via(struct fib_config *cfg, struct nlattr *nla,
return 0;
}
-static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
+static int rtm_to_fib_config(struct net *net, struct sk_buff *skb, /* EEE FIB cfg */
struct nlmsghdr *nlh, struct fib_config *cfg,
struct netlink_ext_ack *extack)
{
@@ -739,9 +739,11 @@ static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
rtm = nlmsg_data(nlh);
+ printk("QQQ CFG validate [%d]\n", rtm->rtm_tos);
if (!inet_validate_dscp(rtm->rtm_tos)) {
+ /* || !inet_validate_dscp(rtm->rtm_dscp) */
NL_SET_ERR_MSG(extack,
- "Invalid dsfield (tos): ECN bits must be 0");
+ "Invalid dsfield (tos|dscp): ECN bits must be 0");
err = -EINVAL;
goto errout;
}
@@ -751,6 +753,7 @@ static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
else
cfg->fc_idscp = inet_dsfield_to_dscp(rtm->rtm_tos);
+ printk("QQQ CFG set [%d|%d]\n", cfg->fc_idscp, cfg->fc_edscp);
cfg->fc_dst_len = rtm->rtm_dst_len;
cfg->fc_table = rtm->rtm_table;
cfg->fc_protocol = rtm->rtm_protocol;
@@ -880,7 +883,7 @@ static int inet_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh,
return err;
}
-static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh,
+static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, /* EEE newroute */
struct netlink_ext_ack *extack)
{
struct net *net = sock_net(skb->sk);
@@ -888,16 +891,19 @@ static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh,
struct fib_table *tb;
int err;
+ printk("QQQ new route\n");
err = rtm_to_fib_config(net, skb, nlh, &cfg, extack);
if (err < 0)
goto errout;
+ printk("QQQ new table\n");
tb = fib_new_table(net, cfg.fc_table);
if (!tb) {
err = -ENOBUFS;
goto errout;
}
+ printk("QQQ new insert\n");
err = fib_table_insert(net, tb, &cfg, extack);
if (!err && cfg.fc_type == RTN_LOCAL)
net->ipv4.fib_has_custom_local_routes = true;
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
index 513f475c6a53..1e3b063eb4f2 100644
--- a/net/ipv4/fib_rules.c
+++ b/net/ipv4/fib_rules.c
@@ -50,7 +50,7 @@ static bool fib4_rule_matchall(const struct fib_rule *rule)
{
struct fib4_rule *r = container_of(rule, struct fib4_rule, common);
- if (r->dst_len || r->src_len || r->dscp)
+ if (r->dst_len || r->src_len || r->dscp) //
return false;
return fib_rule_matchall(rule);
}
@@ -186,7 +186,7 @@ INDIRECT_CALLABLE_SCOPE int fib4_rule_match(struct fib_rule *rule,
((daddr ^ r->dst) & r->dstmask))
return 0;
- if (r->dscp && r->dscp != inet_dsfield_to_dscp(fl4->flowi4_tos))
+ if (r->dscp && r->dscp != inet_dsfield_to_dscp(fl4->flowi4_tos)) //
return 0;
if (rule->ip_proto && (rule->ip_proto != fl4->flowi4_proto))
@@ -236,7 +236,7 @@ static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
NL_SET_ERR_MSG(extack, "Invalid tos");
goto errout;
}
- rule4->dscp = inet_dsfield_to_dscp(frh->tos);
+ rule4->dscp = inet_dsfield_to_dscp(frh->tos); //
/* split local/main if they are not already split */
err = fib_unmerge(net);
@@ -320,7 +320,7 @@ static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
if (frh->dst_len && (rule4->dst_len != frh->dst_len))
return 0;
- if (frh->tos && inet_dscp_to_dsfield(rule4->dscp) != frh->tos)
+ if (frh->tos && inet_dscp_to_dsfield(rule4->dscp) != frh->tos) //
return 0;
#ifdef CONFIG_IP_ROUTE_CLASSID
@@ -344,7 +344,7 @@ static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
frh->dst_len = rule4->dst_len;
frh->src_len = rule4->src_len;
- frh->tos = inet_dscp_to_dsfield(rule4->dscp);
+ frh->tos = inet_dscp_to_dsfield(rule4->dscp);/* WWW check */
if ((rule4->dst_len &&
nla_put_in_addr(skb, FRA_DST, rule4->dst)) ||
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 308c06eb770a..3d8b5613eaaf 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1784,6 +1784,7 @@ int fib_dump_info(struct sk_buff *skb, u32 portid, u32 seq, int event,
rtm->rtm_dst_len = fri->dst_len;
rtm->rtm_src_len = 0;
rtm->rtm_tos = inet_dscp_to_dsfield(fri->dscp);
+ printk("QQQ FIB_DUMP [%d|%d|%d]\n", rtm->rtm_tos, fri->dscp, fri->edscp);
if (fi->fib_flags & RTM_F_DSCP)
rtm->rtm_tos = inet_dscp_to_dsfield(fri->edscp);
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 1b8aa417d7e1..b8a0fb136188 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -1209,7 +1209,7 @@ static void fib_remove_alias(struct trie *t, struct key_vector *tp,
struct key_vector *l, struct fib_alias *old);
/* Caller must hold RTNL. */
-int fib_table_insert(struct net *net, struct fib_table *tb,
+int fib_table_insert(struct net *net, struct fib_table *tb, /* FFF */
struct fib_config *cfg, struct netlink_ext_ack *extack)
{
struct trie *t = (struct trie *)tb->tb_data;
@@ -1225,6 +1225,7 @@ int fib_table_insert(struct net *net, struct fib_table *tb,
key = ntohl(cfg->fc_dst);
+ printk("QQQ new valid\n");
if (!fib_valid_key_len(key, plen, extack))
return -EINVAL;
@@ -1326,7 +1327,8 @@ int fib_table_insert(struct net *net, struct fib_table *tb,
goto out_free_new_fa;
}
}
-
+ /* REPLACE new */
+ printk("QQQ REPLACE new\n");
rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen,
tb->tb_id, &cfg->fc_nlinfo, nlflags);
diff --git a/net/ipv4/ip_forward.c b/net/ipv4/ip_forward.c
index 3fbaeee43dcb..f76d8cfae1ea 100644
--- a/net/ipv4/ip_forward.c
+++ b/net/ipv4/ip_forward.c
@@ -83,6 +83,11 @@ static int ip_forward_finish(struct net *net, struct sock *sk, struct sk_buff *s
return dst_output(net, sk, skb);
}
+bool gdebug = true;
+void debug (void) {
+ printk("debug");
+}
+
int ip_forward(struct sk_buff *skb)
{
u32 mtu;
@@ -126,6 +131,7 @@ int ip_forward(struct sk_buff *skb)
goto drop;
}
+ printk("QQQ ip_forward rt\n");
rt = skb_rtable(skb);
if (opt->is_strictroute && rt->rt_uses_gateway)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 6e33a58c3a11..4dc9c455398d 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1269,7 +1269,7 @@ static int ip_rt_bug(struct net *net, struct sock *sk, struct sk_buff *skb)
* in IP options!
*/
-void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt)
+void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt) //
{
__be32 src;
@@ -1811,6 +1811,7 @@ static int __mkroute_input(struct sk_buff *skb,
return -EINVAL;
}
+ printk("QQQ __mkroute_input\n");
err = fib_validate_source(skb, saddr, daddr, tos, FIB_RES_OIF(*res),
in_dev->dev, in_dev, &itag);
if (err < 0) {
@@ -1850,15 +1851,18 @@ static int __mkroute_input(struct sk_buff *skb,
if (no_policy)
IPCB(skb)->flags |= IPSKB_NOPOLICY;
+ printk("QQQ find_exception\n");
fnhe = find_exception(nhc, daddr);
if (do_cache) {
+ /* dst = skb_dst(skb); */
+ /* dst->edscp = res->edscp; */
+ printk("QQQ do cache\n");
if (fnhe)
rth = rcu_dereference(fnhe->fnhe_rth_input);
else
rth = rcu_dereference(nhc->nhc_rth_input);
if (rt_cache_valid(rth)) {
rth->dst.edscp = res->edscp;
- printk("QQQ YAY [%d]\n", rth->dst.edscp);
skb_dst_set_noref(skb, &rth->dst);
goto out;
}
@@ -1875,6 +1879,9 @@ static int __mkroute_input(struct sk_buff *skb,
RT_CACHE_STAT_INC(in_slow_tot);
rth->dst.input = ip_forward;
rth->dst.edscp = res->edscp;
+ rth->rt_edscp = res->edscp;
+ rth->rt_saddr = saddr;
+ printk("QQQ mk_route_in set dscp [%d|%pI4]\n", rth->rt_edscp, &saddr);
rt_set_nexthop(rth, daddr, res, fnhe, res->fi, res->type, itag,
do_cache);
@@ -2340,7 +2347,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
goto martian_destination;
make_route:
- err = ip_mkroute_input(skb, res, in_dev, daddr, saddr, tos, flkeys);
+ err = ip_mkroute_input(skb, res, in_dev, daddr, saddr, tos, flkeys); //
out: return err;
brd_input:
@@ -2945,7 +2952,7 @@ struct rtable *ip_route_output_tunnel(struct sk_buff *skb,
EXPORT_SYMBOL_GPL(ip_route_output_tunnel);
/* called with rcu_read_lock held */
-static int rt_fill_info(struct net *net, __be32 dst, __be32 src,
+static int rt_fill_info(struct net *net, __be32 dst, __be32 src, /* EEE Fill */
struct rtable *rt, u32 table_id, struct flowi4 *fl4,
struct sk_buff *skb, u32 portid, u32 seq,
unsigned int flags)
@@ -3287,7 +3294,7 @@ static int inet_rtm_valid_getroute_req(struct sk_buff *skb,
return 0;
}
-static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
+static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, /* EEE get route */
struct netlink_ext_ack *extack)
{
struct net *net = sock_net(in_skb->sk);
diff --git a/net/netfilter/xt_DSCP.c b/net/netfilter/xt_DSCP.c
index eababc354ff1..d87d35eca1e6 100644
--- a/net/netfilter/xt_DSCP.c
+++ b/net/netfilter/xt_DSCP.c
@@ -25,7 +25,7 @@ MODULE_ALIAS("ipt_TOS");
MODULE_ALIAS("ip6t_TOS");
static unsigned int
-dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)
+dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)/* WWW */
{
const struct xt_DSCP_info *dinfo = par->targinfo;
u_int8_t dscp = ipv4_get_dsfield(ip_hdr(skb)) >> XT_DSCP_SHIFT;
@@ -34,7 +34,7 @@ dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)
if (skb_ensure_writable(skb, sizeof(struct iphdr)))
return NF_DROP;
- ipv4_change_dsfield(ip_hdr(skb),
+ ipv4_change_dsfield(ip_hdr(skb),/* WWW */
(__force __u8)(~XT_DSCP_MASK),
dinfo->dscp << XT_DSCP_SHIFT);
diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index 77b612183c08..8528207a5c01 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -75,7 +75,7 @@ deb-pkg:
$(call cmd,src_tar,$(KDEB_SOURCENAME))
origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
- +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -i.git -us -uc
+ dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -i.git -us -uc
PHONY += bindeb-pkg
bindeb-pkg:
diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
old mode 100644
new mode 100755
diff --git a/scripts/tags.sh b/scripts/tags.sh
index 01fab3d4f90b..a2b8a345532e 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -125,7 +125,7 @@ all_kconfigs()
docscope()
{
- (echo \-k; echo \-q; all_target_sources) > cscope.files
+ (echo \-k; echo \-q; all_target_sources) | grep -v debian > cscope.files
cscope -b -f cscope.out
}

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
b4/fd/d155b7089bb28a4cacf7b2f20c66
Default Alt Text
kernel_debug.patch (12 KB)

Event Timeline