All of lore.kernel.org
 help / color / mirror / Atom feed
* [net-ipv4] question about arguments position
@ 2017-05-04 16:07 Gustavo A. R. Silva
  2017-05-04 16:46 ` David Miller
  0 siblings, 1 reply; 15+ messages in thread
From: Gustavo A. R. Silva @ 2017-05-04 16:07 UTC (permalink / raw)
  To: David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy
  Cc: netdev, linux-kernel


Hello everybody,

While looking into Coverity ID 1357474 I ran into the following piece  
of code at net/ipv4/inet_diag.c:392:

struct sock *inet_diag_find_one_icsk(struct net *net,
                                      struct inet_hashinfo *hashinfo,
                                      const struct inet_diag_req_v2 *req)
{
         struct sock *sk;

         rcu_read_lock();
         if (req->sdiag_family == AF_INET)
                 sk = inet_lookup(net, hashinfo, NULL, 0, req->id.idiag_dst[0],
                                  req->id.idiag_dport, req->id.idiag_src[0],
                                  req->id.idiag_sport, req->id.idiag_if);
#if IS_ENABLED(CONFIG_IPV6)
         else if (req->sdiag_family == AF_INET6) {
                 if (ipv6_addr_v4mapped((struct in6_addr  
*)req->id.idiag_dst) &&
                     ipv6_addr_v4mapped((struct in6_addr *)req->id.idiag_src))
                         sk = inet_lookup(net, hashinfo, NULL, 0,  
req->id.idiag_dst[3],
                                          req->id.idiag_dport,  
req->id.idiag_src[3],
                                          req->id.idiag_sport,  
req->id.idiag_if);
                 else
                         sk = inet6_lookup(net, hashinfo, NULL, 0,
                                           (struct in6_addr  
*)req->id.idiag_dst,
                                           req->id.idiag_dport,
                                           (struct in6_addr  
*)req->id.idiag_src,
                                           req->id.idiag_sport,
                                           req->id.idiag_if);
         }
#endif

The issue here is that the position of arguments in the call to  
inet_lookup() and inet6_lookup() functions do not match the order of  
the parameters:

req->id.idiag_dport is passed to sport
req->id.idiag_sport is passed to dport

These are the function prototypes:

static inline struct sock *inet_lookup(struct net *net,
				       struct inet_hashinfo *hashinfo,
				       struct sk_buff *skb, int doff,
				       const __be32 saddr, const __be16 sport,
				       const __be32 daddr, const __be16 dport,
				       const int dif)

struct sock *inet6_lookup(struct net *net, struct inet_hashinfo *hashinfo,
			  struct sk_buff *skb, int doff,
			  const struct in6_addr *saddr, const __be16 sport,
			  const struct in6_addr *daddr, const __be16 dport,
			  const int dif)

My question here is if this is intentional?

In case it is not, I will send a patch to fix it. But first it would  
be great to hear any comment about it.

Thank you!
--
Gustavo A. R. Silva

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2017-05-08 16:06 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-04 16:07 [net-ipv4] question about arguments position Gustavo A. R. Silva
2017-05-04 16:46 ` David Miller
2017-05-04 16:56   ` Gustavo A. R. Silva
2017-05-04 16:56     ` Gustavo A. R. Silva
2017-05-04 17:47   ` Joe Perches
2017-05-04 19:00     ` Gustavo A. R. Silva
2017-05-04 19:00       ` Gustavo A. R. Silva
2017-05-04 19:02       ` Joe Perches
2017-05-04 19:15         ` Gustavo A. R. Silva
2017-05-04 19:17           ` Joe Perches
2017-05-04 19:24             ` Gustavo A. R. Silva
2017-05-04 19:44               ` [PATCH] net: ipv4: add code comment for clarification Gustavo A. R. Silva
2017-05-08 15:36                 ` David Miller
2017-05-08 15:44                   ` Gustavo A. R. Silva
2017-05-08 15:44                     ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.