mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	In the quest to remove all stack VLA usage from the kernel[1], this replaces struct crypto_skcipher and SKCIPHER_REQUEST_ON_STACK() usage with struct crypto_sync_skcipher and SYNC_SKCIPHER_REQUEST_ON_STACK(), which uses a fixed stack size. [1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com Cc: Himanshu Jha <himanshujha199640@gmail.com> Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or modify
 | 
						|
 * it under the terms of the GNU General Public License version 2 and
 | 
						|
 * only version 2 as published by the Free Software Foundation.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 * GNU General Public License for more details.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _CIPHER_H_
 | 
						|
#define _CIPHER_H_
 | 
						|
 | 
						|
#include "common.h"
 | 
						|
#include "core.h"
 | 
						|
 | 
						|
#define QCE_MAX_KEY_SIZE	64
 | 
						|
 | 
						|
struct qce_cipher_ctx {
 | 
						|
	u8 enc_key[QCE_MAX_KEY_SIZE];
 | 
						|
	unsigned int enc_keylen;
 | 
						|
	struct crypto_sync_skcipher *fallback;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * struct qce_cipher_reqctx - holds private cipher objects per request
 | 
						|
 * @flags: operation flags
 | 
						|
 * @iv: pointer to the IV
 | 
						|
 * @ivsize: IV size
 | 
						|
 * @src_nents: source entries
 | 
						|
 * @dst_nents: destination entries
 | 
						|
 * @result_sg: scatterlist used for result buffer
 | 
						|
 * @dst_tbl: destination sg table
 | 
						|
 * @dst_sg: destination sg pointer table beginning
 | 
						|
 * @src_tbl: source sg table
 | 
						|
 * @src_sg: source sg pointer table beginning;
 | 
						|
 * @cryptlen: crypto length
 | 
						|
 */
 | 
						|
struct qce_cipher_reqctx {
 | 
						|
	unsigned long flags;
 | 
						|
	u8 *iv;
 | 
						|
	unsigned int ivsize;
 | 
						|
	int src_nents;
 | 
						|
	int dst_nents;
 | 
						|
	struct scatterlist result_sg;
 | 
						|
	struct sg_table dst_tbl;
 | 
						|
	struct scatterlist *dst_sg;
 | 
						|
	struct sg_table src_tbl;
 | 
						|
	struct scatterlist *src_sg;
 | 
						|
	unsigned int cryptlen;
 | 
						|
};
 | 
						|
 | 
						|
static inline struct qce_alg_template *to_cipher_tmpl(struct crypto_tfm *tfm)
 | 
						|
{
 | 
						|
	struct crypto_alg *alg = tfm->__crt_alg;
 | 
						|
	return container_of(alg, struct qce_alg_template, alg.crypto);
 | 
						|
}
 | 
						|
 | 
						|
extern const struct qce_algo_ops ablkcipher_ops;
 | 
						|
 | 
						|
#endif /* _CIPHER_H_ */
 |