diff options
-rw-r--r-- | include/net/sctp/structs.h | 2 | ||||
-rw-r--r-- | net/sctp/associola.c | 8 | ||||
-rw-r--r-- | net/sctp/endpointola.c | 10 |
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. */ |