]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/sctp/sm_statefuns.c
mac80211: fix deadlocks in debugfs_netdev.c
[linux-2.6-omap-h63xx.git] / net / sctp / sm_statefuns.c
index f98658782d4fc6cf26759c3a55de11caa71b274a..b534dbef864f91cad6456f1b04b6ed455a069280 100644 (file)
@@ -1,23 +1,21 @@
-/* SCTP kernel reference Implementation
+/* SCTP kernel implementation
  * (C) Copyright IBM Corp. 2001, 2004
  * Copyright (c) 1999-2000 Cisco, Inc.
  * Copyright (c) 1999-2001 Motorola, Inc.
  * Copyright (c) 2001-2002 Intel Corp.
  * Copyright (c) 2002      Nokia Corp.
  *
- * This file is part of the SCTP kernel reference Implementation
- *
- * This is part of the SCTP Linux Kernel Reference Implementation.
+ * This is part of the SCTP Linux Kernel Implementation.
  *
  * These are the state functions for the state machine.
  *
- * The SCTP reference implementation is free software;
+ * This SCTP implementation is free software;
  * you can redistribute it and/or modify it under the terms of
  * the GNU General Public License as published by
  * the Free Software Foundation; either version 2, or (at your option)
  * any later version.
  *
- * The SCTP reference implementation is distributed in the hope that it
+ * This SCTP implementation is distributed in the hope that it
  * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  *                 ************************
  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -1126,7 +1124,7 @@ sctp_disposition_t sctp_sf_backbeat_8_3(const struct sctp_endpoint *ep,
                                printk(KERN_WARNING
                                    "%s association %p could not find address "
                                    NIP6_FMT "\n",
-                                   __FUNCTION__,
+                                   __func__,
                                    asoc,
                                    NIP6(from_addr.v6.sin6_addr));
                } else {
@@ -1134,7 +1132,7 @@ sctp_disposition_t sctp_sf_backbeat_8_3(const struct sctp_endpoint *ep,
                                printk(KERN_WARNING
                                    "%s association %p could not find address "
                                    NIPQUAD_FMT "\n",
-                                   __FUNCTION__,
+                                   __func__,
                                    asoc,
                                    NIPQUAD(from_addr.v4.sin_addr.s_addr));
                }
@@ -1152,7 +1150,7 @@ sctp_disposition_t sctp_sf_backbeat_8_3(const struct sctp_endpoint *ep,
            time_after(jiffies, hbinfo->sent_at + max_interval)) {
                SCTP_DEBUG_PRINTK("%s: HEARTBEAT ACK with invalid timestamp "
                                  "received for transport: %p\n",
-                                  __FUNCTION__, link);
+                                  __func__, link);
                return SCTP_DISPOSITION_DISCARD;
        }
 
@@ -3137,12 +3135,8 @@ sctp_disposition_t sctp_sf_operr_notify(const struct sctp_endpoint *ep,
                if (!ev)
                        goto nomem;
 
-               if (!sctp_add_cmd(commands, SCTP_CMD_EVENT_ULP,
-                                 SCTP_ULPEVENT(ev))) {
-                       sctp_ulpevent_free(ev);
-                       goto nomem;
-               }
-
+               sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP,
+                               SCTP_ULPEVENT(ev));
                sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_OPERR,
                                SCTP_CHUNK(chunk));
        }
@@ -3670,7 +3664,7 @@ sctp_disposition_t sctp_sf_eat_fwd_tsn(const struct sctp_endpoint *ep,
        skb_pull(chunk->skb, len);
 
        tsn = ntohl(fwdtsn_hdr->new_cum_tsn);
-       SCTP_DEBUG_PRINTK("%s: TSN 0x%x.\n", __FUNCTION__, tsn);
+       SCTP_DEBUG_PRINTK("%s: TSN 0x%x.\n", __func__, tsn);
 
        /* The TSN is too high--silently discard the chunk and count on it
         * getting retransmitted later.
@@ -3730,7 +3724,7 @@ sctp_disposition_t sctp_sf_eat_fwd_tsn_fast(
        skb_pull(chunk->skb, len);
 
        tsn = ntohl(fwdtsn_hdr->new_cum_tsn);
-       SCTP_DEBUG_PRINTK("%s: TSN 0x%x.\n", __FUNCTION__, tsn);
+       SCTP_DEBUG_PRINTK("%s: TSN 0x%x.\n", __func__, tsn);
 
        /* The TSN is too high--silently discard the chunk and count on it
         * getting retransmitted later.
@@ -4221,7 +4215,7 @@ static sctp_disposition_t sctp_sf_violation_chunklen(
                                     void *arg,
                                     sctp_cmd_seq_t *commands)
 {
-       char err_str[]="The following chunk had invalid length:";
+       static const char err_str[]="The following chunk had invalid length:";
 
        return sctp_sf_abort_violation(ep, asoc, arg, commands, err_str,
                                        sizeof(err_str));
@@ -4238,7 +4232,7 @@ static sctp_disposition_t sctp_sf_violation_paramlen(
                                     const sctp_subtype_t type,
                                     void *arg,
                                     sctp_cmd_seq_t *commands) {
-       char err_str[] = "The following parameter had invalid length:";
+       static const char err_str[] = "The following parameter had invalid length:";
 
        return sctp_sf_abort_violation(ep, asoc, arg, commands, err_str,
                                        sizeof(err_str));
@@ -4257,7 +4251,7 @@ static sctp_disposition_t sctp_sf_violation_ctsn(
                                     void *arg,
                                     sctp_cmd_seq_t *commands)
 {
-       char err_str[]="The cumulative tsn ack beyond the max tsn currently sent:";
+       static const char err_str[]="The cumulative tsn ack beyond the max tsn currently sent:";
 
        return sctp_sf_abort_violation(ep, asoc, arg, commands, err_str,
                                        sizeof(err_str));
@@ -4276,7 +4270,7 @@ static sctp_disposition_t sctp_sf_violation_chunk(
                                     void *arg,
                                     sctp_cmd_seq_t *commands)
 {
-       char err_str[]="The following chunk violates protocol:";
+       static const char err_str[]="The following chunk violates protocol:";
 
        if (!asoc)
                return sctp_sf_violation(ep, asoc, type, arg, commands);
@@ -5314,6 +5308,8 @@ sctp_disposition_t sctp_sf_t2_timer_expire(const struct sctp_endpoint *ep,
        SCTP_DEBUG_PRINTK("Timer T2 expired.\n");
        SCTP_INC_STATS(SCTP_MIB_T2_SHUTDOWN_EXPIREDS);
 
+       ((struct sctp_association *)asoc)->shutdown_retries++;
+
        if (asoc->overall_error_count >= asoc->max_retrans) {
                sctp_add_cmd_sf(commands, SCTP_CMD_SET_SK_ERR,
                                SCTP_ERROR(ETIMEDOUT));