sctp: update transport initializations
authorVlad Yasevich <vladislav.yasevich@hp.com>
Sat, 1 May 2010 02:41:10 +0000 (22:41 -0400)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Sat, 1 May 2010 02:41:10 +0000 (22:41 -0400)
Right now, sctp transports are not fully initialized and when
adding any new fields, they have to be explicitely initialized.
This is prone to mistakes.  So we switch to calling kzalloc()
which makes things much simpler.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
include/net/sctp/sctp.h
net/sctp/associola.c
net/sctp/endpointola.c
net/sctp/transport.c

index 59151557406ce2967a3d5441f05cde0bc592fab1..289241d31cc1a785436ca0b736c85d401d9dea26 100644 (file)
@@ -546,7 +546,7 @@ for (pos = chunk->subh.fwdtsn_hdr->skip;\
 #define WORD_ROUND(s) (((s)+3)&~3)
 
 /* Make a new instance of type.  */
-#define t_new(type, flags)     (type *)kmalloc(sizeof(type), flags)
+#define t_new(type, flags)     (type *)kzalloc(sizeof(type), flags)
 
 /* Compare two timevals.  */
 #define tv_lt(s, t) \
index fab9cb2783a72890b44eb70caf4836a87f4d8aad..37753cd48be3f45d7b8eb4f89bc4c73ae87b0310 100644 (file)
@@ -87,9 +87,6 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
        /* Retrieve the SCTP per socket area.  */
        sp = sctp_sk((struct sock *)sk);
 
-       /* Init all variables to a known value.  */
-       memset(asoc, 0, sizeof(struct sctp_association));
-
        /* Discarding const is appropriate here.  */
        asoc->ep = (struct sctp_endpoint *)ep;
        sctp_endpoint_hold(asoc->ep);
index 905fda582b92b652aebd8108feaa12f9cf92fb79..2f8763bae9ed15d647d3b2a81980aeff8c65ae2f 100644 (file)
@@ -70,8 +70,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
        struct sctp_shared_key *null_key;
        int err;
 
-       memset(ep, 0, sizeof(struct sctp_endpoint));
-
        ep->digest = kzalloc(SCTP_SIGNATURE_SIZE, gfp);
        if (!ep->digest)
                return NULL;
index 0ebb97fc98e0ffea95ea6a314065fbc4380bc3e0..854228bf3f344eea6f1954cf3d07200d5f7374b6 100644 (file)
@@ -64,9 +64,6 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
        /* Copy in the address.  */
        peer->ipaddr = *addr;
        peer->af_specific = sctp_get_af_specific(addr->sa.sa_family);
-       peer->asoc = NULL;
-
-       peer->dst = NULL;
        memset(&peer->saddr, 0, sizeof(union sctp_addr));
 
        /* From 6.3.1 RTO Calculation:
@@ -76,34 +73,21 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
         * parameter 'RTO.Initial'.
         */
        peer->rto = msecs_to_jiffies(sctp_rto_initial);
-       peer->rtt = 0;
-       peer->rttvar = 0;
-       peer->srtt = 0;
-       peer->rto_pending = 0;
-       peer->hb_sent = 0;
-       peer->fast_recovery = 0;
 
        peer->last_time_heard = jiffies;
        peer->last_time_ecne_reduced = jiffies;
 
-       peer->init_sent_count = 0;
-
        peer->param_flags = SPP_HB_DISABLE |
                            SPP_PMTUD_ENABLE |
                            SPP_SACKDELAY_ENABLE;
-       peer->hbinterval  = 0;
 
        /* Initialize the default path max_retrans.  */
        peer->pathmaxrxt  = sctp_max_retrans_path;
-       peer->error_count = 0;
 
        INIT_LIST_HEAD(&peer->transmitted);
        INIT_LIST_HEAD(&peer->send_ready);
        INIT_LIST_HEAD(&peer->transports);
 
-       peer->T3_rtx_timer.expires = 0;
-       peer->hb_timer.expires = 0;
-
        setup_timer(&peer->T3_rtx_timer, sctp_generate_t3_rtx_event,
                        (unsigned long)peer);
        setup_timer(&peer->hb_timer, sctp_generate_heartbeat_event,
@@ -113,15 +97,6 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
        get_random_bytes(&peer->hb_nonce, sizeof(peer->hb_nonce));
 
        atomic_set(&peer->refcnt, 1);
-       peer->dead = 0;
-
-       peer->malloced = 0;
-
-       /* Initialize the state information for SFR-CACC */
-       peer->cacc.changeover_active = 0;
-       peer->cacc.cycling_changeover = 0;
-       peer->cacc.next_tsn_at_change = 0;
-       peer->cacc.cacc_saw_newack = 0;
 
        return peer;
 }