]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Feb 2018 18:57:16 +0000 (19:57 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Feb 2018 18:57:16 +0000 (19:57 +0100)
added patches:
crypto-cryptd-pass-through-absence-of-setkey.patch
crypto-hash-introduce-crypto_hash_alg_has_setkey.patch
crypto-mcryptd-pass-through-absence-of-setkey.patch

queue-3.18/crypto-cryptd-pass-through-absence-of-setkey.patch [new file with mode: 0644]
queue-3.18/crypto-hash-introduce-crypto_hash_alg_has_setkey.patch [new file with mode: 0644]
queue-3.18/crypto-mcryptd-pass-through-absence-of-setkey.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/crypto-cryptd-pass-through-absence-of-setkey.patch b/queue-3.18/crypto-cryptd-pass-through-absence-of-setkey.patch
new file mode 100644 (file)
index 0000000..5138260
--- /dev/null
@@ -0,0 +1,34 @@
+From 841a3ff329713f796a63356fef6e2f72e4a3f6a3 Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Wed, 3 Jan 2018 11:16:23 -0800
+Subject: crypto: cryptd - pass through absence of ->setkey()
+
+From: Eric Biggers <ebiggers@google.com>
+
+commit 841a3ff329713f796a63356fef6e2f72e4a3f6a3 upstream.
+
+When the cryptd template is used to wrap an unkeyed hash algorithm,
+don't install a ->setkey() method to the cryptd instance.  This change
+is necessary for cryptd to keep working with unkeyed hash algorithms
+once we start enforcing that ->setkey() is called when present.
+
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ crypto/cryptd.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/crypto/cryptd.c
++++ b/crypto/cryptd.c
+@@ -618,7 +618,8 @@ static int cryptd_create_hash(struct cry
+       inst->alg.finup  = cryptd_hash_finup_enqueue;
+       inst->alg.export = cryptd_hash_export;
+       inst->alg.import = cryptd_hash_import;
+-      inst->alg.setkey = cryptd_hash_setkey;
++      if (crypto_shash_alg_has_setkey(salg))
++              inst->alg.setkey = cryptd_hash_setkey;
+       inst->alg.digest = cryptd_hash_digest_enqueue;
+       err = ahash_register_instance(tmpl, inst);
diff --git a/queue-3.18/crypto-hash-introduce-crypto_hash_alg_has_setkey.patch b/queue-3.18/crypto-hash-introduce-crypto_hash_alg_has_setkey.patch
new file mode 100644 (file)
index 0000000..4702eff
--- /dev/null
@@ -0,0 +1,55 @@
+From cd6ed77ad5d223dc6299fb58f62e0f5267f7e2ba Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Wed, 3 Jan 2018 11:16:22 -0800
+Subject: crypto: hash - introduce crypto_hash_alg_has_setkey()
+
+From: Eric Biggers <ebiggers@google.com>
+
+commit cd6ed77ad5d223dc6299fb58f62e0f5267f7e2ba upstream.
+
+Templates that use an shash spawn can use crypto_shash_alg_has_setkey()
+to determine whether the underlying algorithm requires a key or not.
+But there was no corresponding function for ahash spawns.  Add it.
+
+Note that the new function actually has to support both shash and ahash
+algorithms, since the ahash API can be used with either.
+
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ crypto/ahash.c                 |   11 +++++++++++
+ include/crypto/internal/hash.h |    2 ++
+ 2 files changed, 13 insertions(+)
+
+--- a/crypto/ahash.c
++++ b/crypto/ahash.c
+@@ -636,5 +636,16 @@ struct hash_alg_common *ahash_attr_alg(s
+ }
+ EXPORT_SYMBOL_GPL(ahash_attr_alg);
++bool crypto_hash_alg_has_setkey(struct hash_alg_common *halg)
++{
++      struct crypto_alg *alg = &halg->base;
++
++      if (alg->cra_type != &crypto_ahash_type)
++              return crypto_shash_alg_has_setkey(__crypto_shash_alg(alg));
++
++      return __crypto_ahash_alg(alg)->setkey != NULL;
++}
++EXPORT_SYMBOL_GPL(crypto_hash_alg_has_setkey);
++
+ MODULE_LICENSE("GPL");
+ MODULE_DESCRIPTION("Asynchronous cryptographic hash type");
+--- a/include/crypto/internal/hash.h
++++ b/include/crypto/internal/hash.h
+@@ -91,6 +91,8 @@ static inline bool crypto_shash_alg_has_
+       return alg->setkey != shash_no_setkey;
+ }
++bool crypto_hash_alg_has_setkey(struct hash_alg_common *halg);
++
+ int crypto_init_ahash_spawn(struct crypto_ahash_spawn *spawn,
+                           struct hash_alg_common *alg,
+                           struct crypto_instance *inst);
diff --git a/queue-3.18/crypto-mcryptd-pass-through-absence-of-setkey.patch b/queue-3.18/crypto-mcryptd-pass-through-absence-of-setkey.patch
new file mode 100644 (file)
index 0000000..d9347dc
--- /dev/null
@@ -0,0 +1,34 @@
+From fa59b92d299f2787e6bae1ff078ee0982e80211f Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Wed, 3 Jan 2018 11:16:24 -0800
+Subject: crypto: mcryptd - pass through absence of ->setkey()
+
+From: Eric Biggers <ebiggers@google.com>
+
+commit fa59b92d299f2787e6bae1ff078ee0982e80211f upstream.
+
+When the mcryptd template is used to wrap an unkeyed hash algorithm,
+don't install a ->setkey() method to the mcryptd instance.  This change
+is necessary for mcryptd to keep working with unkeyed hash algorithms
+once we start enforcing that ->setkey() is called when present.
+
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ crypto/mcryptd.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/crypto/mcryptd.c
++++ b/crypto/mcryptd.c
+@@ -514,7 +514,8 @@ static int mcryptd_create_hash(struct cr
+       inst->alg.finup  = mcryptd_hash_finup_enqueue;
+       inst->alg.export = mcryptd_hash_export;
+       inst->alg.import = mcryptd_hash_import;
+-      inst->alg.setkey = mcryptd_hash_setkey;
++      if (crypto_hash_alg_has_setkey(halg))
++              inst->alg.setkey = mcryptd_hash_setkey;
+       inst->alg.digest = mcryptd_hash_digest_enqueue;
+       err = ahash_register_instance(tmpl, inst);
index 7ffb7e321d232ddf041ed0f54b07a01e1d7e69dd..3e0077dbc73c6e9ea5ebe84f66c8be0cb111f7ea 100644 (file)
@@ -28,3 +28,6 @@ mtd-nand-fix-nand_do_read_oob-return-value.patch
 nfs-add-a-cond_resched-to-nfs_commit_release_pages.patch
 nfs-commit-direct-writes-even-if-they-fail-partially.patch
 kernfs-fix-regression-in-kernfs_fop_write-caused-by-wrong-type.patch
+crypto-hash-introduce-crypto_hash_alg_has_setkey.patch
+crypto-cryptd-pass-through-absence-of-setkey.patch
+crypto-mcryptd-pass-through-absence-of-setkey.patch