Author: tuexen
Date: Mon Apr 18 20:16:41 2016
New Revision: 298223
URL: https://svnweb.freebsd.org/changeset/base/298223

Log:
  Address issues found by the XCode code analyzer.

Modified:
  head/sys/netinet/sctp_indata.c
  head/sys/netinet/sctp_usrreq.c
  head/sys/netinet/sctputil.c
  head/sys/netinet/sctputil.h
  head/sys/netinet6/sctp6_usrreq.c

Modified: head/sys/netinet/sctp_indata.c
==============================================================================
--- head/sys/netinet/sctp_indata.c      Mon Apr 18 19:27:51 2016        
(r298222)
+++ head/sys/netinet/sctp_indata.c      Mon Apr 18 20:16:41 2016        
(r298223)
@@ -413,7 +413,6 @@ sctp_place_control_in_stream(struct sctp
 
 static void
 sctp_abort_in_reasm(struct sctp_tcb *stcb,
-    struct sctp_stream_in *strm,
     struct sctp_queued_to_read *control,
     struct sctp_tmit_chunk *chk,
     int *abort_flag, int opspot)
@@ -431,7 +430,7 @@ sctp_abort_in_reasm(struct sctp_tcb *stc
                    chk->rec.data.fsn_num, chk->rec.data.stream_seq);
        } else {
                snprintf(msg, sizeof(msg),
-                   "Reass %x, CI:%x,TSN=%8.8x,SID=%4.4x,FSN=%4.4x, SSN:%4.4x",
+                   "Reass %x,CI:%x,TSN=%8.8x,SID=%4.4x,FSN=%4.4x,SSN:%4.4x",
                    opspot,
                    control->fsn_included,
                    chk->rec.data.TSN_seq,
@@ -610,16 +609,13 @@ protocol_error:
                 * to put it on the queue.
                 */
                if (sctp_place_control_in_stream(strm, asoc, control)) {
-                       char msg[SCTP_DIAG_INFO_LEN];
-                       struct mbuf *oper;
-
                        snprintf(msg, sizeof(msg),
                            "Queue to str msg_id: %u duplicate",
                            control->msg_id);
                        clean_up_control(stcb, control);
-                       oper = 
sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg);
+                       op_err = 
sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg);
                        stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA 
+ SCTP_LOC_3;
-                       sctp_abort_an_association(stcb->sctp_ep, stcb, oper, 
SCTP_SO_NOT_LOCKED);
+                       sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, 
SCTP_SO_NOT_LOCKED);
                        *abort_flag = 1;
                }
        }
@@ -829,7 +825,7 @@ restart:
                                        TAILQ_REMOVE(&strm->uno_inqueue, 
control, next_instrm);
                                        control->on_strm_q = 0;
                                }
-                               sctp_wakeup_the_read_socket(stcb->sctp_ep);
+                               sctp_wakeup_the_read_socket(stcb->sctp_ep, 
stcb, SCTP_SO_NOT_LOCKED);
                                if ((nc) && (nc->first_frag_seen)) {
                                        /*
                                         * Switch to the new guy and
@@ -852,7 +848,7 @@ restart:
                    SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED);
                strm->pd_api_started = 1;
                control->pdapi_started = 1;
-               sctp_wakeup_the_read_socket(stcb->sctp_ep);
+               sctp_wakeup_the_read_socket(stcb->sctp_ep, stcb, 
SCTP_SO_NOT_LOCKED);
                return (0);
        } else {
                return (1);
@@ -861,7 +857,6 @@ restart:
 
 static void
 sctp_inject_old_data_unordered(struct sctp_tcb *stcb, struct sctp_association 
*asoc,
-    struct sctp_stream_in *strm,
     struct sctp_queued_to_read *control,
     struct sctp_tmit_chunk *chk,
     int *abort_flag)
@@ -908,7 +903,7 @@ sctp_inject_old_data_unordered(struct sc
                                 * only happen if we can get more TSN's
                                 * higher before the pd-api-point.
                                 */
-                               sctp_abort_in_reasm(stcb, strm, control, chk,
+                               sctp_abort_in_reasm(stcb, control, chk,
                                    abort_flag,
                                    SCTP_FROM_SCTP_INDATA + SCTP_LOC_4);
 
@@ -971,7 +966,7 @@ place_chunk:
                                chk->data = NULL;
                        }
                        sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED);
-                       sctp_abort_in_reasm(stcb, strm, control, chk,
+                       sctp_abort_in_reasm(stcb, control, chk,
                            abort_flag,
                            SCTP_FROM_SCTP_INDATA + SCTP_LOC_5);
                        return;
@@ -1010,7 +1005,6 @@ sctp_deliver_reasm_check(struct sctp_tcb
        if ((control) &&
            (asoc->idata_supported == 0)) {
                /* Special handling needed for "old" data format */
-               nctl = TAILQ_NEXT(control, next_instrm);
                if (sctp_handle_old_data(stcb, asoc, strm, control, pd_point)) {
                        goto done_un;
                }
@@ -1269,7 +1263,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                if (sctp_place_control_in_stream(strm, asoc, control)) {
                        /* Duplicate SSN? */
                        clean_up_control(stcb, control);
-                       sctp_abort_in_reasm(stcb, strm, control, chk,
+                       sctp_abort_in_reasm(stcb, control, chk,
                            abort_flag,
                            SCTP_FROM_SCTP_INDATA + SCTP_LOC_6);
                        return;
@@ -1281,7 +1275,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                         * and we have up to the cum-ack then its invalid.
                         */
                        if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 
0) {
-                               sctp_abort_in_reasm(stcb, strm, control, chk,
+                               sctp_abort_in_reasm(stcb, control, chk,
                                    abort_flag,
                                    SCTP_FROM_SCTP_INDATA + SCTP_LOC_7);
                                return;
@@ -1289,7 +1283,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                }
        }
        if ((asoc->idata_supported == 0) && (unordered == 1)) {
-               sctp_inject_old_data_unordered(stcb, asoc, strm, control, chk, 
abort_flag);
+               sctp_inject_old_data_unordered(stcb, asoc, control, chk, 
abort_flag);
                return;
        }
        /*
@@ -1311,7 +1305,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                         * un-ordered chunks that were fragmented at the
                         * same time in the same stream.
                         */
-                       sctp_abort_in_reasm(stcb, strm, control, chk,
+                       sctp_abort_in_reasm(stcb, control, chk,
                            abort_flag,
                            SCTP_FROM_SCTP_INDATA + SCTP_LOC_8);
                        return;
@@ -1353,7 +1347,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                                         * We have already delivered up to
                                         * this so its a dup
                                         */
-                                       sctp_abort_in_reasm(stcb, strm, 
control, chk,
+                                       sctp_abort_in_reasm(stcb, control, chk,
                                            abort_flag,
                                            SCTP_FROM_SCTP_INDATA + SCTP_LOC_9);
                                        return;
@@ -1365,7 +1359,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                                SCTPDBG(SCTP_DEBUG_XXX,
                                    "Duplicate last fsn: %u (top: %u) -- 
abort\n",
                                    chk->rec.data.fsn_num, control->top_fsn);
-                               sctp_abort_in_reasm(stcb, strm, control,
+                               sctp_abort_in_reasm(stcb, control,
                                    chk, abort_flag,
                                    SCTP_FROM_SCTP_INDATA + SCTP_LOC_10);
                                return;
@@ -1386,7 +1380,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                                        SCTPDBG(SCTP_DEBUG_XXX,
                                            "New fsn: %u is already seen in 
included_fsn: %u -- abort\n",
                                            chk->rec.data.fsn_num, 
control->fsn_included);
-                                       sctp_abort_in_reasm(stcb, strm, 
control, chk,
+                                       sctp_abort_in_reasm(stcb, control, chk,
                                            abort_flag,
                                            SCTP_FROM_SCTP_INDATA + 
SCTP_LOC_11);
                                        return;
@@ -1401,7 +1395,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                                    "New fsn: %u is beyond or at top_fsn: %u -- 
abort\n",
                                    chk->rec.data.fsn_num,
                                    control->top_fsn);
-                               sctp_abort_in_reasm(stcb, strm, control, chk,
+                               sctp_abort_in_reasm(stcb, control, chk,
                                    abort_flag,
                                    SCTP_FROM_SCTP_INDATA + SCTP_LOC_12);
                                return;
@@ -1444,7 +1438,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
                                SCTPDBG(SCTP_DEBUG_XXX,
                                    "Duplicate to fsn: %u -- abort\n",
                                    at->rec.data.fsn_num);
-                               sctp_abort_in_reasm(stcb, strm, control,
+                               sctp_abort_in_reasm(stcb, control,
                                    chk, abort_flag,
                                    SCTP_FROM_SCTP_INDATA + SCTP_LOC_13);
                                return;
@@ -1502,7 +1496,7 @@ sctp_queue_data_for_reasm(struct sctp_tc
        }
        if ((control->on_read_q) && (cnt_added > 0)) {
                /* Need to wakeup the reader */
-               sctp_wakeup_the_read_socket(stcb->sctp_ep);
+               sctp_wakeup_the_read_socket(stcb->sctp_ep, stcb, 
SCTP_SO_NOT_LOCKED);
        }
 }
 
@@ -1564,7 +1558,6 @@ sctp_process_a_data_chunk(struct sctp_tc
        if (chtype == SCTP_IDATA) {
                nch = (struct sctp_idata_chunk *)sctp_m_getptr(*m, offset,
                    sizeof(struct sctp_idata_chunk), (uint8_t *) & chunk_buf);
-
                ch = (struct sctp_data_chunk *)nch;
                clen = sizeof(struct sctp_idata_chunk);
                tsn = ntohl(ch->dp.tsn);
@@ -1577,7 +1570,6 @@ sctp_process_a_data_chunk(struct sctp_tc
        } else {
                ch = (struct sctp_data_chunk *)sctp_m_getptr(*m, offset,
                    sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf);
-
                tsn = ntohl(ch->dp.tsn);
                clen = sizeof(struct sctp_data_chunk);
                fsn = tsn;
@@ -1590,15 +1582,12 @@ sctp_process_a_data_chunk(struct sctp_tc
                /*
                 * Need to send an abort since we had a empty data chunk.
                 */
-               struct mbuf *op_err;
-
                op_err = sctp_generate_no_user_data_cause(ch->dp.tsn);
                stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + 
SCTP_LOC_14;
                sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, 
SCTP_SO_NOT_LOCKED);
                *abort_flag = 1;
                return (0);
        }
-       ordered = ((chunk_flags & SCTP_DATA_UNORDERED) == 0);
        if ((chunk_flags & SCTP_DATA_SACK_IMMEDIATELY) == 
SCTP_DATA_SACK_IMMEDIATELY) {
                asoc->send_sack = 1;
        }

Modified: head/sys/netinet/sctp_usrreq.c
==============================================================================
--- head/sys/netinet/sctp_usrreq.c      Mon Apr 18 19:27:51 2016        
(r298222)
+++ head/sys/netinet/sctp_usrreq.c      Mon Apr 18 20:16:41 2016        
(r298223)
@@ -242,7 +242,8 @@ sctp_notify(struct sctp_inpcb *inp,
 void
 sctp_ctlinput(int cmd, struct sockaddr *sa, void *vip)
 {
-       struct ip *outer_ip, *inner_ip;
+       struct ip *outer_ip;
+       struct ip *inner_ip;
        struct sctphdr *sh;
        struct icmp *icmp;
        struct sctp_inpcb *inp;

Modified: head/sys/netinet/sctputil.c
==============================================================================
--- head/sys/netinet/sctputil.c Mon Apr 18 19:27:51 2016        (r298222)
+++ head/sys/netinet/sctputil.c Mon Apr 18 20:16:41 2016        (r298223)
@@ -4454,9 +4454,15 @@ sctp_pull_off_control_to_new_inp(struct 
 }
 
 void
-sctp_wakeup_the_read_socket(struct sctp_inpcb *inp)
+sctp_wakeup_the_read_socket(struct sctp_inpcb *inp,
+    struct sctp_tcb *stcb,
+    int so_locked
+#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING)
+    SCTP_UNUSED
+#endif
+)
 {
-       if (inp && inp->sctp_socket) {
+       if ((inp != NULL) && (inp->sctp_socket != NULL)) {
                if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) {
                        SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket);
                } else {
@@ -4584,7 +4590,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp
        if (inp_read_lock_held == 0)
                SCTP_INP_READ_UNLOCK(inp);
        if (inp && inp->sctp_socket) {
-               sctp_wakeup_the_read_socket(inp);
+               sctp_wakeup_the_read_socket(inp, stcb, so_locked);
        }
 }
 

Modified: head/sys/netinet/sctputil.h
==============================================================================
--- head/sys/netinet/sctputil.h Mon Apr 18 19:27:51 2016        (r298222)
+++ head/sys/netinet/sctputil.h Mon Apr 18 20:16:41 2016        (r298223)
@@ -108,7 +108,12 @@ void
      sctp_mtu_size_reset(struct sctp_inpcb *, struct sctp_association *, 
uint32_t);
 
 void
-     sctp_wakeup_the_read_socket(struct sctp_inpcb *inp);
+sctp_wakeup_the_read_socket(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
+    int so_locked
+#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING)
+    SCTP_UNUSED
+#endif
+);
 
 void
 sctp_add_to_readq(struct sctp_inpcb *inp,

Modified: head/sys/netinet6/sctp6_usrreq.c
==============================================================================
--- head/sys/netinet6/sctp6_usrreq.c    Mon Apr 18 19:27:51 2016        
(r298222)
+++ head/sys/netinet6/sctp6_usrreq.c    Mon Apr 18 20:16:41 2016        
(r298223)
@@ -244,7 +244,6 @@ sctp6_notify(struct sctp_inpcb *inp,
                } else {
                        timer_stopped = 0;
                }
-               break;
                /* Update the path MTU. */
                if (net->mtu > next_mtu) {
                        net->mtu = next_mtu;
@@ -310,7 +309,7 @@ sctp6_ctlinput(int cmd, struct sockaddr 
                 * verification tag of the SCTP common header.
                 */
                if (ip6cp->ip6c_m->m_pkthdr.len <
-                   ip6cp->ip6c_off + offsetof(struct sctphdr, checksum)) {
+                   (int32_t) (ip6cp->ip6c_off + offsetof(struct sctphdr, 
checksum))) {
                        return;
                }
                /* Copy out the port numbers and the verification tag. */
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to