path: root/lib/test_overflow.c
AgeCommit message (Collapse)Author
2019-07-16lib/test_overflow.c: avoid tainting the kernel and fix wrap sizeKees Cook
This adds __GFP_NOWARN to the kmalloc()-portions of the overflow test to avoid tainting the kernel. Additionally fixes up the math on wrap size to be architecture and page size agnostic. Link: Fixes: ca90800a91ba ("test_overflow: Add memory allocation overflow tests") Signed-off-by: Kees Cook <> Reported-by: Randy Dunlap <> Suggested-by: Rasmus Villemoes <> Cc: Joe Perches <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
2018-08-08test_overflow: Add shift overflow testsKees Cook
This adds overflow tests for the new check_shift_overflow() helper to validate overflow, signedness glitches, storage glitches, etc. Co-developed-by: Rasmus Villemoes <> Signed-off-by: Kees Cook <> Signed-off-by: Jason Gunthorpe <>
2018-06-12test_overflow: fix an IS_ERR() vs NULL bugDan Carpenter
root_device_register() returns error pointers, it never returns NULL. Fixes: ca90800a91ba ("test_overflow: Add memory allocation overflow tests") Signed-off-by: Dan Carpenter <> Signed-off-by: Kees Cook <>
2018-06-05test_overflow: Add memory allocation overflow testsKees Cook
Make sure that the memory allocators are behaving as expected in the face of overflows of multiplied arguments or when using the array_size()-family helpers. Example output of new tests (with the expected __alloc_pages_slowpath and vmalloc warnings about refusing giant allocations removed): [ 93.062076] test_overflow: kmalloc detected saturation [ 93.062988] test_overflow: kmalloc_node detected saturation [ 93.063818] test_overflow: kzalloc detected saturation [ 93.064539] test_overflow: kzalloc_node detected saturation [ 93.120386] test_overflow: kvmalloc detected saturation [ 93.143458] test_overflow: kvmalloc_node detected saturation [ 93.166861] test_overflow: kvzalloc detected saturation [ 93.189924] test_overflow: kvzalloc_node detected saturation [ 93.221671] test_overflow: vmalloc detected saturation [ 93.246326] test_overflow: vmalloc_node detected saturation [ 93.270260] test_overflow: vzalloc detected saturation [ 93.293824] test_overflow: vzalloc_node detected saturation [ 93.294597] test_overflow: devm_kmalloc detected saturation [ 93.295383] test_overflow: devm_kzalloc detected saturation [ 93.296217] test_overflow: all tests passed Signed-off-by: Kees Cook <>
2018-06-05test_overflow: Report test failuresKees Cook
This adjusts the overflow test to report failures, and prepares to add allocation tests. Signed-off-by: Kees Cook <>
2018-06-05test_overflow: macrofy some more, do more tests for freeRasmus Villemoes
Obviously a+b==b+a and a*b==b*a, but the implementation of the fallback checks are not entirely symmetric in how they treat a and b. So we might as well check the (b,a,r,of) tuple as well as the (a,b,r,of) one for + and *. Rather than more copy-paste, factor out the common part to check_one_op. Signed-off-by: Rasmus Villemoes <> Signed-off-by: Kees Cook <>
2018-06-05lib: add runtime test of check_*_overflow functionsRasmus Villemoes
This adds a small module for testing that the check_*_overflow functions work as expected, whether implemented in C or using gcc builtins. Example output: test_overflow: u8 : 18 tests test_overflow: s8 : 19 tests test_overflow: u16: 17 tests test_overflow: s16: 17 tests test_overflow: u32: 17 tests test_overflow: s32: 17 tests test_overflow: u64: 17 tests test_overflow: s64: 21 tests Signed-off-by: Rasmus Villemoes <> [kees: add output to commit log, drop u64 tests on 32-bit] Signed-off-by: Kees Cook <>