lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 8 Sep 2016 04:33:59 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Lorenzo Colitti <lorenzo@...gle.com>
Cc:     kbuild-all@...org, netdev@...r.kernel.org, ek@...gle.com,
        eric.dumazet@...il.com, davem@...emloft.net,
        dsa@...ulusnetworks.com, Lorenzo Colitti <lorenzo@...gle.com>
Subject: Re: [PATCH net-next] net: inet: diag: expose the socket mark to
 privileged processes.

Hi Lorenzo,

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Lorenzo-Colitti/net-inet-diag-expose-the-socket-mark-to-privileged-processes/20160907-181944
config: x86_64-randconfig-s2-09071905 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from net/sctp/sctp_diag.c:1:
   net/sctp/sctp_diag.c: In function 'inet_sctp_diag_fill':
   net/sctp/sctp_diag.c:136:6: error: too few arguments to function 'inet_diag_msg_attrs_fill'
     if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
         ^
   include/linux/compiler.h:149:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> net/sctp/sctp_diag.c:136:2: note: in expansion of macro 'if'
     if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
     ^~
   In file included from net/sctp/sctp_diag.c:2:0:
   include/linux/inet_diag.h:57:5: note: declared here
    int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,
        ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from net/sctp/sctp_diag.c:1:
   net/sctp/sctp_diag.c:136:6: error: too few arguments to function 'inet_diag_msg_attrs_fill'
     if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
         ^
   include/linux/compiler.h:149:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^~~~
>> net/sctp/sctp_diag.c:136:2: note: in expansion of macro 'if'
     if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
     ^~
   In file included from net/sctp/sctp_diag.c:2:0:
   include/linux/inet_diag.h:57:5: note: declared here
    int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,
        ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from net/sctp/sctp_diag.c:1:
   net/sctp/sctp_diag.c:136:6: error: too few arguments to function 'inet_diag_msg_attrs_fill'
     if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
         ^
   include/linux/compiler.h:160:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^~~~
>> net/sctp/sctp_diag.c:136:2: note: in expansion of macro 'if'
     if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
     ^~
   In file included from net/sctp/sctp_diag.c:2:0:
   include/linux/inet_diag.h:57:5: note: declared here
    int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,
        ^~~~~~~~~~~~~~~~~~~~~~~~

vim +/if +136 net/sctp/sctp_diag.c

8f840e47 Xin Long    2016-04-14   @1  #include <linux/module.h>
8f840e47 Xin Long    2016-04-14    2  #include <linux/inet_diag.h>
8f840e47 Xin Long    2016-04-14    3  #include <linux/sock_diag.h>
8f840e47 Xin Long    2016-04-14    4  #include <net/sctp/sctp.h>
8f840e47 Xin Long    2016-04-14    5  
8f840e47 Xin Long    2016-04-14    6  static void sctp_diag_get_info(struct sock *sk, struct inet_diag_msg *r,
8f840e47 Xin Long    2016-04-14    7  			       void *info);
8f840e47 Xin Long    2016-04-14    8  
8f840e47 Xin Long    2016-04-14    9  /* define some functions to make asoc/ep fill look clean */
8f840e47 Xin Long    2016-04-14   10  static void inet_diag_msg_sctpasoc_fill(struct inet_diag_msg *r,
8f840e47 Xin Long    2016-04-14   11  					struct sock *sk,
8f840e47 Xin Long    2016-04-14   12  					struct sctp_association *asoc)
8f840e47 Xin Long    2016-04-14   13  {
8f840e47 Xin Long    2016-04-14   14  	union sctp_addr laddr, paddr;
8f840e47 Xin Long    2016-04-14   15  	struct dst_entry *dst;
12474e8e Phil Sutter 2016-08-04   16  	struct timer_list *t3_rtx = &asoc->peer.primary_path->T3_rtx_timer;
8f840e47 Xin Long    2016-04-14   17  
8f840e47 Xin Long    2016-04-14   18  	laddr = list_entry(asoc->base.bind_addr.address_list.next,
8f840e47 Xin Long    2016-04-14   19  			   struct sctp_sockaddr_entry, list)->a;
8f840e47 Xin Long    2016-04-14   20  	paddr = asoc->peer.primary_path->ipaddr;
8f840e47 Xin Long    2016-04-14   21  	dst = asoc->peer.primary_path->dst;
8f840e47 Xin Long    2016-04-14   22  
8f840e47 Xin Long    2016-04-14   23  	r->idiag_family = sk->sk_family;
8f840e47 Xin Long    2016-04-14   24  	r->id.idiag_sport = htons(asoc->base.bind_addr.port);
8f840e47 Xin Long    2016-04-14   25  	r->id.idiag_dport = htons(asoc->peer.port);
8f840e47 Xin Long    2016-04-14   26  	r->id.idiag_if = dst ? dst->dev->ifindex : 0;
8f840e47 Xin Long    2016-04-14   27  	sock_diag_save_cookie(sk, r->id.idiag_cookie);
8f840e47 Xin Long    2016-04-14   28  
8f840e47 Xin Long    2016-04-14   29  #if IS_ENABLED(CONFIG_IPV6)
8f840e47 Xin Long    2016-04-14   30  	if (sk->sk_family == AF_INET6) {
8f840e47 Xin Long    2016-04-14   31  		*(struct in6_addr *)r->id.idiag_src = laddr.v6.sin6_addr;
8f840e47 Xin Long    2016-04-14   32  		*(struct in6_addr *)r->id.idiag_dst = paddr.v6.sin6_addr;
8f840e47 Xin Long    2016-04-14   33  	} else
8f840e47 Xin Long    2016-04-14   34  #endif
8f840e47 Xin Long    2016-04-14   35  	{
8f840e47 Xin Long    2016-04-14   36  		memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
8f840e47 Xin Long    2016-04-14   37  		memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
8f840e47 Xin Long    2016-04-14   38  
8f840e47 Xin Long    2016-04-14   39  		r->id.idiag_src[0] = laddr.v4.sin_addr.s_addr;
8f840e47 Xin Long    2016-04-14   40  		r->id.idiag_dst[0] = paddr.v4.sin_addr.s_addr;
8f840e47 Xin Long    2016-04-14   41  	}
8f840e47 Xin Long    2016-04-14   42  
8f840e47 Xin Long    2016-04-14   43  	r->idiag_state = asoc->state;
12474e8e Phil Sutter 2016-08-04   44  	if (timer_pending(t3_rtx)) {
8f840e47 Xin Long    2016-04-14   45  		r->idiag_timer = SCTP_EVENT_TIMEOUT_T3_RTX;
8f840e47 Xin Long    2016-04-14   46  		r->idiag_retrans = asoc->rtx_data_chunks;
12474e8e Phil Sutter 2016-08-04   47  		r->idiag_expires = jiffies_to_msecs(t3_rtx->expires - jiffies);
12474e8e Phil Sutter 2016-08-04   48  	} else {
12474e8e Phil Sutter 2016-08-04   49  		r->idiag_timer = 0;
12474e8e Phil Sutter 2016-08-04   50  		r->idiag_retrans = 0;
12474e8e Phil Sutter 2016-08-04   51  		r->idiag_expires = 0;
12474e8e Phil Sutter 2016-08-04   52  	}
8f840e47 Xin Long    2016-04-14   53  }
8f840e47 Xin Long    2016-04-14   54  
8f840e47 Xin Long    2016-04-14   55  static int inet_diag_msg_sctpladdrs_fill(struct sk_buff *skb,
8f840e47 Xin Long    2016-04-14   56  					 struct list_head *address_list)
8f840e47 Xin Long    2016-04-14   57  {
8f840e47 Xin Long    2016-04-14   58  	struct sctp_sockaddr_entry *laddr;
8f840e47 Xin Long    2016-04-14   59  	int addrlen = sizeof(struct sockaddr_storage);
8f840e47 Xin Long    2016-04-14   60  	int addrcnt = 0;
8f840e47 Xin Long    2016-04-14   61  	struct nlattr *attr;
8f840e47 Xin Long    2016-04-14   62  	void *info = NULL;
8f840e47 Xin Long    2016-04-14   63  
8f840e47 Xin Long    2016-04-14   64  	list_for_each_entry_rcu(laddr, address_list, list)
8f840e47 Xin Long    2016-04-14   65  		addrcnt++;
8f840e47 Xin Long    2016-04-14   66  
8f840e47 Xin Long    2016-04-14   67  	attr = nla_reserve(skb, INET_DIAG_LOCALS, addrlen * addrcnt);
8f840e47 Xin Long    2016-04-14   68  	if (!attr)
8f840e47 Xin Long    2016-04-14   69  		return -EMSGSIZE;
8f840e47 Xin Long    2016-04-14   70  
8f840e47 Xin Long    2016-04-14   71  	info = nla_data(attr);
8f840e47 Xin Long    2016-04-14   72  	list_for_each_entry_rcu(laddr, address_list, list) {
8f840e47 Xin Long    2016-04-14   73  		memcpy(info, &laddr->a, addrlen);
8f840e47 Xin Long    2016-04-14   74  		info += addrlen;
8f840e47 Xin Long    2016-04-14   75  	}
8f840e47 Xin Long    2016-04-14   76  
8f840e47 Xin Long    2016-04-14   77  	return 0;
8f840e47 Xin Long    2016-04-14   78  }
8f840e47 Xin Long    2016-04-14   79  
8f840e47 Xin Long    2016-04-14   80  static int inet_diag_msg_sctpaddrs_fill(struct sk_buff *skb,
8f840e47 Xin Long    2016-04-14   81  					struct sctp_association *asoc)
8f840e47 Xin Long    2016-04-14   82  {
8f840e47 Xin Long    2016-04-14   83  	int addrlen = sizeof(struct sockaddr_storage);
8f840e47 Xin Long    2016-04-14   84  	struct sctp_transport *from;
8f840e47 Xin Long    2016-04-14   85  	struct nlattr *attr;
8f840e47 Xin Long    2016-04-14   86  	void *info = NULL;
8f840e47 Xin Long    2016-04-14   87  
8f840e47 Xin Long    2016-04-14   88  	attr = nla_reserve(skb, INET_DIAG_PEERS,
8f840e47 Xin Long    2016-04-14   89  			   addrlen * asoc->peer.transport_count);
8f840e47 Xin Long    2016-04-14   90  	if (!attr)
8f840e47 Xin Long    2016-04-14   91  		return -EMSGSIZE;
8f840e47 Xin Long    2016-04-14   92  
8f840e47 Xin Long    2016-04-14   93  	info = nla_data(attr);
8f840e47 Xin Long    2016-04-14   94  	list_for_each_entry(from, &asoc->peer.transport_addr_list,
8f840e47 Xin Long    2016-04-14   95  			    transports) {
8f840e47 Xin Long    2016-04-14   96  		memcpy(info, &from->ipaddr, addrlen);
8f840e47 Xin Long    2016-04-14   97  		info += addrlen;
8f840e47 Xin Long    2016-04-14   98  	}
8f840e47 Xin Long    2016-04-14   99  
8f840e47 Xin Long    2016-04-14  100  	return 0;
8f840e47 Xin Long    2016-04-14  101  }
8f840e47 Xin Long    2016-04-14  102  
8f840e47 Xin Long    2016-04-14  103  /* sctp asoc/ep fill*/
8f840e47 Xin Long    2016-04-14  104  static int inet_sctp_diag_fill(struct sock *sk, struct sctp_association *asoc,
8f840e47 Xin Long    2016-04-14  105  			       struct sk_buff *skb,
8f840e47 Xin Long    2016-04-14  106  			       const struct inet_diag_req_v2 *req,
8f840e47 Xin Long    2016-04-14  107  			       struct user_namespace *user_ns,
8f840e47 Xin Long    2016-04-14  108  			       int portid, u32 seq, u16 nlmsg_flags,
8f840e47 Xin Long    2016-04-14  109  			       const struct nlmsghdr *unlh)
8f840e47 Xin Long    2016-04-14  110  {
8f840e47 Xin Long    2016-04-14  111  	struct sctp_endpoint *ep = sctp_sk(sk)->ep;
8f840e47 Xin Long    2016-04-14  112  	struct list_head *addr_list;
8f840e47 Xin Long    2016-04-14  113  	struct inet_diag_msg *r;
8f840e47 Xin Long    2016-04-14  114  	struct nlmsghdr  *nlh;
8f840e47 Xin Long    2016-04-14  115  	int ext = req->idiag_ext;
8f840e47 Xin Long    2016-04-14  116  	struct sctp_infox infox;
8f840e47 Xin Long    2016-04-14  117  	void *info = NULL;
8f840e47 Xin Long    2016-04-14  118  
8f840e47 Xin Long    2016-04-14  119  	nlh = nlmsg_put(skb, portid, seq, unlh->nlmsg_type, sizeof(*r),
8f840e47 Xin Long    2016-04-14  120  			nlmsg_flags);
8f840e47 Xin Long    2016-04-14  121  	if (!nlh)
8f840e47 Xin Long    2016-04-14  122  		return -EMSGSIZE;
8f840e47 Xin Long    2016-04-14  123  
8f840e47 Xin Long    2016-04-14  124  	r = nlmsg_data(nlh);
8f840e47 Xin Long    2016-04-14  125  	BUG_ON(!sk_fullsock(sk));
8f840e47 Xin Long    2016-04-14  126  
8f840e47 Xin Long    2016-04-14  127  	if (asoc) {
8f840e47 Xin Long    2016-04-14  128  		inet_diag_msg_sctpasoc_fill(r, sk, asoc);
8f840e47 Xin Long    2016-04-14  129  	} else {
8f840e47 Xin Long    2016-04-14  130  		inet_diag_msg_common_fill(r, sk);
8f840e47 Xin Long    2016-04-14  131  		r->idiag_state = sk->sk_state;
8f840e47 Xin Long    2016-04-14  132  		r->idiag_timer = 0;
8f840e47 Xin Long    2016-04-14  133  		r->idiag_retrans = 0;
8f840e47 Xin Long    2016-04-14  134  	}
8f840e47 Xin Long    2016-04-14  135  
8f840e47 Xin Long    2016-04-14 @136  	if (inet_diag_msg_attrs_fill(sk, skb, r, ext, user_ns))
8f840e47 Xin Long    2016-04-14  137  		goto errout;
8f840e47 Xin Long    2016-04-14  138  
8f840e47 Xin Long    2016-04-14  139  	if (ext & (1 << (INET_DIAG_SKMEMINFO - 1))) {

:::::: The code at line 136 was first introduced by commit
:::::: 8f840e47f190cbe61a96945c13e9551048d42cef sctp: add the sctp_diag.c file

:::::: TO: Xin Long <lucien.xin@...il.com>
:::::: CC: David S. Miller <davem@...emloft.net>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Download attachment ".config.gz" of type "application/octet-stream" (29858 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ