Skip to content

Code Fuzzing Injections

struct inject_site (7 fields) source
§ const char *name
§ const char *desc
§ enum inject_kind kind
§ atomic_bool armed
enum inject_kind (2 variants) source
§ INJECT_KIND_DELAY = 1

spin

§ INJECT_KIND_FAIL = 1 << 1

Force failures

void inject_arm(struct inject_site *s, uint32_t seed, uint32_t nth)
source
void inject_disarm(struct inject_site *s)
source
void inject_delay_impl(struct inject_site *s)
source
cc_warn_unused_result bool inject_fail_impl(struct inject_site *s)
source
#define INJECT_SITE_ATTRIBUTE cc_section(".kernel_inject_sites") cc_used
source
#define INJECT_SITE_DEFINE(id, injkind, description)
source
Expansion
#define INJECT_SITE_DEFINE(id, injkind, description) \
    INJECT_SITE_ATTRIBUTE struct inject_site __inject_site_##id = { \
        .name = #id, .desc = (description), .kind = (injkind)}
#define INJECT_SITE_EXTERN(id)
source
Expansion
#define INJECT_SITE_EXTERN(id) extern struct inject_site __inject_site_##id
#define INJECT_SITE(id)
source
Expansion
#define INJECT_SITE(id) (&__inject_site_##id)
#define INJECT_DELAY(id)
source
Expansion
#define INJECT_DELAY(id) \
    do { \
        if (cc_unlikely(atomic_load_rlx(&INJECT_SITE(id)->armed))) \
            inject_delay_impl(INJECT_SITE(id)); \
    } while (0)
#define INJECT_FAIL(id)
source
Expansion
#define INJECT_FAIL(id) \
    (cc_unlikely(atomic_load_rlx(&INJECT_SITE(id)->armed)) && \
     inject_fail_impl(INJECT_SITE(id)))
#define INJECT_DELAY(id)
source
Expansion
#define INJECT_DELAY(id) ((void) 0)
#define INJECT_FAIL(id)
source
Expansion
#define INJECT_FAIL(id) (false)