• Akinobu Mita's avatar
    [PATCH] fault injection: stacktrace filtering · 329409ae
    Akinobu Mita authored
    This patch provides stacktrace filtering feature.
    
    The stacktrace filter allows failing only for the caller you are
    interested in.
    
    For example someone may want to inject kmalloc() failures into
    only e100 module. they want to inject not only direct kmalloc() call,
    but also indirect allocation, too.
    
    - e100_poll --> netif_receive_skb --> packet_rcv_spkt --> skb_clone
      --> kmem_cache_alloc
    
    This patch enables to detect function calls like this by stacktrace
    and inject failures. The script Documentaion/fault-injection/failmodule.sh
    helps it.
    
    The range of text section of loaded e100 is expected to be
    [/sys/module/e100/sections/.text, /sys/module/e100/sections/.exit.text)
    
    So failmodule.sh stores these values into /debug/failslab/address-start
    and /debug/failslab/address-end. The maximum stacktrace depth is specified
    by /debug/failslab/stacktrace-depth.
    
    Please see the example that demonstrates how to inject slab allocation
    failures only for a specific module
    in Documentation/fault-injection/fault-injection.txt
    
    [dwm@meer.net: reject failure if any caller lies within specified range]
    Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
    Signed-off-by: default avatarDon Mullis <dwm@meer.net>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    329409ae
fault-inject.c 7.78 KB