Message ID | 20231117152728.2286551-1-chentao@kylinos.cn (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ipv4: Correct/silence an endian warning in __ip_do_redirect | expand |
On Fri, Nov 17, 2023 at 6:07 PM Kunwu Chan <chentao@kylinos.cn> wrote: > > net/ipv4/route.c:783:46: warning: incorrect type in argument 2 (different base types) > net/ipv4/route.c:783:46: expected unsigned int [usertype] key > net/ipv4/route.c:783:46: got restricted __be32 [usertype] new_gw > > Signed-off-by: Kunwu Chan <chentao@kylinos.cn> We need Fixes: tag for networking patches. > --- > net/ipv4/route.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/ipv4/route.c b/net/ipv4/route.c > index 3290a4442b4a..e8a542c6b031 100644 > --- a/net/ipv4/route.c > +++ b/net/ipv4/route.c > @@ -780,7 +780,7 @@ static void __ip_do_redirect(struct rtable *rt, struct sk_buff *skb, struct flow > goto reject_redirect; > } > > - n = __ipv4_neigh_lookup(rt->dst.dev, new_gw); > + n = __ipv4_neigh_lookup(rt->dst.dev, be32_to_cpu(new_gw)); > if (!n) > n = neigh_create(&arp_tbl, &new_gw, rt->dst.dev); > if (!IS_ERR(n)) { > -- > 2.34.1 > How was this patch tested ? You are 'fixing' sparse warnings by replacing them with real bugs. be32_to_cpu() is going to swap bytes on x86, so the lookup will fail horribly. Here, if you must silence sparse, you want (__force u32)new_gw Look at this commit for a template. commit 3c42b2019863b327caa233072c50739d4144dd16
Hi Eric, Thank you so much for taking the time to guide me, I'm a rookie who really wants to do my part for the kernel, and I can't get started, so I thought about eliminating some of the sparse warnings. I've looked at some other commits and thought I could resolve the alert this way, sorry for the trouble. Follow your suggestion: 1. I will add a 'Fixes' tag as follows: 'Fixes: 969447f226b4 ("ipv4: use new_gw for redirect neigh lookup")' 2. Refer to the modification method of commit 3c42b2019863b327caa233072c50739d4144dd16, and modify the patch to: 'n = __ipv4_neigh_lookup(rt->dst.dev, (__force u32)new_gw); ' On 2023/11/18 01:15, Eric Dumazet wrote: > On Fri, Nov 17, 2023 at 6:07 PM Kunwu Chan <chentao@kylinos.cn> wrote: >> >> net/ipv4/route.c:783:46: warning: incorrect type in argument 2 (different base types) >> net/ipv4/route.c:783:46: expected unsigned int [usertype] key >> net/ipv4/route.c:783:46: got restricted __be32 [usertype] new_gw >> >> Signed-off-by: Kunwu Chan <chentao@kylinos.cn> > > We need Fixes: tag for networking patches. > >> --- >> net/ipv4/route.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/net/ipv4/route.c b/net/ipv4/route.c >> index 3290a4442b4a..e8a542c6b031 100644 >> --- a/net/ipv4/route.c >> +++ b/net/ipv4/route.c >> @@ -780,7 +780,7 @@ static void __ip_do_redirect(struct rtable *rt, struct sk_buff *skb, struct flow >> goto reject_redirect; >> } >> >> - n = __ipv4_neigh_lookup(rt->dst.dev, new_gw); >> + n = __ipv4_neigh_lookup(rt->dst.dev, be32_to_cpu(new_gw)); >> if (!n) >> n = neigh_create(&arp_tbl, &new_gw, rt->dst.dev); >> if (!IS_ERR(n)) { >> -- >> 2.34.1 >> > > How was this patch tested ? > > You are 'fixing' sparse warnings by replacing them with real bugs. > > be32_to_cpu() is going to swap bytes on x86, so the lookup will fail horribly. > > Here, if you must silence sparse, you want (__force u32)new_gw > > Look at this commit for a template. > > commit 3c42b2019863b327caa233072c50739d4144dd16
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 3290a4442b4a..e8a542c6b031 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -780,7 +780,7 @@ static void __ip_do_redirect(struct rtable *rt, struct sk_buff *skb, struct flow goto reject_redirect; } - n = __ipv4_neigh_lookup(rt->dst.dev, new_gw); + n = __ipv4_neigh_lookup(rt->dst.dev, be32_to_cpu(new_gw)); if (!n) n = neigh_create(&arp_tbl, &new_gw, rt->dst.dev); if (!IS_ERR(n)) {
net/ipv4/route.c:783:46: warning: incorrect type in argument 2 (different base types) net/ipv4/route.c:783:46: expected unsigned int [usertype] key net/ipv4/route.c:783:46: got restricted __be32 [usertype] new_gw Signed-off-by: Kunwu Chan <chentao@kylinos.cn> --- net/ipv4/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)