Skip to content

Commit

Permalink
sctp: update transport initializations
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Vlad Yasevich committed May 1, 2010
1 parent c0058a3 commit b2cf9b6
Show file tree
Hide file tree
Showing 4 changed files with 1 addition and 31 deletions.
2 changes: 1 addition & 1 deletion include/net/sctp/sctp.h
Original file line number Diff line number Diff line change
Expand Up @@ -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) \
Expand Down
3 changes: 0 additions & 3 deletions net/sctp/associola.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 0 additions & 2 deletions net/sctp/endpointola.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
25 changes: 0 additions & 25 deletions net/sctp/transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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,
Expand All @@ -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;
}
Expand Down

0 comments on commit b2cf9b6

Please sign in to comment.