Code Fuzzing Injections
include/inject.h View source View on GitHubStructs
Section titled “Structs”inject_site
Section titled “inject_site” struct inject_site (7 fields) source
§
const char *name §
const char *desc §
enum inject_kind kind §
atomic_bool armed §
atomic_uint32_t seed §
atomic_uint32_t nth §
atomic_uint32_t counter inject_kind
Section titled “inject_kind” enum inject_kind (2 variants) source
Functions
Section titled “Functions”inject_arm
Section titled “inject_arm”void inject_arm(struct inject_site *s, uint32_t seed, uint32_t nth) source inject_disarm
Section titled “inject_disarm”void inject_disarm(struct inject_site *s) source inject_delay_impl
Section titled “inject_delay_impl”void inject_delay_impl(struct inject_site *s) source inject_fail_impl
Section titled “inject_fail_impl”cc_warn_unused_result bool inject_fail_impl(struct inject_site *s) source Macros
Section titled “Macros”INJECT_SITE_ATTRIBUTE
Section titled “INJECT_SITE_ATTRIBUTE”#define INJECT_SITE_ATTRIBUTE cc_section(".kernel_inject_sites") cc_used source INJECT_SITE_DEFINE
Section titled “INJECT_SITE_DEFINE”#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)} INJECT_SITE_EXTERN
Section titled “INJECT_SITE_EXTERN”#define INJECT_SITE_EXTERN(id) source Expansion
#define INJECT_SITE_EXTERN(id) extern struct inject_site __inject_site_##id INJECT_SITE
Section titled “INJECT_SITE”#define INJECT_SITE(id) source Expansion
#define INJECT_SITE(id) (&__inject_site_##id) INJECT_DELAY
Section titled “INJECT_DELAY”#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) INJECT_FAIL
Section titled “INJECT_FAIL”#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))) INJECT_DELAY
Section titled “INJECT_DELAY”#define INJECT_DELAY(id) source Expansion
#define INJECT_DELAY(id) ((void) 0) INJECT_FAIL
Section titled “INJECT_FAIL”#define INJECT_FAIL(id) source Expansion
#define INJECT_FAIL(id) (false)