Hi all,

Today's linux-next merge of the net-next tree got a conflict in
net/ipv4/inet_diag.c between commit c8e2c80d7ec0 ("inet_diag: fix
possible overflow in inet_diag_dump_one_icsk()") from the net tree and
commit a4458343ac59 ("inet_diag: factorize code in new
inet_diag_msg_common_fill() helper") from the net-next tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    s...@canb.auug.org.au

diff --cc net/ipv4/inet_diag.c
index 592aff37366b,ac7b5c909fe7..000000000000
--- a/net/ipv4/inet_diag.c
+++ b/net/ipv4/inet_diag.c
@@@ -71,27 -66,39 +66,53 @@@ static void inet_diag_unlock_handler(co
        mutex_unlock(&inet_diag_table_mutex);
  }
  
 +static size_t inet_sk_attr_size(void)
 +{
 +      return    nla_total_size(sizeof(struct tcp_info))
 +              + nla_total_size(1) /* INET_DIAG_SHUTDOWN */
 +              + nla_total_size(1) /* INET_DIAG_TOS */
 +              + nla_total_size(1) /* INET_DIAG_TCLASS */
 +              + nla_total_size(sizeof(struct inet_diag_meminfo))
 +              + nla_total_size(sizeof(struct inet_diag_msg))
 +              + nla_total_size(SK_MEMINFO_VARS * sizeof(u32))
 +              + nla_total_size(TCP_CA_NAME_MAX)
 +              + nla_total_size(sizeof(struct tcpvegas_info))
 +              + 64;
 +}
 +
+ static void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock 
*sk)
+ {
+       r->idiag_family = sk->sk_family;
+ 
+       r->id.idiag_sport = htons(sk->sk_num);
+       r->id.idiag_dport = sk->sk_dport;
+       r->id.idiag_if = sk->sk_bound_dev_if;
+       sock_diag_save_cookie(sk, r->id.idiag_cookie);
+ 
+ #if IS_ENABLED(CONFIG_IPV6)
+       if (sk->sk_family == AF_INET6) {
+               *(struct in6_addr *)r->id.idiag_src = sk->sk_v6_rcv_saddr;
+               *(struct in6_addr *)r->id.idiag_dst = sk->sk_v6_daddr;
+       } else
+ #endif
+       {
+       memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
+       memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
+ 
+       r->id.idiag_src[0] = sk->sk_rcv_saddr;
+       r->id.idiag_dst[0] = sk->sk_daddr;
+       }
+ }
+ 
  int inet_sk_diag_fill(struct sock *sk, struct inet_connection_sock *icsk,
-                             struct sk_buff *skb, struct inet_diag_req_v2 *req,
-                             struct user_namespace *user_ns,                   
-                             u32 portid, u32 seq, u16 nlmsg_flags,
-                             const struct nlmsghdr *unlh)
+                     struct sk_buff *skb, const struct inet_diag_req_v2 *req,
+                     struct user_namespace *user_ns,
+                     u32 portid, u32 seq, u16 nlmsg_flags,
+                     const struct nlmsghdr *unlh)
  {
        const struct inet_sock *inet = inet_sk(sk);
+       const struct inet_diag_handler *handler;
+       int ext = req->idiag_ext;
        struct inet_diag_msg *r;
        struct nlmsghdr  *nlh;
        struct nlattr *attr;

Attachment: pgplAeSbwtKxE.pgp
Description: OpenPGP digital signature

Reply via email to