coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
asan.h File Reference
#include <types.h>
Include dependency graph for asan.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  asan_source_location
 
struct  asan_global
 

Macros

#define ASAN_SHADOW_SCALE_SHIFT   3
 
#define ASAN_SHADOW_SCALE_SIZE   (1UL << ASAN_SHADOW_SCALE_SHIFT)
 
#define ASAN_SHADOW_MASK   (ASAN_SHADOW_SCALE_SIZE - 1)
 
#define ASAN_GLOBAL_REDZONE   0xFA
 
#define ASAN_STACK_LEFT   0xF1
 
#define ASAN_STACK_MID   0xF2
 
#define ASAN_STACK_RIGHT   0xF3
 
#define ASAN_STACK_PARTIAL   0xF4
 
#define ASAN_USE_AFTER_SCOPE   0xF8
 
#define _RET_IP_   ((unsigned long)__builtin_return_address(0))
 
#define likely(x)   __builtin_expect(!!(x), 1)
 
#define unlikely(x)   __builtin_expect(!!(x), 0)
 
#define WARN_ON(condition)
 
#define ASAN_ABI_VERSION   5
 

Functions

void asan_unpoison_shadow (const void *address, size_t size)
 
void asan_report (unsigned long addr, size_t size, bool is_write, unsigned long ip)
 
void asan_init (void)
 
void check_memory_region (unsigned long addr, size_t size, bool write, unsigned long ret_ip)
 
uintptr_t __asan_shadow_offset (uintptr_t addr)
 
void __asan_register_globals (struct asan_global *globals, size_t size)
 
void __asan_unregister_globals (struct asan_global *globals, size_t size)
 
void __asan_poison_stack_memory (const void *addr, size_t size)
 
void __asan_unpoison_stack_memory (const void *addr, size_t size)
 
void __asan_load1 (unsigned long addr)
 
void __asan_store1 (unsigned long addr)
 
void __asan_load2 (unsigned long addr)
 
void __asan_store2 (unsigned long addr)
 
void __asan_load4 (unsigned long addr)
 
void __asan_store4 (unsigned long addr)
 
void __asan_load8 (unsigned long addr)
 
void __asan_store8 (unsigned long addr)
 
void __asan_load16 (unsigned long addr)
 
void __asan_store16 (unsigned long addr)
 
void __asan_loadN (unsigned long addr, size_t size)
 
void __asan_storeN (unsigned long addr, size_t size)
 
void __asan_load1_noabort (unsigned long addr)
 
void __asan_store1_noabort (unsigned long addr)
 
void __asan_load2_noabort (unsigned long addr)
 
void __asan_store2_noabort (unsigned long addr)
 
void __asan_load4_noabort (unsigned long addr)
 
void __asan_store4_noabort (unsigned long addr)
 
void __asan_load8_noabort (unsigned long addr)
 
void __asan_store8_noabort (unsigned long addr)
 
void __asan_load16_noabort (unsigned long addr)
 
void __asan_store16_noabort (unsigned long addr)
 
void __asan_loadN_noabort (unsigned long addr, size_t size)
 
void __asan_storeN_noabort (unsigned long addr, size_t size)
 
void __asan_handle_no_return (void)
 
void __asan_set_shadow_00 (const void *addr, size_t size)
 
void __asan_set_shadow_f1 (const void *addr, size_t size)
 
void __asan_set_shadow_f2 (const void *addr, size_t size)
 
void __asan_set_shadow_f3 (const void *addr, size_t size)
 
void __asan_set_shadow_f5 (const void *addr, size_t size)
 
void __asan_set_shadow_f8 (const void *addr, size_t size)
 
void __asan_report_load1_noabort (unsigned long addr)
 
void __asan_report_store1_noabort (unsigned long addr)
 
void __asan_report_load2_noabort (unsigned long addr)
 
void __asan_report_store2_noabort (unsigned long addr)
 
void __asan_report_load4_noabort (unsigned long addr)
 
void __asan_report_store4_noabort (unsigned long addr)
 
void __asan_report_load8_noabort (unsigned long addr)
 
void __asan_report_store8_noabort (unsigned long addr)
 
void __asan_report_load16_noabort (unsigned long addr)
 
void __asan_report_store16_noabort (unsigned long addr)
 
void __asan_report_load_n_noabort (unsigned long addr, size_t size)
 
void __asan_report_store_n_noabort (unsigned long addr, size_t size)
 

Macro Definition Documentation

◆ _RET_IP_

#define _RET_IP_   ((unsigned long)__builtin_return_address(0))

Definition at line 20 of file asan.h.

◆ ASAN_ABI_VERSION

#define ASAN_ABI_VERSION   5

Definition at line 30 of file asan.h.

◆ ASAN_GLOBAL_REDZONE

#define ASAN_GLOBAL_REDZONE   0xFA

Definition at line 13 of file asan.h.

◆ ASAN_SHADOW_MASK

#define ASAN_SHADOW_MASK   (ASAN_SHADOW_SCALE_SIZE - 1)

Definition at line 11 of file asan.h.

◆ ASAN_SHADOW_SCALE_SHIFT

#define ASAN_SHADOW_SCALE_SHIFT   3

Definition at line 8 of file asan.h.

◆ ASAN_SHADOW_SCALE_SIZE

#define ASAN_SHADOW_SCALE_SIZE   (1UL << ASAN_SHADOW_SCALE_SHIFT)

Definition at line 10 of file asan.h.

◆ ASAN_STACK_LEFT

#define ASAN_STACK_LEFT   0xF1

Definition at line 14 of file asan.h.

◆ ASAN_STACK_MID

#define ASAN_STACK_MID   0xF2

Definition at line 15 of file asan.h.

◆ ASAN_STACK_PARTIAL

#define ASAN_STACK_PARTIAL   0xF4

Definition at line 17 of file asan.h.

◆ ASAN_STACK_RIGHT

#define ASAN_STACK_RIGHT   0xF3

Definition at line 16 of file asan.h.

◆ ASAN_USE_AFTER_SCOPE

#define ASAN_USE_AFTER_SCOPE   0xF8

Definition at line 18 of file asan.h.

◆ likely

#define likely (   x)    __builtin_expect(!!(x), 1)

Definition at line 21 of file asan.h.

◆ unlikely

#define unlikely (   x)    __builtin_expect(!!(x), 0)

Definition at line 22 of file asan.h.

◆ WARN_ON

#define WARN_ON (   condition)
Value:
({ \
int __ret_warn_on = !!(condition); \
unlikely(__ret_warn_on); \
})

Definition at line 24 of file asan.h.

Function Documentation

◆ __asan_handle_no_return()

void __asan_handle_no_return ( void  )

Definition at line 391 of file asan.c.

◆ __asan_load1()

void __asan_load1 ( unsigned long  addr)

◆ __asan_load16()

void __asan_load16 ( unsigned long  addr)

◆ __asan_load16_noabort()

void __asan_load16_noabort ( unsigned long  addr)

◆ __asan_load1_noabort()

void __asan_load1_noabort ( unsigned long  addr)

◆ __asan_load2()

void __asan_load2 ( unsigned long  addr)

◆ __asan_load2_noabort()

void __asan_load2_noabort ( unsigned long  addr)

◆ __asan_load4()

void __asan_load4 ( unsigned long  addr)

◆ __asan_load4_noabort()

void __asan_load4_noabort ( unsigned long  addr)

◆ __asan_load8()

void __asan_load8 ( unsigned long  addr)

◆ __asan_load8_noabort()

void __asan_load8_noabort ( unsigned long  addr)

◆ __asan_loadN()

void __asan_loadN ( unsigned long  addr,
size_t  size 
)

Definition at line 371 of file asan.c.

References _RET_IP_, addr, and check_memory_region().

Here is the call graph for this function:

◆ __asan_loadN_noabort()

void __asan_loadN_noabort ( unsigned long  addr,
size_t  size 
)

Definition at line 381 of file asan.c.

References _RET_IP_, addr, and check_memory_region().

Here is the call graph for this function:

◆ __asan_poison_stack_memory()

void __asan_poison_stack_memory ( const void addr,
size_t  size 
)

Definition at line 336 of file asan.c.

References addr, ALIGN_UP, asan_poison_shadow(), ASAN_SHADOW_SCALE_SIZE, and ASAN_USE_AFTER_SCOPE.

Here is the call graph for this function:

◆ __asan_register_globals()

void __asan_register_globals ( struct asan_global globals,
size_t  size 
)

Definition at line 292 of file asan.c.

References register_global().

Here is the call graph for this function:

◆ __asan_report_load16_noabort()

void __asan_report_load16_noabort ( unsigned long  addr)

◆ __asan_report_load1_noabort()

void __asan_report_load1_noabort ( unsigned long  addr)

◆ __asan_report_load2_noabort()

void __asan_report_load2_noabort ( unsigned long  addr)

◆ __asan_report_load4_noabort()

void __asan_report_load4_noabort ( unsigned long  addr)

◆ __asan_report_load8_noabort()

void __asan_report_load8_noabort ( unsigned long  addr)

◆ __asan_report_load_n_noabort()

void __asan_report_load_n_noabort ( unsigned long  addr,
size_t  size 
)

Definition at line 431 of file asan.c.

References _RET_IP_, addr, and asan_report().

Here is the call graph for this function:

◆ __asan_report_store16_noabort()

void __asan_report_store16_noabort ( unsigned long  addr)

◆ __asan_report_store1_noabort()

void __asan_report_store1_noabort ( unsigned long  addr)

◆ __asan_report_store2_noabort()

void __asan_report_store2_noabort ( unsigned long  addr)

◆ __asan_report_store4_noabort()

void __asan_report_store4_noabort ( unsigned long  addr)

◆ __asan_report_store8_noabort()

void __asan_report_store8_noabort ( unsigned long  addr)

◆ __asan_report_store_n_noabort()

void __asan_report_store_n_noabort ( unsigned long  addr,
size_t  size 
)

Definition at line 436 of file asan.c.

References _RET_IP_, addr, and asan_report().

Here is the call graph for this function:

◆ __asan_set_shadow_00()

void __asan_set_shadow_00 ( const void addr,
size_t  size 
)

◆ __asan_set_shadow_f1()

void __asan_set_shadow_f1 ( const void addr,
size_t  size 
)

◆ __asan_set_shadow_f2()

void __asan_set_shadow_f2 ( const void addr,
size_t  size 
)

◆ __asan_set_shadow_f3()

void __asan_set_shadow_f3 ( const void addr,
size_t  size 
)

◆ __asan_set_shadow_f5()

void __asan_set_shadow_f5 ( const void addr,
size_t  size 
)

◆ __asan_set_shadow_f8()

void __asan_set_shadow_f8 ( const void addr,
size_t  size 
)

◆ __asan_shadow_offset()

uintptr_t __asan_shadow_offset ( uintptr_t  addr)

Definition at line 270 of file asan.c.

References _car_region_start, and ASAN_SHADOW_SCALE_SHIFT.

◆ __asan_store1()

void __asan_store1 ( unsigned long  addr)

◆ __asan_store16()

void __asan_store16 ( unsigned long  addr)

◆ __asan_store16_noabort()

void __asan_store16_noabort ( unsigned long  addr)

◆ __asan_store1_noabort()

void __asan_store1_noabort ( unsigned long  addr)

◆ __asan_store2()

void __asan_store2 ( unsigned long  addr)

◆ __asan_store2_noabort()

void __asan_store2_noabort ( unsigned long  addr)

◆ __asan_store4()

void __asan_store4 ( unsigned long  addr)

◆ __asan_store4_noabort()

void __asan_store4_noabort ( unsigned long  addr)

◆ __asan_store8()

void __asan_store8 ( unsigned long  addr)

◆ __asan_store8_noabort()

void __asan_store8_noabort ( unsigned long  addr)

◆ __asan_storeN()

void __asan_storeN ( unsigned long  addr,
size_t  size 
)

Definition at line 376 of file asan.c.

References _RET_IP_, addr, and check_memory_region().

Here is the call graph for this function:

◆ __asan_storeN_noabort()

void __asan_storeN_noabort ( unsigned long  addr,
size_t  size 
)

Definition at line 386 of file asan.c.

References _RET_IP_, addr, and check_memory_region().

Here is the call graph for this function:

◆ __asan_unpoison_stack_memory()

void __asan_unpoison_stack_memory ( const void addr,
size_t  size 
)

Definition at line 342 of file asan.c.

References addr, and asan_unpoison_shadow().

Here is the call graph for this function:

◆ __asan_unregister_globals()

void __asan_unregister_globals ( struct asan_global globals,
size_t  size 
)

Definition at line 300 of file asan.c.

◆ asan_init()

void asan_init ( void  )

Definition at line 324 of file asan.c.

References _car_region_start, _eheap, and asan_unpoison_shadow().

Here is the call graph for this function:

◆ asan_report()

void asan_report ( unsigned long  addr,
size_t  size,
bool  is_write,
unsigned long  ip 
)

Definition at line 224 of file asan.c.

References addr, BIOS_ERR, get_shadow_bug_type(), and printk.

Referenced by __asan_report_load_n_noabort(), __asan_report_store_n_noabort(), and check_memory_region_inline().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ asan_unpoison_shadow()

void asan_unpoison_shadow ( const void address,
size_t  size 
)

Definition at line 49 of file asan.c.

References address, asan_mem_to_shadow(), asan_poison_shadow(), and ASAN_SHADOW_MASK.

Referenced by __asan_unpoison_stack_memory(), asan_init(), and register_global().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ check_memory_region()

void check_memory_region ( unsigned long  addr,
size_t  size,
bool  write,
unsigned long  ret_ip 
)

Definition at line 264 of file asan.c.

References addr, and check_memory_region_inline().

Referenced by __asan_loadN(), __asan_loadN_noabort(), __asan_storeN(), __asan_storeN_noabort(), memcpy(), memmove(), and memset().

Here is the call graph for this function:
Here is the caller graph for this function: