Skip to content

Commit fc0cfac

Browse files
committed
Mirror some more efi variables to mok-variables
Some machines have EFI Boot Services variables but not Runtime variables, and thus it can be quite difficult to figure out what's going on once the system is booted. This changes mok variable mirroring to also mirror the following variables to the mok variable config table: AuditMode BootOrder BootCurrent BootNext Boot0000 Boot0001 Boot0002 Boot0003 Boot0004 Boot0005 Boot0006 DeployedMode SecureBoot SetupMode SignatureSupport Timeout PK KEK db dbx Kernel_SkuSiStatus There's no attempt to do anything involving creating runtime or boot-services only variables, it just mirrors them into the config table so they'll be exposed there. Signed-off-by: Peter Jones <pjones@redhat.com>
1 parent b216543 commit fc0cfac

File tree

2 files changed

+161
-0
lines changed

2 files changed

+161
-0
lines changed

mok.c

+147
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,153 @@ struct mok_state_variable mok_state_variable_data[] = {
262262
.flags = MOK_VARIABLE_CONFIG_ONLY,
263263
.format = format_hsi_status,
264264
},
265+
{.name = L"AuditMode",
266+
.name8 = "AuditMode",
267+
.rtname = L"AuditMode",
268+
.rtname8 = "AuditMode",
269+
.guid = &GV_GUID,
270+
.flags = MOK_VARIABLE_CONFIG_ONLY,
271+
},
272+
{.name = L"BootOrder",
273+
.name8 = "BootOrder",
274+
.rtname = L"BootOrder",
275+
.rtname8 = "BootOrder",
276+
.guid = &GV_GUID,
277+
.flags = MOK_VARIABLE_CONFIG_ONLY,
278+
},
279+
{.name = L"BootCurrent",
280+
.name8 = "BootCurrent",
281+
.rtname = L"BootCurrent",
282+
.rtname8 = "BootCurrent",
283+
.guid = &GV_GUID,
284+
.flags = MOK_VARIABLE_CONFIG_ONLY,
285+
},
286+
{.name = L"BootNext",
287+
.name8 = "BootNext",
288+
.rtname = L"BootNext",
289+
.rtname8 = "BootNext",
290+
.guid = &GV_GUID,
291+
.flags = MOK_VARIABLE_CONFIG_ONLY,
292+
},
293+
{.name = L"Boot0000",
294+
.name8 = "Boot0000",
295+
.rtname = L"Boot0000",
296+
.rtname8 = "Boot0000",
297+
.guid = &GV_GUID,
298+
.flags = MOK_VARIABLE_CONFIG_ONLY,
299+
},
300+
{.name = L"Boot0001",
301+
.name8 = "Boot0001",
302+
.rtname = L"Boot0001",
303+
.rtname8 = "Boot0001",
304+
.guid = &GV_GUID,
305+
.flags = MOK_VARIABLE_CONFIG_ONLY,
306+
},
307+
{.name = L"Boot0002",
308+
.name8 = "Boot0002",
309+
.rtname = L"Boot0002",
310+
.rtname8 = "Boot0002",
311+
.guid = &GV_GUID,
312+
.flags = MOK_VARIABLE_CONFIG_ONLY,
313+
},
314+
{.name = L"Boot0003",
315+
.name8 = "Boot0003",
316+
.rtname = L"Boot0003",
317+
.rtname8 = "Boot0003",
318+
.guid = &GV_GUID,
319+
.flags = MOK_VARIABLE_CONFIG_ONLY,
320+
},
321+
{.name = L"Boot0004",
322+
.name8 = "Boot0004",
323+
.rtname = L"Boot0004",
324+
.rtname8 = "Boot0004",
325+
.guid = &GV_GUID,
326+
.flags = MOK_VARIABLE_CONFIG_ONLY,
327+
},
328+
{.name = L"Boot0005",
329+
.name8 = "Boot0005",
330+
.rtname = L"Boot0005",
331+
.rtname8 = "Boot0005",
332+
.guid = &GV_GUID,
333+
.flags = MOK_VARIABLE_CONFIG_ONLY,
334+
},
335+
{.name = L"Boot0006",
336+
.name8 = "Boot0006",
337+
.rtname = L"Boot0006",
338+
.rtname8 = "Boot0006",
339+
.guid = &GV_GUID,
340+
.flags = MOK_VARIABLE_CONFIG_ONLY,
341+
},
342+
{.name = L"DeployedMode",
343+
.name8 = "DeployedMode",
344+
.rtname = L"DeployedMode",
345+
.rtname8 = "DeployedMode",
346+
.guid = &GV_GUID,
347+
.flags = MOK_VARIABLE_CONFIG_ONLY,
348+
},
349+
{.name = L"SecureBoot",
350+
.name8 = "SecureBoot",
351+
.rtname = L"SecureBoot",
352+
.rtname8 = "SecureBoot",
353+
.guid = &GV_GUID,
354+
.flags = MOK_VARIABLE_CONFIG_ONLY,
355+
},
356+
{.name = L"SetupMode",
357+
.name8 = "SetupMode",
358+
.rtname = L"SetupMode",
359+
.rtname8 = "SetupMode",
360+
.guid = &GV_GUID,
361+
.flags = MOK_VARIABLE_CONFIG_ONLY,
362+
},
363+
{.name = L"SignatureSupport",
364+
.name8 = "SignatureSupport",
365+
.rtname = L"SignatureSupport",
366+
.rtname8 = "SignatureSupport",
367+
.guid = &GV_GUID,
368+
.flags = MOK_VARIABLE_CONFIG_ONLY,
369+
},
370+
{.name = L"Timeout",
371+
.name8 = "Timeout",
372+
.rtname = L"Timeout",
373+
.rtname8 = "Timeout",
374+
.guid = &GV_GUID,
375+
.flags = MOK_VARIABLE_CONFIG_ONLY,
376+
},
377+
{.name = L"PK",
378+
.name8 = "PK",
379+
.rtname = L"PK",
380+
.rtname8 = "PK",
381+
.guid = &GV_GUID,
382+
.flags = MOK_VARIABLE_CONFIG_ONLY,
383+
},
384+
{.name = L"KEK",
385+
.name8 = "KEK",
386+
.rtname = L"KEK",
387+
.rtname8 = "KEK",
388+
.guid = &GV_GUID,
389+
.flags = MOK_VARIABLE_CONFIG_ONLY,
390+
},
391+
{.name = L"db",
392+
.name8 = "db",
393+
.rtname = L"db",
394+
.rtname8 = "db",
395+
.guid = &SIG_DB,
396+
.flags = MOK_VARIABLE_CONFIG_ONLY,
397+
},
398+
{.name = L"dbx",
399+
.name8 = "dbx",
400+
.rtname = L"dbx",
401+
.rtname8 = "dbx",
402+
.guid = &SIG_DB,
403+
.flags = MOK_VARIABLE_CONFIG_ONLY,
404+
},
405+
{.name = L"Kernel_SkuSiStatus",
406+
.name8 = "Kernel_SkuSiStatus",
407+
.rtname = L"Kernel_SkuSiStatus",
408+
.rtname8 = "Kernel_SkuSiStatus",
409+
.guid = &SECUREBOOT_EFI_NAMESPACE_GUID,
410+
.flags = MOK_VARIABLE_CONFIG_ONLY,
411+
},
265412
{ NULL, }
266413
};
267414
size_t n_mok_state_variables = sizeof(mok_state_variable_data) / sizeof(mok_state_variable_data[0]);

test-mock-variables.c

+14
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,13 @@ test_gnvn_helper(char *testvars)
207207
const char *mok_rt_vars[n_mok_state_variables];
208208

209209
for (size_t i = 0; i < n_mok_state_variables; i++) {
210+
/*
211+
* We don't want to filter out the variables we've added to
212+
* mok mirroring that aren't really from mok; right now
213+
* this is a reasonable heuristic for that.
214+
*/
215+
if (mok_state_variables[i].flags & MOK_VARIABLE_CONFIG_ONLY)
216+
continue;
210217
mok_rt_vars[i] = mok_state_variables[i].rtname8;
211218
}
212219

@@ -301,6 +308,13 @@ test_get_variable_0(void)
301308
const char *mok_rt_vars[n_mok_state_variables];
302309

303310
for (size_t i = 0; i < n_mok_state_variables; i++) {
311+
/*
312+
* We don't want to filter out the variables we've added to
313+
* mok mirroring that aren't really from mok; right now
314+
* this is a reasonable heuristic for that.
315+
*/
316+
if (mok_state_variables[i].flags & MOK_VARIABLE_CONFIG_ONLY)
317+
continue;
304318
mok_rt_vars[i] = mok_state_variables[i].rtname8;
305319
}
306320

0 commit comments

Comments
 (0)