Annotate vital static information into meminspect: - prb_descs - prb_infos - prb - prb_data - printk_rb_static - printk_rb_dynamic Information on these variables is stored into inspection table. Register dynamic information into meminspect: - new_descs - new_infos - new_log_buf This information is being allocated as a memblock, so call memblock_mark_inspect to mark the block accordingly. Signed-off-by: Eugen Hristev --- kernel/printk/printk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 5aee9ffb16b9..8b5aba2527ac 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -513,10 +514,16 @@ static u32 log_buf_len = __LOG_BUF_LEN; #endif _DEFINE_PRINTKRB(printk_rb_static, CONFIG_LOG_BUF_SHIFT - PRB_AVGBITS, PRB_AVGBITS, &__log_buf[0]); +MEMINSPECT_NAMED_ENTRY(prb_descs, _printk_rb_static_descs); +MEMINSPECT_NAMED_ENTRY(prb_infos, _printk_rb_static_infos); +MEMINSPECT_NAMED_ENTRY(prb_data, __log_buf); +MEMINSPECT_SIMPLE_ENTRY(printk_rb_static); static struct printk_ringbuffer printk_rb_dynamic; +MEMINSPECT_SIMPLE_ENTRY(printk_rb_dynamic); struct printk_ringbuffer *prb = &printk_rb_static; +MEMINSPECT_SIMPLE_ENTRY(prb); /* * We cannot access per-CPU data (e.g. per-CPU flush irq_work) before @@ -1190,6 +1197,7 @@ void __init setup_log_buf(int early) new_log_buf_len); goto out; } + memblock_mark_inspect(virt_to_phys(new_log_buf), new_log_buf_len); new_descs_size = new_descs_count * sizeof(struct prb_desc); new_descs = memblock_alloc(new_descs_size, LOG_ALIGN); @@ -1198,6 +1206,7 @@ void __init setup_log_buf(int early) new_descs_size); goto err_free_log_buf; } + memblock_mark_inspect(virt_to_phys(new_descs), new_descs_size); new_infos_size = new_descs_count * sizeof(struct printk_info); new_infos = memblock_alloc(new_infos_size, LOG_ALIGN); @@ -1206,6 +1215,7 @@ void __init setup_log_buf(int early) new_infos_size); goto err_free_descs; } + memblock_mark_inspect(virt_to_phys(new_infos), new_infos_size); prb_rec_init_rd(&r, &info, &setup_text_buf[0], sizeof(setup_text_buf)); @@ -1258,8 +1268,10 @@ void __init setup_log_buf(int early) err_free_descs: memblock_free(new_descs, new_descs_size); + memblock_clear_inspect(virt_to_phys(new_descs), new_descs_size); err_free_log_buf: memblock_free(new_log_buf, new_log_buf_len); + memblock_clear_inspect(virt_to_phys(new_log_buf), new_log_buf_len); out: print_log_buf_usage_stats(); } -- 2.43.0