Re: [PATCH v2 2/2] mm, kasan: add a ksize() test

From: Andrey Ryabinin
Date: Fri Apr 15 2016 - 11:59:15 EST




On 04/13/2016 02:20 PM, Alexander Potapenko wrote:
> Add a test that makes sure ksize() unpoisons the whole chunk.
>
> Signed-off-by: Alexander Potapenko <glider@xxxxxxxxxx>

Acked-by: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx>

> ---
> v2: - splitted v1 into two patches
> ---
> lib/test_kasan.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/lib/test_kasan.c b/lib/test_kasan.c
> index 82169fb..48e5a0b 100644
> --- a/lib/test_kasan.c
> +++ b/lib/test_kasan.c
> @@ -344,6 +344,25 @@ static noinline void __init kasan_stack_oob(void)
> *(volatile char *)p;
> }
>
> +static noinline void __init ksize_unpoisons_memory(void)
> +{
> + char *ptr;
> + size_t size = 123, real_size = size;
> +
> + pr_info("ksize() unpoisons the whole allocated chunk\n");
> + ptr = kmalloc(size, GFP_KERNEL);
> + if (!ptr) {
> + pr_err("Allocation failed\n");
> + return;
> + }
> + real_size = ksize(ptr);
> + /* This access doesn't trigger an error. */
> + ptr[size] = 'x';
> + /* This one does. */
> + ptr[real_size] = 'y';
> + kfree(ptr);
> +}
> +
> static int __init kmalloc_tests_init(void)
> {
> kmalloc_oob_right();
> @@ -367,6 +386,7 @@ static int __init kmalloc_tests_init(void)
> kmem_cache_oob();
> kasan_stack_oob();
> kasan_global_oob();
> + ksize_unpoisons_memory();
> return -EAGAIN;
> }
>
>