提交 7c236d93 编写于 作者: J Jason A. Donenfeld 提交者: Geert Uytterhoeven

m68k: Process bootinfo records before saving them

The RNG seed boot record is memzeroed after processing, in order to
preserve forward secrecy. By saving the bootinfo for procfs prior to
that, forward secrecy is violated, since it becomes possible to recover
past states. So, save the bootinfo block only after first processing
them.

Fixes: a1ee38ab ("m68k: virt: Use RNG seed from bootinfo block")
Signed-off-by: NJason A. Donenfeld <Jason@zx2c4.com>
Link: https://lore.kernel.org/r/20220927130835.1629806-1-Jason@zx2c4.comSigned-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
上级 15f90423
...@@ -109,10 +109,9 @@ extern void paging_init(void); ...@@ -109,10 +109,9 @@ extern void paging_init(void);
static void __init m68k_parse_bootinfo(const struct bi_record *record) static void __init m68k_parse_bootinfo(const struct bi_record *record)
{ {
const struct bi_record *first_record = record;
uint16_t tag; uint16_t tag;
save_bootinfo(record);
while ((tag = be16_to_cpu(record->tag)) != BI_LAST) { while ((tag = be16_to_cpu(record->tag)) != BI_LAST) {
int unknown = 0; int unknown = 0;
const void *data = record->data; const void *data = record->data;
...@@ -182,6 +181,8 @@ static void __init m68k_parse_bootinfo(const struct bi_record *record) ...@@ -182,6 +181,8 @@ static void __init m68k_parse_bootinfo(const struct bi_record *record)
record = (struct bi_record *)((unsigned long)record + size); record = (struct bi_record *)((unsigned long)record + size);
} }
save_bootinfo(first_record);
m68k_realnum_memory = m68k_num_memory; m68k_realnum_memory = m68k_num_memory;
#ifdef CONFIG_SINGLE_MEMORY_CHUNK #ifdef CONFIG_SINGLE_MEMORY_CHUNK
if (m68k_num_memory > 1) { if (m68k_num_memory > 1) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册