Updates for secure boot
This commit is contained in:
parent
27b219978f
commit
cc1db7f347
@ -6,27 +6,27 @@ Subject: [PATCH 1/3] Make get_cert_list() not complain about cert lists that
|
|||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
---
|
---
|
||||||
certs/load_uefi.c | 37 ++++++++++++++++++++++---------------
|
security/integrity/platform_certs/load_uefi.c | 37 ++++++++++++++++++++++---------------
|
||||||
1 file changed, 22 insertions(+), 15 deletions(-)
|
1 file changed, 22 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
diff --git a/certs/load_uefi.c b/certs/load_uefi.c
|
diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c
|
||||||
index 3d884598601..9ef34c44fd1 100644
|
index 81b19c52832b..e188f3ecbce3 100644
|
||||||
--- a/certs/load_uefi.c
|
--- a/security/integrity/platform_certs/load_uefi.c
|
||||||
+++ b/certs/load_uefi.c
|
+++ b/security/integrity/platform_certs/load_uefi.c
|
||||||
@@ -35,8 +35,8 @@ static __init bool uefi_check_ignore_db(void)
|
@@ -38,8 +38,8 @@ static __init bool uefi_check_ignore_db(void)
|
||||||
/*
|
/*
|
||||||
* Get a certificate list blob from the named EFI variable.
|
* Get a certificate list blob from the named EFI variable.
|
||||||
*/
|
*/
|
||||||
-static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
-static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
||||||
- unsigned long *size)
|
- unsigned long *size)
|
||||||
+static __init int get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
+static __init int get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
||||||
+ unsigned long *size, void **cert_list)
|
+ unsigned long *size , void **cert_list)
|
||||||
{
|
{
|
||||||
efi_status_t status;
|
efi_status_t status;
|
||||||
unsigned long lsize = 4;
|
unsigned long lsize = 4;
|
||||||
@@ -44,26 +44,33 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
@@ -47,24 +47,31 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
||||||
void *db;
|
void *db;
|
||||||
|
|
||||||
status = efi.get_variable(name, guid, NULL, &lsize, &tmpdb);
|
status = efi.get_variable(name, guid, NULL, &lsize, &tmpdb);
|
||||||
+ if (status == EFI_NOT_FOUND) {
|
+ if (status == EFI_NOT_FOUND) {
|
||||||
+ *size = 0;
|
+ *size = 0;
|
||||||
@ -39,14 +39,12 @@ index 3d884598601..9ef34c44fd1 100644
|
|||||||
- return NULL;
|
- return NULL;
|
||||||
+ return efi_status_to_err(status);
|
+ return efi_status_to_err(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
db = kmalloc(lsize, GFP_KERNEL);
|
db = kmalloc(lsize, GFP_KERNEL);
|
||||||
if (!db) {
|
if (!db)
|
||||||
pr_err("Couldn't allocate memory for uefi cert list\n");
|
|
||||||
- return NULL;
|
- return NULL;
|
||||||
+ return -ENOMEM;
|
+ return -ENOMEM;
|
||||||
}
|
|
||||||
|
|
||||||
status = efi.get_variable(name, guid, NULL, &lsize, db);
|
status = efi.get_variable(name, guid, NULL, &lsize, db);
|
||||||
if (status != EFI_SUCCESS) {
|
if (status != EFI_SUCCESS) {
|
||||||
kfree(db);
|
kfree(db);
|
||||||
@ -54,15 +52,15 @@ index 3d884598601..9ef34c44fd1 100644
|
|||||||
- return NULL;
|
- return NULL;
|
||||||
+ return efi_status_to_err(status);
|
+ return efi_status_to_err(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
*size = lsize;
|
*size = lsize;
|
||||||
- return db;
|
- return db;
|
||||||
+ *cert_list = db;
|
+ *cert_list = db;
|
||||||
+ return 0;
|
+ return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -152,10 +159,10 @@ static int __init load_uefi_certs(void)
|
@@ -153,10 +160,10 @@ static int __init load_uefi_certs(void)
|
||||||
* an error if we can't get them.
|
* an error if we can't get them.
|
||||||
*/
|
*/
|
||||||
if (!uefi_check_ignore_db()) {
|
if (!uefi_check_ignore_db()) {
|
||||||
@ -74,36 +72,33 @@ index 3d884598601..9ef34c44fd1 100644
|
|||||||
- } else {
|
- } else {
|
||||||
+ } else if (dbsize != 0) {
|
+ } else if (dbsize != 0) {
|
||||||
rc = parse_efi_signature_list("UEFI:db",
|
rc = parse_efi_signature_list("UEFI:db",
|
||||||
db, dbsize, get_handler_for_db);
|
db, dbsize, get_handler_for_db);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -164,10 +171,10 @@ static int __init load_uefi_certs(void)
|
@@ -166,10 +173,10 @@ static int __init load_uefi_certs(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- mok = get_cert_list(L"MokListRT", &mok_var, &moksize);
|
- mok = get_cert_list(L"MokListRT", &mok_var, &moksize);
|
||||||
- if (!mok) {
|
- if (!mok) {
|
||||||
+ rc = get_cert_list(L"MokListRT", &mok_var, &moksize, &mok);
|
+ rc = get_cert_list(L"MokListRT", &mok_var, &moksize, &mok);
|
||||||
+ if (rc < 0) {
|
+ if (rc < 0) {
|
||||||
pr_info("MODSIGN: Couldn't get UEFI MokListRT\n");
|
pr_info("Couldn't get UEFI MokListRT\n");
|
||||||
- } else {
|
- } else {
|
||||||
+ } else if (moksize != 0) {
|
+ } else if (moksize != 0) {
|
||||||
rc = parse_efi_signature_list("UEFI:MokListRT",
|
rc = parse_efi_signature_list("UEFI:MokListRT",
|
||||||
mok, moksize, get_handler_for_db);
|
mok, moksize, get_handler_for_db);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -175,10 +182,10 @@ static int __init load_uefi_certs(void)
|
@@ -177,10 +184,10 @@ static int __init load_uefi_certs(void)
|
||||||
kfree(mok);
|
kfree(mok);
|
||||||
}
|
}
|
||||||
|
|
||||||
- dbx = get_cert_list(L"dbx", &secure_var, &dbxsize);
|
- dbx = get_cert_list(L"dbx", &secure_var, &dbxsize);
|
||||||
- if (!dbx) {
|
- if (!dbx) {
|
||||||
+ rc = get_cert_list(L"dbx", &secure_var, &dbxsize, &dbx);
|
+ rc = get_cert_list(L"dbx", &secure_var, &dbxsize, &dbx);
|
||||||
+ if (rc < 0) {
|
+ if (rc < 0) {
|
||||||
pr_info("MODSIGN: Couldn't get UEFI dbx list\n");
|
pr_info("Couldn't get UEFI dbx list\n");
|
||||||
- } else {
|
- } else {
|
||||||
+ } else if (dbxsize != 0) {
|
+ } else if (dbxsize != 0) {
|
||||||
rc = parse_efi_signature_list("UEFI:dbx",
|
rc = parse_efi_signature_list("UEFI:dbx",
|
||||||
dbx, dbxsize,
|
dbx, dbxsize,
|
||||||
get_handler_for_dbx);
|
get_handler_for_dbx);
|
||||||
--
|
|
||||||
2.15.0
|
|
||||||
|
|
||||||
|
@ -6,13 +6,13 @@ Subject: [PATCH 3/3] Make get_cert_list() use efi_status_to_str() to print
|
|||||||
|
|
||||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||||
---
|
---
|
||||||
certs/load_uefi.c | 6 ++++--
|
security/integrity/platform_certs/load_uefi.c | 6 ++++--
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/certs/load_uefi.c b/certs/load_uefi.c
|
diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c
|
||||||
index 9ef34c44fd1..13a2826715d 100644
|
index 9ef34c44fd1..13a2826715d 100644
|
||||||
--- a/certs/load_uefi.c
|
--- a/security/integrity/platform_certs/load_uefi.c
|
||||||
+++ b/certs/load_uefi.c
|
+++ b/security/integrity/platform_certs/load_uefi.c
|
||||||
@@ -51,7 +51,8 @@ static __init int get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
@@ -51,7 +51,8 @@ static __init int get_cert_list(efi_char16_t *name, efi_guid_t *guid,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
CONFIG_INTEGRITY_PLATFORM_KEYRING=y
|
@ -2335,7 +2335,7 @@ CONFIG_INT3406_THERMAL=m
|
|||||||
CONFIG_INT340X_THERMAL=m
|
CONFIG_INT340X_THERMAL=m
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_INTEGRITY_AUDIT=y
|
CONFIG_INTEGRITY_AUDIT=y
|
||||||
# CONFIG_INTEGRITY_PLATFORM_KEYRING is not set
|
CONFIG_INTEGRITY_PLATFORM_KEYRING=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY=y
|
CONFIG_INTEGRITY=y
|
||||||
CONFIG_INTEL_ATOMISP2_PM=m
|
CONFIG_INTEL_ATOMISP2_PM=m
|
||||||
|
@ -2317,7 +2317,7 @@ CONFIG_INT3406_THERMAL=m
|
|||||||
CONFIG_INT340X_THERMAL=m
|
CONFIG_INT340X_THERMAL=m
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_INTEGRITY_AUDIT=y
|
CONFIG_INTEGRITY_AUDIT=y
|
||||||
# CONFIG_INTEGRITY_PLATFORM_KEYRING is not set
|
CONFIG_INTEGRITY_PLATFORM_KEYRING=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY=y
|
CONFIG_INTEGRITY=y
|
||||||
CONFIG_INTEL_ATOMISP2_PM=m
|
CONFIG_INTEL_ATOMISP2_PM=m
|
||||||
|
@ -2380,7 +2380,7 @@ CONFIG_INT3406_THERMAL=m
|
|||||||
CONFIG_INT340X_THERMAL=m
|
CONFIG_INT340X_THERMAL=m
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_INTEGRITY_AUDIT=y
|
CONFIG_INTEGRITY_AUDIT=y
|
||||||
# CONFIG_INTEGRITY_PLATFORM_KEYRING is not set
|
CONFIG_INTEGRITY_PLATFORM_KEYRING=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY=y
|
CONFIG_INTEGRITY=y
|
||||||
CONFIG_INTEL_ATOMISP2_PM=m
|
CONFIG_INTEL_ATOMISP2_PM=m
|
||||||
|
@ -2362,7 +2362,7 @@ CONFIG_INT3406_THERMAL=m
|
|||||||
CONFIG_INT340X_THERMAL=m
|
CONFIG_INT340X_THERMAL=m
|
||||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||||
CONFIG_INTEGRITY_AUDIT=y
|
CONFIG_INTEGRITY_AUDIT=y
|
||||||
# CONFIG_INTEGRITY_PLATFORM_KEYRING is not set
|
CONFIG_INTEGRITY_PLATFORM_KEYRING=y
|
||||||
CONFIG_INTEGRITY_SIGNATURE=y
|
CONFIG_INTEGRITY_SIGNATURE=y
|
||||||
CONFIG_INTEGRITY=y
|
CONFIG_INTEGRITY=y
|
||||||
CONFIG_INTEL_ATOMISP2_PM=m
|
CONFIG_INTEL_ATOMISP2_PM=m
|
||||||
|
@ -544,12 +544,6 @@ Patch201: efi-lockdown.patch
|
|||||||
|
|
||||||
Patch202: KEYS-Allow-unrestricted-boot-time-addition-of-keys-t.patch
|
Patch202: KEYS-Allow-unrestricted-boot-time-addition-of-keys-t.patch
|
||||||
|
|
||||||
Patch204: Add-an-EFI-signature-blob-parser-and-key-loader.patch
|
|
||||||
|
|
||||||
Patch205: MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
|
|
||||||
|
|
||||||
Patch206: MODSIGN-Support-not-importing-certs-from-db.patch
|
|
||||||
|
|
||||||
# bz 1497559 - Make kernel MODSIGN code not error on missing variables
|
# bz 1497559 - Make kernel MODSIGN code not error on missing variables
|
||||||
Patch207: 0001-Make-get_cert_list-not-complain-about-cert-lists-tha.patch
|
Patch207: 0001-Make-get_cert_list-not-complain-about-cert-lists-tha.patch
|
||||||
Patch208: 0002-Add-efi_status_to_str-and-rework-efi_status_to_err.patch
|
Patch208: 0002-Add-efi_status_to_str-and-rework-efi_status_to_err.patch
|
||||||
@ -1878,6 +1872,9 @@ fi
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jan 07 2019 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||||
|
- Updates for secure boot
|
||||||
|
|
||||||
* Mon Jan 07 2019 Laura Abbott <labbott@redhat.com> - 5.0.0-0.rc1.git0.1
|
* Mon Jan 07 2019 Laura Abbott <labbott@redhat.com> - 5.0.0-0.rc1.git0.1
|
||||||
- Linux v5.0-rc1
|
- Linux v5.0-rc1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user