<aside> 💡 一个小测试工具,统计 crash 次数和原因,避免出现多次连续 crash 的情况

</aside>

内核 API

文件操作

struct file *filp_open(const char *filename, int flags, umode_t mode)

ssize_t kernel_write(struct file *file, const void *buf, 
												size_t count, loff_t *pos)

static inline int __must_check kstrtol(const char *s, 
																	unsigned int base, long *res)

crash 回调函数注册

int kmsg_dump_register(struct kmsg_dumper *dumper);

struct kmsg_dumper {
    struct list_head list;
    **void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason);**
    enum kmsg_dump_reason max_reason;
    bool active;
    bool registered;

    /* private state of the kmsg iterator */
    ...
};

crash 检测完整 poc

(由于crash 的位置未知,这个代码不稳定,只能用于测试环境)

Untitled

reboot 和 shutdown 会不会调用到注册的 crash 回调函数?

不会

Untitled

Untitled