net: sctp: remove sctp_ep_common struct member 'malloced'
authorDaniel Borkmann <dborkman@redhat.com>
Mon, 15 Apr 2013 03:27:17 +0000 (03:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Apr 2013 18:11:37 +0000 (14:11 -0400)
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>
include/net/sctp/structs.h
net/sctp/associola.c
net/sctp/endpointola.c

index 0e0f9d2322e3c6a9e9997361fc3cee4806760824..3e80eedab17dddf8b096442741a93392aacc834b 100644 (file)
@@ -1174,11 +1174,9 @@ struct sctp_ep_common {
        /* Some fields to help us manage this object.
         *   refcnt   - Reference count access to this object.
         *   dead     - Do not attempt to use this object.
-        *   malloced - Do we need to kfree this object?
         */
        atomic_t    refcnt;
        char        dead;
-       char        malloced;
 
        /* What socket does this endpoint belong to?  */
        struct sock *sk;
index d2709e2b7be6642d47a691d27c983a937c7e8648..b893aa6862f4bf92ce1afc2607e43471d5883a53 100644 (file)
@@ -105,7 +105,6 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
        /* Initialize the object handling fields.  */
        atomic_set(&asoc->base.refcnt, 1);
        asoc->base.dead = 0;
-       asoc->base.malloced = 0;
 
        /* Initialize the bind addr area.  */
        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,
        if (!sctp_association_init(asoc, ep, sk, scope, gfp))
                goto fail_init;
 
-       asoc->base.malloced = 1;
        SCTP_DBG_OBJCNT_INC(assoc);
        SCTP_DEBUG_PRINTK("Created asoc %p\n", asoc);
 
@@ -484,10 +482,8 @@ static void sctp_association_destroy(struct sctp_association *asoc)
 
        WARN_ON(atomic_read(&asoc->rmem_alloc));
 
-       if (asoc->base.malloced) {
-               kfree(asoc);
-               SCTP_DBG_OBJCNT_DEC(assoc);
-       }
+       kfree(asoc);
+       SCTP_DBG_OBJCNT_DEC(assoc);
 }
 
 /* Change the primary destination address for the peer. */
index 12ed45dbe75d6b779fd0dcf4d38f6126e23c03fb..46bbfc266efc5ac5f4e76ffb6fcb935c3d56943c 100644 (file)
@@ -122,7 +122,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
        /* Initialize the basic object fields. */
        atomic_set(&ep->base.refcnt, 1);
        ep->base.dead = 0;
-       ep->base.malloced = 1;
 
        /* Create an input queue.  */
        sctp_inq_init(&ep->base.inqueue);
@@ -198,7 +197,7 @@ struct sctp_endpoint *sctp_endpoint_new(struct sock *sk, gfp_t gfp)
                goto fail;
        if (!sctp_endpoint_init(ep, sk, gfp))
                goto fail_init;
-       ep->base.malloced = 1;
+
        SCTP_DBG_OBJCNT_INC(ep);
        return ep;
 
@@ -279,11 +278,8 @@ static void sctp_endpoint_destroy(struct sctp_endpoint *ep)
        if (ep->base.sk)
                sock_put(ep->base.sk);
 
-       /* Finally, free up our memory. */
-       if (ep->base.malloced) {
-               kfree(ep);
-               SCTP_DBG_OBJCNT_DEC(ep);
-       }
+       kfree(ep);
+       SCTP_DBG_OBJCNT_DEC(ep);
 }
 
 /* Hold a reference to an endpoint. */