Merge branch 'for-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
[sfrench/cifs-2.6.git] / net / tls / tls_sw.c
index 7d80040a37b6d54901c05964a2f8a9ab0851a2cb..73d19210dd497193ff545ee15305113e6090f731 100644 (file)
 
 #include <net/tls.h>
 
-static inline void tls_make_aad(int recv,
-                               char *buf,
-                               size_t size,
-                               char *record_sequence,
-                               int record_sequence_size,
-                               unsigned char record_type)
-{
-       memcpy(buf, record_sequence, record_sequence_size);
-
-       buf[8] = record_type;
-       buf[9] = TLS_1_2_VERSION_MAJOR;
-       buf[10] = TLS_1_2_VERSION_MINOR;
-       buf[11] = size >> 8;
-       buf[12] = size & 0xFF;
-}
-
 static void trim_sg(struct sock *sk, struct scatterlist *sg,
                    int *sg_num_elem, unsigned int *sg_size, int target_size)
 {
@@ -219,7 +203,7 @@ static int tls_do_encryption(struct tls_context *tls_ctx,
        struct aead_request *aead_req;
        int rc;
 
-       aead_req = kmalloc(req_size, flags);
+       aead_req = kzalloc(req_size, flags);
        if (!aead_req)
                return -ENOMEM;
 
@@ -249,7 +233,7 @@ static int tls_push_record(struct sock *sk, int flags,
        sg_mark_end(ctx->sg_plaintext_data + ctx->sg_plaintext_num_elem - 1);
        sg_mark_end(ctx->sg_encrypted_data + ctx->sg_encrypted_num_elem - 1);
 
-       tls_make_aad(0, ctx->aad_space, ctx->sg_plaintext_size,
+       tls_make_aad(ctx->aad_space, ctx->sg_plaintext_size,
                     tls_ctx->rec_seq, tls_ctx->rec_seq_size,
                     record_type);
 
@@ -639,7 +623,7 @@ sendpage_end:
        return ret;
 }
 
-static void tls_sw_free_resources(struct sock *sk)
+void tls_sw_free_tx_resources(struct sock *sk)
 {
        struct tls_context *tls_ctx = tls_get_ctx(sk);
        struct tls_sw_context *ctx = tls_sw_ctx(tls_ctx);
@@ -650,6 +634,7 @@ static void tls_sw_free_resources(struct sock *sk)
        tls_free_both_sg(sk);
 
        kfree(ctx);
+       kfree(tls_ctx);
 }
 
 int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx)
@@ -679,7 +664,6 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx)
        }
 
        ctx->priv_ctx = (struct tls_offload_context *)sw_ctx;
-       ctx->free_resources = tls_sw_free_resources;
 
        crypto_info = &ctx->crypto_send;
        switch (crypto_info->cipher_type) {