aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp
diff options
context:
space:
mode:
authorDaniel Borkmann <dborkman@redhat.com>2013-04-14 23:27:17 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-15 14:11:37 -0400
commitff2266cddd69f5e0c9d5121ed9218d2f694406cc (patch)
treef8d3a419ff1413613a1f05d790cac7dffc75dbc4 /net/sctp
parent1e8edc2ab35da30b08b008c26822ec956052bf4b (diff)
net: sctp: remove sctp_ep_common struct member 'malloced'
There is actually no need to keep this member in the structure, because after init it's always 1 anyway, thus always kfree called. This seems to be an ancient leftover from the very initial implementation from 2.5 times. Only in case the initialization of an association fails, we leave base.malloced as 0, but we nevertheless kfree it in the error path in sctp_association_new(). Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp')
-rw-r--r--net/sctp/associola.c8
-rw-r--r--net/sctp/endpointola.c10
2 files changed, 5 insertions, 13 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index d2709e2b7be6..b893aa6862f4 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -105,7 +105,6 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
105 /* Initialize the object handling fields. */ 105 /* Initialize the object handling fields. */
106 atomic_set(&asoc->base.refcnt, 1); 106 atomic_set(&asoc->base.refcnt, 1);
107 asoc->base.dead = 0; 107 asoc->base.dead = 0;
108 asoc->base.malloced = 0;
109 108
110 /* Initialize the bind addr area. */ 109 /* Initialize the bind addr area. */
111 sctp_bind_addr_init(&asoc->base.bind_addr, ep->base.bind_addr.port); 110 sctp_bind_addr_init(&asoc->base.bind_addr, ep->base.bind_addr.port);
@@ -371,7 +370,6 @@ struct sctp_association *sctp_association_new(const struct sctp_endpoint *ep,
371 if (!sctp_association_init(asoc, ep, sk, scope, gfp)) 370 if (!sctp_association_init(asoc, ep, sk, scope, gfp))
372 goto fail_init; 371 goto fail_init;
373 372
374 asoc->base.malloced = 1;
375 SCTP_DBG_OBJCNT_INC(assoc); 373 SCTP_DBG_OBJCNT_INC(assoc);
376 SCTP_DEBUG_PRINTK("Created asoc %p\n", asoc); 374 SCTP_DEBUG_PRINTK("Created asoc %p\n", asoc);
377 375
@@ -484,10 +482,8 @@ static void sctp_association_destroy(struct sctp_association *asoc)
484 482
485 WARN_ON(atomic_read(&asoc->rmem_alloc)); 483 WARN_ON(atomic_read(&asoc->rmem_alloc));
486 484
487 if (asoc->base.malloced) { 485 kfree(asoc);
488 kfree(asoc); 486 SCTP_DBG_OBJCNT_DEC(assoc);
489 SCTP_DBG_OBJCNT_DEC(assoc);
490 }
491} 487}
492 488
493/* Change the primary destination address for the peer. */ 489/* Change the primary destination address for the peer. */
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c
index 12ed45dbe75d..46bbfc266efc 100644
--- a/net/sctp/endpointola.c
+++ b/net/sctp/endpointola.c
@@ -122,7 +122,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
122 /* Initialize the basic object fields. */ 122 /* Initialize the basic object fields. */
123 atomic_set(&ep->base.refcnt, 1); 123 atomic_set(&ep->base.refcnt, 1);
124 ep->base.dead = 0; 124 ep->base.dead = 0;
125 ep->base.malloced = 1;
126 125
127 /* Create an input queue. */ 126 /* Create an input queue. */
128 sctp_inq_init(&ep->base.inqueue); 127 sctp_inq_init(&ep->base.inqueue);
@@ -198,7 +197,7 @@ struct sctp_endpoint *sctp_endpoint_new(struct sock *sk, gfp_t gfp)
198 goto fail; 197 goto fail;
199 if (!sctp_endpoint_init(ep, sk, gfp)) 198 if (!sctp_endpoint_init(ep, sk, gfp))
200 goto fail_init; 199 goto fail_init;
201 ep->base.malloced = 1; 200
202 SCTP_DBG_OBJCNT_INC(ep); 201 SCTP_DBG_OBJCNT_INC(ep);
203 return ep; 202 return ep;
204 203
@@ -279,11 +278,8 @@ static void sctp_endpoint_destroy(struct sctp_endpoint *ep)
279 if (ep->base.sk) 278 if (ep->base.sk)
280 sock_put(ep->base.sk); 279 sock_put(ep->base.sk);
281 280
282 /* Finally, free up our memory. */ 281 kfree(ep);
283 if (ep->base.malloced) { 282 SCTP_DBG_OBJCNT_DEC(ep);
284 kfree(ep);
285 SCTP_DBG_OBJCNT_DEC(ep);
286 }
287} 283}
288 284
289/* Hold a reference to an endpoint. */ 285/* Hold a reference to an endpoint. */