Patch "crypto: af_alg - Add nokey compatibility path" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
crypto: af_alg - Add nokey compatibility path
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
crypto-af_alg-add-nokey-compatibility-path.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
37766586c965d63758ad542325a96d5384f4a8c9Mon Sep 17 00:00:00 2001
From: Herbert Xu <[email protected]>
Date: Mon, 4 Jan 2016 13:35:18 +0900
Subject: crypto: af_alg - Add nokey compatibility path
From: Herbert Xu <[email protected]>
commit 37766586c965d63758ad542325a96d5384f4a8c9 upstream.
This patch adds a compatibility path to support old applications that do acept(2) before setkey.
--- crypto/af_alg.c | 13 ++++++++++++- include/crypto/if_alg.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-)
crypto/af_alg.c +12 -1
@@ -76,6 +76,8 @@ int af_alg_register_type(const struct af goto unlock; type->ops->owner =THIS_MODULE ; +if (type->ops_nokey) + type->ops_nokey->owner =THIS_MODULE ; node->type = type;list_add (&node->list, &alg_types); err =0 ;
@@ -267,6 +269,7 @@ int af_alg_accept(struct sock *sk, strucconst struct af_alg_type *type;struct sock *sk2;int err; +bool nokey;lock_sock (sk); type = ask->type;
@@ -285,12 +288,17 @@ int af_alg_accept(struct sock *sk, strucsecurity_sk_clone (sk, sk2); err = type->accept (ask->private, sk2); + + nokey = err == -ENOKEY ; +if (nokey && type->accept_nokey) + err = type->accept_nokey (ask->private, sk2); +if (err) goto unlock; sk2->sk_family =PF_ALG ; -if (!ask->refcnt++) +if (nokey || !ask->refcnt++)sock_hold (sk);alg_sk (sk2)->parent = sk;alg_sk (sk2)->type = type;
@@ -298,6 +306,9 @@ int af_alg_accept(struct sock *sk, struc newsock->ops = type->ops; newsock->state =SS_CONNECTED ; +if (nokey) + newsock->ops = type->ops_nokey; + err =0 ; unlock:
include/crypto/if_alg.h +2 -0
@@ -52,9 +52,11 @@ struct af_alg_type {void (*release)(void *private);int (*setkey)(void *private,const u8 *key,unsigned int keylen);int (*accept)(void *private,struct sock *sk); +int (*accept_nokey)(void *private,struct sock *sk);int (*setauthsize)(void *private,unsigned int authsize);struct proto_ops *ops; +struct proto_ops *ops_nokey;struct module *owner;char name[14 ]; };
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/crypto-af_alg-disallow-bind-setkey-...-after-accept-2.patch queue-4.4/crypto-skcipher-add-crypto_skcipher_has_setkey.patch queue-4.4/crypto-algif_skcipher-add-key-check-exception-for-cipher_null.patch queue-4.4/crypto-algif_skcipher-require-setkey-before-accept-2.patch queue-4.4/crypto-algif_skcipher-add-nokey-compatibility-path.patch queue-4.4/crypto-hash-add-crypto_ahash_has_setkey.patch queue-4.4/crypto-af_alg-add-nokey-compatibility-path.patch queue-4.4/crypto-sun4i-ss-add-missing-statesize.patch queue-4.4/crypto-algif_hash-require-setkey-before-accept-2.patch queue-4.4/crypto-af_alg-fix-socket-double-free-when-accept-fails.patch