diff options
Diffstat (limited to 'crypto/skcipher.c')
| -rw-r--r-- | crypto/skcipher.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/crypto/skcipher.c b/crypto/skcipher.c index bcf13d95f54a..2e66f312e2c4 100644 --- a/crypto/skcipher.c +++ b/crypto/skcipher.c @@ -131,8 +131,13 @@ unmap_src:  		memcpy(walk->dst.virt.addr, walk->page, n);  		skcipher_unmap_dst(walk);  	} else if (unlikely(walk->flags & SKCIPHER_WALK_SLOW)) { -		if (WARN_ON(err)) { -			/* unexpected case; didn't process all bytes */ +		if (err) { +			/* +			 * Didn't process all bytes.  Either the algorithm is +			 * broken, or this was the last step and it turned out +			 * the message wasn't evenly divisible into blocks but +			 * the algorithm requires it. +			 */  			err = -EINVAL;  			goto finish;  		}  | 
