Re: [PATCH v27 12/12] LRNG - add power-on and runtime self-tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Montag, 13. Januar 2020, 11:39:41 CET schrieb Dan Carpenter:

Hi Dan,

> Hi "Stephan,
> 
> url:   
> https://github.com/0day-ci/linux/commits/Stephan-M-ller/dev-random-a-new-ap
> proach-with-full-SP800-90B/20200110-084934 base:  
> https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
> 68faa679b8be1a74e6663c21c3a9d25d32f1c079
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> 
> smatch warnings:
> drivers/char/lrng/lrng_selftest.c:117 lrng_pool_lfsr_selftest() warn:
> sizeof(NUMBER)? drivers/char/lrng/lrng_selftest.c:229
> lrng_hash_df_selftest() warn: sizeof(NUMBER)?
> 
> #
> https://github.com/0day-ci/linux/commit/5b6f2811172c968d8eb78167825c58557ea
> 91995 git remote add linux-review https://github.com/0day-ci/linux
> git remote update linux-review
> git checkout 5b6f2811172c968d8eb78167825c58557ea91995
> vim +117 drivers/char/lrng/lrng_selftest.c
> 
> 5b6f2811172c96 Stephan Müller 2020-01-09   89  static unsigned int
> lrng_pool_lfsr_selftest(void) 5b6f2811172c96 Stephan Müller 2020-01-09   90
>  {
> 5b6f2811172c96 Stephan Müller 2020-01-09   91  	/*
> 5b6f2811172c96 Stephan Müller 2020-01-09   92  	 * First, 67th and last
> entry of entropy pool. 5b6f2811172c96 Stephan Müller 2020-01-09   93  	 *
> 5b6f2811172c96 Stephan Müller 2020-01-09   94  	 * The 67th entry is picked
> because this one is the first to receive 5b6f2811172c96 Stephan Müller
> 2020-01-09   95  	 * an entry. As we start with 1 to inject into the 
LFSR,
> the 5b6f2811172c96 Stephan Müller 2020-01-09   96  	 * 67th entry should 
be
> equal to rol(1, 7) >> 3 considering that 5b6f2811172c96 Stephan Müller
> 2020-01-09   97  	 * all other values of the LFSR are zero and the the
> twist value of 0 5b6f2811172c96 Stephan Müller 2020-01-09   98  	 * is
> applied.
> 5b6f2811172c96 Stephan Müller 2020-01-09   99  	 */
> 5b6f2811172c96 Stephan Müller 2020-01-09  100  	static u32 const
> lrng_lfsr_selftest_result[][3] = { 5b6f2811172c96 Stephan Müller 2020-01-09
>  101  		{ 0xf56df24a, 0x00000010, 0x0e014939 }, 5b6f2811172c96 Stephan
> Müller 2020-01-09  102  		{ 0x4b130726, 0x00000010, 0x2802f509 
},
> 5b6f2811172c96 Stephan Müller 2020-01-09  103  		{ 0x87279152, 
0x00000010,
> 0x00150000 }, 5b6f2811172c96 Stephan Müller 2020-01-09  104  		{
> 0x0b67f997, 0x00000010, 0x00150000 }, 5b6f2811172c96 Stephan Müller
> 2020-01-09  105  		{ 0x4fea174f, 0x00000010, 0xcbf4a6ae }, 
5b6f2811172c96
> Stephan Müller 2020-01-09  106  		{ 0x77149108, 0x00000010, 
0x77bfadf2 },
> 5b6f2811172c96 Stephan Müller 2020-01-09  107  		{ 0x1e96037e, 
0x00000010,
> 0x18017e79 }, 5b6f2811172c96 Stephan Müller 2020-01-09  108  		{
> 0xc84acef2, 0x00000010, 0x6345f7a8 }, 5b6f2811172c96 Stephan Müller
> 2020-01-09  109  		{ 0x6a2eb6df, 0x00000010, 0x03950000 }, 
5b6f2811172c96
> Stephan Müller 2020-01-09  110  	};
> 5b6f2811172c96 Stephan Müller 2020-01-09  111  	struct lrng_pool *lrng_pool,
> *lrng_pool_aligned; 5b6f2811172c96 Stephan Müller 2020-01-09  112  	u32 
i,
> ret = LRNG_SELFTEST_PASSED; 5b6f2811172c96 Stephan Müller 2020-01-09  113
> 5b6f2811172c96 Stephan Müller 2020-01-09  114 
> 	BUILD_BUG_ON(ARRAY_SIZE(lrng_lfsr_selftest_result) < 5b6f2811172c96
> Stephan Müller 2020-01-09  115  						
	CONFIG_LRNG_POOL_SIZE);
> 5b6f2811172c96 Stephan Müller 2020-01-09  116
> 5b6f2811172c96 Stephan Müller 2020-01-09 @117  	lrng_pool =
> kzalloc(sizeof(struct lrng_pool) + sizeof(LRNG_KCAPI_ALIGN),
> ^^^^^^^^^^^^^^^^^^^^^^^^ Probably just LRNG_KCAPI_ALIGN is intended with no
> sizeof().


Yes, absolutely. Fixed in both cases.

Thank you!
> 
> 5b6f2811172c96 Stephan Müller 2020-01-09  118  			    
GFP_KERNEL);
> 5b6f2811172c96 Stephan Müller 2020-01-09  119  	if (!lrng_pool)
> 5b6f2811172c96 Stephan Müller 2020-01-09  120  		return
> LRNG_SEFLTEST_ERROR_LFSR; 5b6f2811172c96 Stephan Müller 2020-01-09  121 
> 	lrng_pool_aligned = PTR_ALIGN(lrng_pool, sizeof(u32)); 5b6f2811172c96
> Stephan Müller 2020-01-09  122
> 5b6f2811172c96 Stephan Müller 2020-01-09  123  	for (i = 1; i <=
> LRNG_POOL_SIZE; i++) 5b6f2811172c96 Stephan Müller 2020-01-09  124 
> 		_lrng_pool_lfsr_u32(lrng_pool_aligned, i); 5b6f2811172c96 
Stephan Müller
> 2020-01-09  125
> 5b6f2811172c96 Stephan Müller 2020-01-09  126  	if
> ((atomic_read_u32(&lrng_pool_aligned->pool[0]) != 5b6f2811172c96 Stephan
> Müller 2020-01-09  127  	    
> lrng_lfsr_selftest_result[CONFIG_LRNG_POOL_SIZE][0]) || 5b6f2811172c96
> Stephan Müller 2020-01-09  128  	   
> (atomic_read_u32(&lrng_pool_aligned->pool[67 & 5b6f2811172c96 Stephan
> Müller 2020-01-09  129  						      
(LRNG_POOL_SIZE - 1)]) !=
> 5b6f2811172c96 Stephan Müller 2020-01-09  130  	    
> lrng_lfsr_selftest_result[CONFIG_LRNG_POOL_SIZE][1]) || 5b6f2811172c96
> Stephan Müller 2020-01-09  131  	   
> (atomic_read_u32(&lrng_pool_aligned->pool[LRNG_POOL_SIZE - 1]) !=
> 5b6f2811172c96 Stephan Müller 2020-01-09  132  	    
> lrng_lfsr_selftest_result[CONFIG_LRNG_POOL_SIZE][2])) { 5b6f2811172c96
> Stephan Müller 2020-01-09  133  		pr_err("LRNG LFSR self-test 
FAILED\n");
> 5b6f2811172c96 Stephan Müller 2020-01-09  134  		ret =
> LRNG_SEFLTEST_ERROR_LFSR; 5b6f2811172c96 Stephan Müller 2020-01-09  135  	
}
> 5b6f2811172c96 Stephan Müller 2020-01-09  136
> 5b6f2811172c96 Stephan Müller 2020-01-09  137  	kfree(lrng_pool);
> 5b6f2811172c96 Stephan Müller 2020-01-09  138  	return ret;
> 5b6f2811172c96 Stephan Müller 2020-01-09  139  }
> 5b6f2811172c96 Stephan Müller 2020-01-09  140
> 5b6f2811172c96 Stephan Müller 2020-01-09  141  /*
> 5b6f2811172c96 Stephan Müller 2020-01-09  142   * The test vectors are
> generated with the hash_df_testvector_generation tool 5b6f2811172c96
> Stephan Müller 2020-01-09  143   * provided as part of the test tool set of
> the LRNG. 5b6f2811172c96 Stephan Müller 2020-01-09  144   */
> 5b6f2811172c96 Stephan Müller 2020-01-09  145  static unsigned int
> lrng_hash_df_selftest(void) 5b6f2811172c96 Stephan Müller 2020-01-09  146 
> {
> 5b6f2811172c96 Stephan Müller 2020-01-09  147  	const struct lrng_crypto_cb
> *crypto_cb = &lrng_cc20_crypto_cb; 5b6f2811172c96 Stephan Müller 2020-01-09
>  148
> 5b6f2811172c96 Stephan Müller 2020-01-09  149  	/*
> 5b6f2811172c96 Stephan Müller 2020-01-09  150  	 * The size of 45 bytes is
> chosen arbitrarily. Yet, this size should 5b6f2811172c96 Stephan Müller
> 2020-01-09  151  	 * ensure that we have at least two hash blocks plus 
some
> fraction 5b6f2811172c96 Stephan Müller 2020-01-09  152  	 * of a hash block
> generated. 5b6f2811172c96 Stephan Müller 2020-01-09  153  	 */
> 5b6f2811172c96 Stephan Müller 2020-01-09  154  	static u8 const
> lrng_hash_df_selftest_result[][45] = { 5b6f2811172c96 Stephan Müller
> 2020-01-09  155  		{
> 5b6f2811172c96 Stephan Müller 2020-01-09  156  			0x3b, 0xbe, 
0x7a, 0xbd,
> 0x2b, 0x16, 0x02, 0x4c, 5b6f2811172c96 Stephan Müller 2020-01-09  157 
> 			0xfc, 0xd3, 0x02, 0x15, 0xf0, 0x86, 0xd4, 0xdb, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  158  			0x49, 0xec, 0x26, 0x53, 0xd6, 
0xc9, 0x6d, 0xad,
> 5b6f2811172c96 Stephan Müller 2020-01-09  159  			0x24, 0xca, 
0x72, 0x89,
> 0x2c, 0xfa, 0x48, 0x18, 5b6f2811172c96 Stephan Müller 2020-01-09  160 
> 			0xf7, 0x47, 0xb5, 0x2f, 0x92, 0xa2, 0x1b, 0xd9, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  161  			0x24, 0xa7, 0x2f, 0xa2, 0x0b, 
5b6f2811172c96
> Stephan Müller 2020-01-09  162  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  163  			0xd2, 0xaa, 
0xf9, 0x76,
> 0x26, 0xc6, 0x13, 0xea, 5b6f2811172c96 Stephan Müller 2020-01-09  164 
> 			0xb8, 0xde, 0xe6, 0x88, 0x8f, 0xc4, 0x7a, 0x7d, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  165  			0x9c, 0xb4, 0x1b, 0xd1, 0xd1, 
0x8a, 0x40, 0xc9,
> 5b6f2811172c96 Stephan Müller 2020-01-09  166  			0xaa, 0x45, 
0xa6, 0xb6,
> 0xb5, 0x6f, 0xf6, 0xbc, 5b6f2811172c96 Stephan Müller 2020-01-09  167 
> 			0xbb, 0x77, 0x37, 0xbc, 0x5a, 0x2d, 0xcc, 0x84, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  168  			0x25, 0x68, 0x5e, 0xba, 0x16, 
5b6f2811172c96
> Stephan Müller 2020-01-09  169  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  170  			0x58, 0x66, 
0x82, 0x88,
> 0x29, 0x19, 0xa4, 0xbb, 5b6f2811172c96 Stephan Müller 2020-01-09  171 
> 			0x33, 0x42, 0xc9, 0x72, 0x0d, 0x68, 0x6e, 0xb9, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  172  			0xc6, 0xe0, 0x7a, 0xf9, 0x20, 
0xca, 0x6d, 0x18,
> 5b6f2811172c96 Stephan Müller 2020-01-09  173  			0x35, 0xec, 
0xfa, 0x9e,
> 0xf6, 0x3a, 0xa7, 0xb6, 5b6f2811172c96 Stephan Müller 2020-01-09  174 
> 			0x92, 0x7a, 0xe5, 0xcd, 0xc5, 0x13, 0x9f, 0x65, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  175  			0x6a, 0xe1, 0xe4, 0x3f, 0xb9, 
5b6f2811172c96
> Stephan Müller 2020-01-09  176  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  177  			0xdd, 0xf1, 
0x34, 0xca,
> 0x08, 0xe3, 0xce, 0x8a, 5b6f2811172c96 Stephan Müller 2020-01-09  178 
> 			0x26, 0x6b, 0xce, 0x99, 0x8a, 0x84, 0xd2, 0x21, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  179  			0x98, 0x10, 0x95, 0x5f, 0x9f, 
0xc3, 0xf2, 0xe4,
> 5b6f2811172c96 Stephan Müller 2020-01-09  180  			0x79, 0x75, 
0xb5, 0x15,
> 0xa7, 0xa2, 0xf1, 0xc4, 5b6f2811172c96 Stephan Müller 2020-01-09  181 
> 			0xdc, 0x67, 0xcb, 0x67, 0x8c, 0xb2, 0x1b, 0xd5, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  182  			0xd6, 0x8b, 0xc2, 0x34, 0xd6, 
5b6f2811172c96
> Stephan Müller 2020-01-09  183  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  184  			0xc3, 0x16, 
0x9d, 0xf0,
> 0x78, 0x15, 0xab, 0xf2, 5b6f2811172c96 Stephan Müller 2020-01-09  185 
> 			0x2f, 0xc9, 0x2e, 0xe1, 0xc6, 0x5e, 0xfa, 0x03, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  186  			0xaf, 0xd4, 0xd5, 0x47, 0x2a, 
0xe8, 0x06, 0xe8,
> 5b6f2811172c96 Stephan Müller 2020-01-09  187  			0x7e, 0x0a, 
0x71, 0xc7,
> 0x0d, 0x39, 0xb1, 0xa9, 5b6f2811172c96 Stephan Müller 2020-01-09  188 
> 			0x5a, 0x49, 0xee, 0x8b, 0x2f, 0xcd, 0xea, 0x96, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  189  			0xcc, 0x08, 0x71, 0xef, 0x9c, 
5b6f2811172c96
> Stephan Müller 2020-01-09  190  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  191  			0x1a, 0x3d, 
0x70, 0x39,
> 0xc2, 0x02, 0x4d, 0x3a, 5b6f2811172c96 Stephan Müller 2020-01-09  192 
> 			0xaa, 0x14, 0x20, 0x88, 0x96, 0x4c, 0x7c, 0xe4, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  193  			0xaa, 0x49, 0x89, 0x30, 0x50, 
0x96, 0xb6, 0xa7,
> 5b6f2811172c96 Stephan Müller 2020-01-09  194  			0x55, 0x0a, 
0xf8, 0xd2,
> 0x4e, 0x83, 0x9d, 0x1f, 5b6f2811172c96 Stephan Müller 2020-01-09  195 
> 			0x56, 0x49, 0x13, 0xc6, 0x46, 0x55, 0x73, 0x0d, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  196  			0x74, 0xcd, 0x81, 0xe0, 0x65, 
5b6f2811172c96
> Stephan Müller 2020-01-09  197  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  198  			0x4b, 0xf6, 
0x49, 0x89,
> 0x2a, 0x9f, 0x67, 0xd7, 5b6f2811172c96 Stephan Müller 2020-01-09  199 
> 			0xb8, 0x1d, 0xbb, 0x5d, 0xf0, 0x1b, 0x60, 0xb6, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  200  			0xb7, 0xf3, 0x86, 0x6d, 0xe0, 
0x04, 0xa1, 0xbc,
> 5b6f2811172c96 Stephan Müller 2020-01-09  201  			0x3b, 0xb0, 
0x10, 0x91,
> 0xe8, 0x22, 0x67, 0x5b, 5b6f2811172c96 Stephan Müller 2020-01-09  202 
> 			0xe8, 0xf0, 0x4f, 0x82, 0x70, 0xc7, 0xe1, 0xc8, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  203  			0xd8, 0xad, 0x70, 0xcf, 0xf6, 
5b6f2811172c96
> Stephan Müller 2020-01-09  204  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  205  			0x60, 0x1f, 
0x71, 0x07,
> 0x92, 0xae, 0xa0, 0x24, 5b6f2811172c96 Stephan Müller 2020-01-09  206 
> 			0xb6, 0xa4, 0x10, 0x70, 0x1f, 0x94, 0x51, 0x9a, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  207  			0x5a, 0x81, 0xc4, 0x46, 0x78, 
0x56, 0x71, 0xdd,
> 5b6f2811172c96 Stephan Müller 2020-01-09  208  			0x45, 0x63, 
0x01, 0x34,
> 0x87, 0x79, 0xb4, 0xd5, 5b6f2811172c96 Stephan Müller 2020-01-09  209 
> 			0x91, 0x79, 0xb9, 0x93, 0x11, 0x44, 0x50, 0xad, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  210  			0x64, 0x7e, 0x5c, 0xec, 0x16, 
5b6f2811172c96
> Stephan Müller 2020-01-09  211  		}, {
> 5b6f2811172c96 Stephan Müller 2020-01-09  212  			0x49, 0x2f, 
0xa0, 0x45,
> 0xf8, 0xb0, 0x80, 0x88, 5b6f2811172c96 Stephan Müller 2020-01-09  213 
> 			0x79, 0xeb, 0xb6, 0x82, 0x1c, 0xf3, 0x67, 0xc4, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  214  			0x88, 0x88, 0xe9, 0x75, 0x20, 
0x54, 0x78, 0xc6,
> 5b6f2811172c96 Stephan Müller 2020-01-09  215  			0x5c, 0x59, 
0xcf, 0xd9,
> 0x73, 0x12, 0x17, 0xf4, 5b6f2811172c96 Stephan Müller 2020-01-09  216 
> 			0x30, 0x9c, 0xb7, 0x21, 0x45, 0xe2, 0xb6, 0x0c, 
5b6f2811172c96 Stephan
> Müller 2020-01-09  217  			0x0c, 0xeb, 0x1b, 0xdc, 0xdc, 
5b6f2811172c96
> Stephan Müller 2020-01-09  218  		}
> 5b6f2811172c96 Stephan Müller 2020-01-09  219  	};
> 5b6f2811172c96 Stephan Müller 2020-01-09  220  	struct lrng_pool *lrng_pool,
> *lrng_pool_aligned; 5b6f2811172c96 Stephan Müller 2020-01-09  221  	u8
> hash_df[sizeof(lrng_hash_df_selftest_result[0])] 5b6f2811172c96 Stephan
> Müller 2020-01-09  222  							
__aligned(sizeof(u32)); 5b6f2811172c96
> Stephan Müller 2020-01-09  223  	u32 generated;
> 5b6f2811172c96 Stephan Müller 2020-01-09  224  	int ret = 0;
> 5b6f2811172c96 Stephan Müller 2020-01-09  225
> 5b6f2811172c96 Stephan Müller 2020-01-09  226 
> 	BUILD_BUG_ON(ARRAY_SIZE(lrng_hash_df_selftest_result) < 5b6f2811172c96
> Stephan Müller 2020-01-09  227  						
	CONFIG_LRNG_POOL_SIZE);
> 5b6f2811172c96 Stephan Müller 2020-01-09  228
> 5b6f2811172c96 Stephan Müller 2020-01-09 @229  	lrng_pool =
> kzalloc(sizeof(struct lrng_pool) + sizeof(LRNG_KCAPI_ALIGN),
> ^^^^^^^^^^^^^^^^^^^^^^^^ Here too.
> 
> 
> 5b6f2811172c96 Stephan Müller 2020-01-09  230  			    
GFP_KERNEL);
> 5b6f2811172c96 Stephan Müller 2020-01-09  231  	if (!lrng_pool)
> 5b6f2811172c96 Stephan Müller 2020-01-09  232  		return
> LRNG_SEFLTEST_ERROR_HASHDF; 5b6f2811172c96 Stephan Müller 2020-01-09  233 
> 	lrng_pool_aligned = PTR_ALIGN(lrng_pool, sizeof(u32)); 5b6f2811172c96
> Stephan Müller 2020-01-09  234
> 5b6f2811172c96 Stephan Müller 2020-01-09  235  	generated =
> __lrng_pool_hash_df(crypto_cb, NULL, lrng_pool_aligned, 5b6f2811172c96
> Stephan Müller 2020-01-09  236  					
hash_df, sizeof(hash_df) << 3);
> 5b6f2811172c96 Stephan Müller 2020-01-09  237
> 5b6f2811172c96 Stephan Müller 2020-01-09  238  	if ((generated >> 3) !=
> sizeof(hash_df) || 5b6f2811172c96 Stephan Müller 2020-01-09  239  	   
> memcmp(hash_df, lrng_hash_df_selftest_result[CONFIG_LRNG_POOL_SIZE],
> 5b6f2811172c96 Stephan Müller 2020-01-09  240  		   sizeof(hash_df))) 
{
> 5b6f2811172c96 Stephan Müller 2020-01-09  241  		pr_err("LRNG Hash DF
> self-test FAILED\n"); 5b6f2811172c96 Stephan Müller 2020-01-09  242  		
ret
> = LRNG_SEFLTEST_ERROR_HASHDF; 5b6f2811172c96 Stephan Müller 2020-01-09  243
>  	}
> 5b6f2811172c96 Stephan Müller 2020-01-09  244
> 5b6f2811172c96 Stephan Müller 2020-01-09  245  	kfree(lrng_pool);
> 5b6f2811172c96 Stephan Müller 2020-01-09  246  	return ret;
> 5b6f2811172c96 Stephan Müller 2020-01-09  247  }
> 
> ---
> 0-DAY kernel test infrastructure                 Open Source Technology
> Center https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx Intel
> Corporation



Ciao
Stephan






[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux