sctp: move up sctp_auth_init_hmacs() in sctp_endpoint_init()
authorXin Long <lucien.xin@gmail.com>
Sun, 3 Mar 2019 09:54:54 +0000 (17:54 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Mar 2019 19:42:49 +0000 (11:42 -0800)
sctp_auth_init_hmacs() is called only when ep->auth_enable is set.
It better to move up sctp_auth_init_hmacs() and remove auth_enable
check in it and check auth_enable only once in sctp_endpoint_init().

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/auth.c
net/sctp/endpointola.c

index 5b53761..39d72e5 100644 (file)
@@ -471,12 +471,6 @@ int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t gfp)
        struct crypto_shash *tfm = NULL;
        __u16   id;
 
-       /* If AUTH extension is disabled, we are done */
-       if (!ep->auth_enable) {
-               ep->auth_hmacs = NULL;
-               return 0;
-       }
-
        /* If the transforms are already allocated, we are done */
        if (ep->auth_hmacs)
                return 0;
index 40c7eb9..0448b68 100644 (file)
@@ -107,6 +107,13 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
                        auth_chunks->param_hdr.length =
                                        htons(sizeof(struct sctp_paramhdr) + 2);
                }
+
+               /* Allocate and initialize transorms arrays for supported
+                * HMACs.
+                */
+               err = sctp_auth_init_hmacs(ep, gfp);
+               if (err)
+                       goto nomem;
        }
 
        /* Initialize the base structure. */
@@ -150,15 +157,10 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
        INIT_LIST_HEAD(&ep->endpoint_shared_keys);
        null_key = sctp_auth_shkey_create(0, gfp);
        if (!null_key)
-               goto nomem;
+               goto nomem_shkey;
 
        list_add(&null_key->key_list, &ep->endpoint_shared_keys);
 
-       /* Allocate and initialize transorms arrays for supported HMACs. */
-       err = sctp_auth_init_hmacs(ep, gfp);
-       if (err)
-               goto nomem_hmacs;
-
        /* Add the null key to the endpoint shared keys list and
         * set the hmcas and chunks pointers.
         */
@@ -169,8 +171,8 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
 
        return ep;
 
-nomem_hmacs:
-       sctp_auth_destroy_keys(&ep->endpoint_shared_keys);
+nomem_shkey:
+       sctp_auth_destroy_hmacs(ep->auth_hmacs);
 nomem:
        /* Free all allocations */
        kfree(auth_hmacs);