Skip to content

Commit

Permalink
lib/tst_lockdown.c: Add PPC64 architecture support
Browse files Browse the repository at this point in the history
Add PPC64 architecture support to the lockdown library.

Signed-off-by: R Nageswara Sastry <[email protected]>
Reviewed-by: Martin Doucha <[email protected]>
Reviewed-by: Cyril Hrubis <[email protected]>
  • Loading branch information
nasastry authored and metan-ucw committed Sep 7, 2023
1 parent e7999af commit 0102f3b
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions lib/tst_lockdown.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,38 @@
#include "tst_lockdown.h"
#include "tst_private.h"

#define EFIVAR_SECUREBOOT "/sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c"
#if defined(__powerpc64__) || defined(__ppc64__)
# define SECUREBOOT_VAR "/proc/device-tree/ibm,secure-boot"
# define VAR_DATA_SIZE 4
#else
# define SECUREBOOT_VAR "/sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c"
# define VAR_DATA_SIZE 5
#endif

int tst_secureboot_enabled(void)
{
int fd;
char data[5];

if (access(EFIVAR_SECUREBOOT, F_OK)) {
tst_res(TINFO, "Efivar FS not available");
if (access(SECUREBOOT_VAR, F_OK)) {
tst_res(TINFO, "SecureBoot sysfs file not available");
return -1;
}

fd = open(EFIVAR_SECUREBOOT, O_RDONLY);
fd = open(SECUREBOOT_VAR, O_RDONLY);

if (fd == -1) {
tst_res(TINFO | TERRNO,
"Cannot open SecureBoot Efivar sysfile");
"Cannot open SecureBoot file");
return -1;
} else if (fd < 0) {
tst_brk(TBROK | TERRNO, "Invalid open() return value %d", fd);
return -1;
}

SAFE_READ(1, fd, data, 5);
SAFE_READ(1, fd, data, VAR_DATA_SIZE);
SAFE_CLOSE(fd);
tst_res(TINFO, "SecureBoot: %s", data[4] ? "on" : "off");
return data[4];
tst_res(TINFO, "SecureBoot: %s", data[VAR_DATA_SIZE - 1] ? "on" : "off");
return data[VAR_DATA_SIZE - 1];
}

int tst_lockdown_enabled(void)
Expand All @@ -51,9 +56,16 @@ int tst_lockdown_enabled(void)

if (access(PATH_LOCKDOWN, F_OK) != 0) {
char flag;

/* SecureBoot enabled could mean integrity lockdown (non-mainline version) */
#if defined(__powerpc64__) || defined(__ppc64__)
flag = tst_kconfig_get("CONFIG_SECURITY_LOCKDOWN_LSM") == 'y';
flag |= tst_kconfig_get("CONFIG_SECURITY_LOCKDOWN_LSM_EARLY") == 'y';
#else
flag = tst_kconfig_get("CONFIG_EFI_SECURE_BOOT_LOCK_DOWN") == 'y';
flag |= tst_kconfig_get("CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT") == 'y';
#endif

if (flag && tst_secureboot_enabled() > 0)
return 1;

Expand Down

0 comments on commit 0102f3b

Please sign in to comment.