Re: [PATCH v1 1/8] kasan: Change the behavior of kmalloc_large_oob_right test
From: Alexander Potapenko <glider@google.com>
Date: 2016-02-15 14:05:48
Also in:
lkml
Turns out I've actually overintellectualized this test. I've reworked this patch so that kmalloc_pagealloc_oob_right() allocates a big chunk of memory from the page allocator (and therefore is enabled only under CONFIG_SLUB). kmalloc_large_oob_right() now allocates KMALLOC_MAX_CACHE_SIZE - 256 in both SLAB and SLUB modes. I'll send the updated patch set later today. On Tue, Feb 2, 2016 at 5:25 PM, Alexander Potapenko [off-list ref] wrote:
The intention was to detect the situation in which a new allocator appears for which we don't know how it behaves if we allocate more than KMALLOC_MAX_CACHE_SIZE. I agree this makes little sense and we can just stick to CONFIG_SLAB/CONFIG_SLUB cases. However I think it's better to keep 'size = KMALLOC_MAX_CACHE_SIZE + something' to keep this code working in the case the value of KMALLOC_MAX_CACHE_SIZE changes. On Tue, Feb 2, 2016 at 4:29 PM, Andrey Ryabinin [off-list ref] wrote:quoted
On 02/02/2016 08:34 AM, Andrew Morton wrote:quoted
On Wed, 27 Jan 2016 19:25:06 +0100 Alexander Potapenko [off-list ref] wrote:quoted
depending on which allocator (SLAB or SLUB) is being used ...--- a/lib/test_kasan.c +++ b/lib/test_kasan.c@@ -68,7 +68,22 @@ static noinline void __init kmalloc_node_oob_right(void) static noinline void __init kmalloc_large_oob_right(void) { char *ptr; - size_t size = KMALLOC_MAX_CACHE_SIZE + 10; + size_t size; + + if (KMALLOC_MAX_CACHE_SIZE == KMALLOC_MAX_SIZE) { + /* + * We're using the SLAB allocator. Allocate a chunk that fits + * into a slab. + */ + size = KMALLOC_MAX_CACHE_SIZE - 256; + } else { + /* + * KMALLOC_MAX_SIZE > KMALLOC_MAX_CACHE_SIZE. + * We're using the SLUB allocator. Allocate a chunk that does + * not fit into a slab to trigger the page allocator. + */ + size = KMALLOC_MAX_CACHE_SIZE + 10; + }This seems a weird way of working out whether we're using SLAB or SLUB. Can't we use, umm, #ifdef CONFIG_SLAB? If not that then let's cook up something standardized rather than a weird just-happens-to-work like this.Actually it would be simpler to not use KMALLOC_MAX_CACHE_SIZE at all. Simply replace it with 2 or 3 PAGE_SIZEs.-- Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Straße, 33 80636 München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen Sie die E-Mail und alle Anhänge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks.
-- Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Straße, 33 80636 München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen Sie die E-Mail und alle Anhänge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>