diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2013-02-07 23:22:58 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-02-08 17:55:48 -0500 |
commit | 03536e23acd3706c0ec93d01dc8bef44dab1a860 (patch) | |
tree | d700c4f069e5fda6cf00fb69fa983ad0b5d800e2 | |
parent | 3807ff5899f892abb4f06747c245fd648a2acdc5 (diff) | |
download | linux-3.10-03536e23acd3706c0ec93d01dc8bef44dab1a860.tar.gz linux-3.10-03536e23acd3706c0ec93d01dc8bef44dab1a860.tar.bz2 linux-3.10-03536e23acd3706c0ec93d01dc8bef44dab1a860.zip |
net: sctp: sctp_auth_make_key_vector: use sctp_auth_create_key
In sctp_auth_make_key_vector, we allocate a temporary sctp_auth_bytes
structure with kmalloc instead of the sctp_auth_create_key allocator.
Change this to sctp_auth_create_key as it is the case everywhere else,
so that we also can properly free it via sctp_auth_key_put. This makes
it easier for future code changes in the structure and allocator itself,
since a single API is consistently used for this purpose. Also, by
using sctp_auth_create_key we're doing sanity checks over the arguments.
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sctp/auth.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/net/sctp/auth.c b/net/sctp/auth.c index 94a12de5869..5ec7509bb2c 100644 --- a/net/sctp/auth.c +++ b/net/sctp/auth.c @@ -209,12 +209,10 @@ static struct sctp_auth_bytes *sctp_auth_make_key_vector( len = random_len + hmacs_len + chunks_len; - new = kmalloc(sizeof(struct sctp_auth_bytes) + len, gfp); + new = sctp_auth_create_key(len, gfp); if (!new) return NULL; - new->len = len; - memcpy(new->data, random, random_len); offset += random_len; @@ -353,8 +351,8 @@ static struct sctp_auth_bytes *sctp_auth_asoc_create_secret( secret = sctp_auth_asoc_set_secret(ep_key, first_vector, last_vector, gfp); out: - kfree(local_key_vector); - kfree(peer_key_vector); + sctp_auth_key_put(local_key_vector); + sctp_auth_key_put(peer_key_vector); return secret; } |