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] [day] [month] [year] [list]
Date:   Fri, 8 Dec 2017 11:44:53 +0800
From:   Xin Long <lucien.xin@...il.com>
To:     kbuild test robot <lkp@...el.com>
Cc:     kbuild-all@...org, network dev <netdev@...r.kernel.org>,
        linux-sctp@...r.kernel.org,
        Marcelo Ricardo Leitner <marcelo.leitner@...il.com>,
        Neil Horman <nhorman@...driver.com>,
        davem <davem@...emloft.net>
Subject: Re: [PATCH net-next 09/12] sctp: implement renege_events for sctp_stream_interleave

On Fri, Dec 8, 2017 at 11:45 AM, kbuild test robot <lkp@...el.com> wrote:
> Hi Xin,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on net-next/master]
>
> url:    https://github.com/0day-ci/linux/commits/Xin-Long/sctp-Implement-Stream-Interleave-The-I-DATA-Chunk-Supporting-User-Message-Interleaving/20171208-031625
> config: x86_64-randconfig-g0-12080821 (attached as .config)
> compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64
>
> Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
> http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
>
> All warnings (new ones prefixed by >>):
>
>    Cyclomatic Complexity 1 include/linux/spinlock.h:spinlock_check
>    Cyclomatic Complexity 1 include/linux/skbuff.h:skb_queue_empty
>    Cyclomatic Complexity 2 include/linux/skbuff.h:skb_peek_tail
>    Cyclomatic Complexity 1 include/linux/skbuff.h:__skb_queue_head_init
>    Cyclomatic Complexity 1 include/linux/skbuff.h:__skb_insert
>    Cyclomatic Complexity 1 include/linux/skbuff.h:__skb_queue_splice
>    Cyclomatic Complexity 2 include/linux/skbuff.h:skb_queue_splice_tail_init
>    Cyclomatic Complexity 1 include/linux/skbuff.h:__skb_queue_before
>    Cyclomatic Complexity 1 include/linux/skbuff.h:__skb_queue_tail
>    Cyclomatic Complexity 1 include/linux/skbuff.h:__skb_unlink
>    Cyclomatic Complexity 1 include/net/net_namespace.h:read_pnet
>    Cyclomatic Complexity 1 include/net/sock.h:sk_has_account
>    Cyclomatic Complexity 1 include/net/sock.h:sock_net
>    Cyclomatic Complexity 1 include/net/busy_poll.h:sk_mark_napi_id
>    Cyclomatic Complexity 1 include/net/sctp/ulpevent.h:sctp_skb2event
>    Cyclomatic Complexity 2 include/net/sctp/ulpevent.h:sctp_ulpevent_type_enabled
>    Cyclomatic Complexity 1 include/net/sctp/structs.h:sctp_sk
>    Cyclomatic Complexity 1 include/net/sctp/structs.h:sctp_chunk_stream_no
>    Cyclomatic Complexity 6 net//sctp/stream_interleave.c:sctp_validate_data
>    Cyclomatic Complexity 15 net//sctp/stream_interleave.c:sctp_intl_retrieve_first
>    Cyclomatic Complexity 16 net//sctp/stream_interleave.c:sctp_intl_retrieve_partial
>    Cyclomatic Complexity 25 net//sctp/stream_interleave.c:sctp_intl_retrieve_reassembled
>    Cyclomatic Complexity 3 include/net/sock.h:sk_mem_reclaim
>    Cyclomatic Complexity 2 include/net/sctp/ulpevent.h:sctp_event2skb
>    Cyclomatic Complexity 23 net//sctp/stream_interleave.c:sctp_intl_store_reasm
>    Cyclomatic Complexity 6 net//sctp/stream_interleave.c:sctp_intl_reasm
>    Cyclomatic Complexity 13 net//sctp/stream_interleave.c:sctp_intl_store_ordered
>    Cyclomatic Complexity 5 net//sctp/stream_interleave.c:sctp_intl_retrieve_ordered
>    Cyclomatic Complexity 3 net//sctp/stream_interleave.c:sctp_intl_order
>    Cyclomatic Complexity 2 include/net/sock.h:sk_incoming_cpu_update
>    Cyclomatic Complexity 2 include/net/sctp/ulpevent.h:sctp_ulpevent_is_enabled
>    Cyclomatic Complexity 9 net//sctp/stream_interleave.c:sctp_enqueue_event
>    Cyclomatic Complexity 4 net//sctp/stream_interleave.c:sctp_intl_start_pd
>    Cyclomatic Complexity 6 net//sctp/stream_interleave.c:sctp_validate_idata
>    Cyclomatic Complexity 8 net//sctp/stream_interleave.c:sctp_chunk_assign_mid
>    Cyclomatic Complexity 1 include/linux/skbuff.h:skb_queue_head_init
>    Cyclomatic Complexity 6 net//sctp/stream_interleave.c:sctp_ulpevent_idata
>    Cyclomatic Complexity 7 net//sctp/stream_interleave.c:sctp_renege_events
>    Cyclomatic Complexity 3 net//sctp/stream_interleave.c:sctp_make_idatafrag_empty
>    Cyclomatic Complexity 3 net//sctp/stream_interleave.c:sctp_stream_interleave_init
>    net//sctp/stream_interleave.c: In function 'sctp_renege_events':
>>> net//sctp/stream_interleave.c:581:26: warning: 'sin' may be used uninitialized in this function [-Wmaybe-uninitialized]
>            cevent->mid == sin->mid &&
>                              ^
>    net//sctp/stream_interleave.c:550:32: note: 'sin' was declared here
>      struct sctp_stream_in *csin, *sin;
>                                    ^
>
> vim +/sin +581 net//sctp/stream_interleave.c
>
>    547
>    548  static struct sctp_ulpevent *sctp_intl_retrieve_first(struct sctp_ulpq *ulpq)
>    549  {
>    550          struct sctp_stream_in *csin, *sin;
>    551          struct sk_buff *first_frag = NULL;
>    552          struct sk_buff *last_frag = NULL;
>    553          struct sctp_ulpevent *retval;
>    554          struct sk_buff *pos;
>    555          __u32 next_fsn = 0;
>    556          __u16 sid = 0;
>    557
>    558          skb_queue_walk(&ulpq->reasm, pos) {
>    559                  struct sctp_ulpevent *cevent = sctp_skb2event(pos);
>    560
>    561                  csin = sctp_stream_in(ulpq->asoc, cevent->stream);
>    562                  if (csin->pd_mode)
>    563                          continue;
>    564
>    565                  switch (cevent->msg_flags & SCTP_DATA_FRAG_MASK) {
>    566                  case SCTP_DATA_FIRST_FRAG:
>    567                          if (first_frag)
>    568                                  goto out;
>    569                          if (cevent->mid == csin->mid) {
>    570                                  first_frag = pos;
>    571                                  last_frag = pos;
>    572                                  next_fsn = 0;
>    573                                  sin = csin;
>    574                                  sid = cevent->stream;
>    575                          }
>    576                          break;
>    577                  case SCTP_DATA_MIDDLE_FRAG:
>    578                          if (!first_frag)
>    579                                  break;
>    580                          if (cevent->stream == sid &&
>  > 581                              cevent->mid == sin->mid &&
>    582                              cevent->fsn == next_fsn) {
>    583                                  next_fsn++;
>    584                                  last_frag = pos;
>    585                          } else {
>    586                                  goto out;
>    587                          }
>    588                          break;
>    589                  case SCTP_DATA_LAST_FRAG:
>    590                          if (first_frag)
>    591                                  goto out;
>    592                          break;
>    593                  default:
>    594                          break;
>    595                  }
>    596          }
>    597
>    598          if (!first_frag)
>    599                  return NULL;
>    600
>    601  out:
>    602          retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk),
>    603                                               &ulpq->reasm, first_frag,
>    604                                               last_frag);
>    605          if (retval) {
>    606                  sin->fsn = next_fsn;
>    607                  sin->pd_mode = 1;
This is safe,  it comes here only when sin already gets initialized.

>    608          }
>    609
>    610          return retval;
>    611  }
>    612
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ