aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/sctp/structs.h2
-rw-r--r--net/sctp/associola.c8
-rw-r--r--net/sctp/endpointola.c10
3 files changed, 5 insertions, 15 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 0e0f9d2322e3..3e80eedab17d 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -1174,11 +1174,9 @@ struct sctp_ep_common {
1174 /* Some fields to help us manage this object. 1174 /* Some fields to help us manage this object.
1175 * refcnt - Reference count access to this object. 1175 * refcnt - Reference count access to this object.
1176 * dead - Do not attempt to use this object. 1176 * dead - Do not attempt to use this object.
1177 * malloced - Do we need to kfree this object?
1178 */ 1177 */
1179 atomic_t refcnt; 1178 atomic_t refcnt;
1180 char dead; 1179 char dead;
1181 char malloced;
1182 1180
1183 /* What socket does this endpoint belong to? */ 1181 /* What socket does this endpoint belong to? */
1184 struct sock *sk; 1182 struct sock *sk;
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. */