forked from mirrors/linux
		
	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…
	
		Reference in a new issue
	
	 Eric Biggers
						Eric Biggers