• Vegard Nossum's avatar
    kmemcheck: add mm functions · 2dff4405
    Vegard Nossum authored
    With kmemcheck enabled, the slab allocator needs to do this:
    
    1. Tell kmemcheck to allocate the shadow memory which stores the status of
       each byte in the allocation proper, e.g. whether it is initialized or
       uninitialized.
    2. Tell kmemcheck which parts of memory that should be marked uninitialized.
       There are actually a few more states, such as "not yet allocated" and
       "recently freed".
    
    If a slab cache is set up using the SLAB_NOTRACK flag, it will never return
    memory that can take page faults because of kmemcheck.
    
    If a slab cache is NOT set up using the SLAB_NOTRACK flag, callers can still
    request memory with the __GFP_NOTRACK flag. This does not prevent the page
    faults from occuring, however, but marks the object in question as being
    initialized so that no warnings will ever be produced for this object.
    
    In addition to (and in contrast to) __GFP_NOTRACK, the
    __GFP_NOTRACK_FALSE_POSITIVE flag indicates that the allocation should
    not be tracked _because_ it would produce a false positive. Their values
    are identical, but need not be so in the future (for example, we could now
    enable/disable false positives with a config option).
    
    Parts of this patch were contributed by Pekka Enberg but merged for
    atomicity.
    Signed-off-by: default avatarVegard Nossum <vegard.nossum@gmail.com>
    Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    
    [rebased for mainline inclusion]
    Signed-off-by: default avatarVegard Nossum <vegard.nossum@gmail.com>
    2dff4405
fork.c 41.7 KB