@ -1178,12 +1178,16 @@ static inline int drbg_alloc_state(struct drbg_state *drbg)
goto err ;
drbg - > Vbuf = kmalloc ( drbg_statelen ( drbg ) + ret , GFP_KERNEL ) ;
if ( ! drbg - > Vbuf )
if ( ! drbg - > Vbuf ) {
ret = - ENOMEM ;
goto fini ;
}
drbg - > V = PTR_ALIGN ( drbg - > Vbuf , ret + 1 ) ;
drbg - > Cbuf = kmalloc ( drbg_statelen ( drbg ) + ret , GFP_KERNEL ) ;
if ( ! drbg - > Cbuf )
if ( ! drbg - > Cbuf ) {
ret = - ENOMEM ;
goto fini ;
}
drbg - > C = PTR_ALIGN ( drbg - > Cbuf , ret + 1 ) ;
/* scratchpad is only generated for CTR and Hash */
if ( drbg - > core - > flags & DRBG_HMAC )
@ -1199,8 +1203,10 @@ static inline int drbg_alloc_state(struct drbg_state *drbg)
if ( 0 < sb_size ) {
drbg - > scratchpadbuf = kzalloc ( sb_size + ret , GFP_KERNEL ) ;
if ( ! drbg - > scratchpadbuf )
if ( ! drbg - > scratchpadbuf ) {
ret = - ENOMEM ;
goto fini ;
}
drbg - > scratchpad = PTR_ALIGN ( drbg - > scratchpadbuf , ret + 1 ) ;
}
@ -1999,7 +2005,7 @@ static int __init drbg_init(void)
{
unsigned int i = 0 ; /* pointer to drbg_algs */
unsigned int j = 0 ; /* pointer to drbg_cores */
int ret = - EFAULT ;
int ret ;
ret = drbg_healthcheck_sanity ( ) ;
if ( ret )
@ -2009,7 +2015,7 @@ static int __init drbg_init(void)
pr_info ( " DRBG: Cannot register all DRBG types "
" (slots needed: %zu, slots available: %zu) \n " ,
ARRAY_SIZE ( drbg_cores ) * 2 , ARRAY_SIZE ( drbg_algs ) ) ;
return ret ;
return - EFAULT ;
}
/*