Revert "crypto: shash - avoid comparing pointers to exported functions under CFI"
This reverts commit 22ca9f4aaf
because CFI
no longer breaks cross-module function address equality, so
crypto_shash_alg_has_setkey() can now be an inline function like before.
This commit should not be backported to kernels that don't have the new
CFI implementation.
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
cc7acaadf6
commit
c060e16ddb
2 changed files with 10 additions and 16 deletions
|
@ -20,24 +20,12 @@
|
||||||
|
|
||||||
static const struct crypto_type crypto_shash_type;
|
static const struct crypto_type crypto_shash_type;
|
||||||
|
|
||||||
static int shash_no_setkey(struct crypto_shash *tfm, const u8 *key,
|
int shash_no_setkey(struct crypto_shash *tfm, const u8 *key,
|
||||||
unsigned int keylen)
|
unsigned int keylen)
|
||||||
{
|
{
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(shash_no_setkey);
|
||||||
/*
|
|
||||||
* Check whether an shash algorithm has a setkey function.
|
|
||||||
*
|
|
||||||
* For CFI compatibility, this must not be an inline function. This is because
|
|
||||||
* when CFI is enabled, modules won't get the same address for shash_no_setkey
|
|
||||||
* (if it were exported, which inlining would require) as the core kernel will.
|
|
||||||
*/
|
|
||||||
bool crypto_shash_alg_has_setkey(struct shash_alg *alg)
|
|
||||||
{
|
|
||||||
return alg->setkey != shash_no_setkey;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(crypto_shash_alg_has_setkey);
|
|
||||||
|
|
||||||
static int shash_setkey_unaligned(struct crypto_shash *tfm, const u8 *key,
|
static int shash_setkey_unaligned(struct crypto_shash *tfm, const u8 *key,
|
||||||
unsigned int keylen)
|
unsigned int keylen)
|
||||||
|
|
|
@ -75,7 +75,13 @@ void crypto_unregister_ahashes(struct ahash_alg *algs, int count);
|
||||||
int ahash_register_instance(struct crypto_template *tmpl,
|
int ahash_register_instance(struct crypto_template *tmpl,
|
||||||
struct ahash_instance *inst);
|
struct ahash_instance *inst);
|
||||||
|
|
||||||
bool crypto_shash_alg_has_setkey(struct shash_alg *alg);
|
int shash_no_setkey(struct crypto_shash *tfm, const u8 *key,
|
||||||
|
unsigned int keylen);
|
||||||
|
|
||||||
|
static inline bool crypto_shash_alg_has_setkey(struct shash_alg *alg)
|
||||||
|
{
|
||||||
|
return alg->setkey != shash_no_setkey;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool crypto_shash_alg_needs_key(struct shash_alg *alg)
|
static inline bool crypto_shash_alg_needs_key(struct shash_alg *alg)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue