forked from rpms/kernel
		
	Temp fix for blacklist rework until I figure out how I want to fix for upstream
This commit is contained in:
		
							parent
							
								
									05e55297ee
								
							
						
					
					
						commit
						b88f18484e
					
				| @ -51,17 +51,36 @@ index 787eeead2f57..4d9123ed5c07 100644 | ||||
|   * | ||||
|   * Restrict the addition of keys into a keyring based on the key-to-be-added | ||||
| diff --git a/include/keys/system_keyring.h b/include/keys/system_keyring.h
 | ||||
| index 5bc291a3d261..56ff5715ab67 100644
 | ||||
| index 359c2f9..e7160a6 100644
 | ||||
| --- a/include/keys/system_keyring.h
 | ||||
| +++ b/include/keys/system_keyring.h
 | ||||
| @@ -36,6 +36,7 @@ extern int restrict_link_by_builtin_and_secondary_trusted(
 | ||||
| @@ -39,14 +39,26 @@ extern int restrict_link_by_builtin_and_secondary_trusted(
 | ||||
|  extern int mark_hash_blacklisted(const char *hash); | ||||
|  extern int is_hash_blacklisted(const u8 *hash, size_t hash_len, | ||||
|  			       const char *type); | ||||
| +extern struct key *blacklist_keyring;
 | ||||
| +
 | ||||
| +static inline struct key *get_blacklist_keyring(void)
 | ||||
| +{
 | ||||
| +	return blacklist_keyring;
 | ||||
| +}
 | ||||
|  #else | ||||
|  static inline int is_hash_blacklisted(const u8 *hash, size_t hash_len, | ||||
|  				      const char *type) | ||||
|  { | ||||
|  	return 0; | ||||
|  } | ||||
| +static inline struct key *get_blacklist_keyring(void)
 | ||||
| +{
 | ||||
| +	return NULL;
 | ||||
| +}
 | ||||
|  #endif | ||||
| +extern struct key *get_system_keyring(void);
 | ||||
| 
 | ||||
| +extern struct key *get_system_keyring(void);
 | ||||
| +
 | ||||
|  #ifdef CONFIG_IMA_BLACKLIST_KEYRING | ||||
|  extern struct key *ima_blacklist_keyring; | ||||
| 
 | ||||
| diff --git a/init/Kconfig b/init/Kconfig
 | ||||
| index 461ad575a608..93646fd7b1c8 100644
 | ||||
| --- a/init/Kconfig
 | ||||
| @ -108,7 +127,7 @@ new file mode 100644 | ||||
| index 000000000000..fe4a6f2bf10a
 | ||||
| --- /dev/null
 | ||||
| +++ b/kernel/modsign_uefi.c
 | ||||
| @@ -0,0 +1,99 @@
 | ||||
| @@ -0,0 +1,101 @@
 | ||||
| +#include <linux/kernel.h>
 | ||||
| +#include <linux/sched.h>
 | ||||
| +#include <linux/cred.h>
 | ||||
| @ -160,6 +179,7 @@ index 000000000000..fe4a6f2bf10a | ||||
| +	unsigned long dbsize = 0, dbxsize = 0, moksize = 0;
 | ||||
| +	int rc = 0;
 | ||||
| +	struct key *keyring = NULL;
 | ||||
| +	struct key *blacklist = NULL;
 | ||||
| +
 | ||||
| +	/* Check if SB is enabled and just return if not */
 | ||||
| +	if (!efi_enabled(EFI_SECURE_BOOT))
 | ||||
| @ -194,12 +214,13 @@ index 000000000000..fe4a6f2bf10a | ||||
| +		kfree(mok);
 | ||||
| +	}
 | ||||
| +
 | ||||
| +	blacklist = get_blacklist_keyring();
 | ||||
| +	dbx = get_cert_list(L"dbx", &secure_var, &dbxsize);
 | ||||
| +	if (!dbx) {
 | ||||
| +		pr_info("MODSIGN: Couldn't get UEFI dbx list\n");
 | ||||
| +	} else {
 | ||||
| +		rc = parse_efi_signature_list(dbx, dbxsize,
 | ||||
| +			system_blacklist_keyring);
 | ||||
| +			blacklist);
 | ||||
| +		if (rc)
 | ||||
| +			pr_err("Couldn't parse dbx signatures: %d\n", rc);
 | ||||
| +		kfree(dbx);
 | ||||
| @ -210,4 +231,16 @@ index 000000000000..fe4a6f2bf10a | ||||
| +late_initcall(load_uefi_certs);
 | ||||
| -- 
 | ||||
| 2.9.3 | ||||
| diff --git a/certs/blacklist.c b/certs/blacklist.c
 | ||||
| index 3eddce0..bd9324c 100644
 | ||||
| --- a/certs/blacklist.c
 | ||||
| +++ b/certs/blacklist.c
 | ||||
| @@ -21,7 +21,7 @@
 | ||||
|  #include <keys/system_keyring.h> | ||||
|  #include "blacklist.h" | ||||
| 
 | ||||
| -static struct key *blacklist_keyring;
 | ||||
| +struct key *blacklist_keyring;
 | ||||
| 
 | ||||
|  /* | ||||
|   * The description must be a type prefix, a colon and then an even number of | ||||
|  | ||||
| @ -48,8 +48,8 @@ index fe4a6f2bf10a..a41da14b1ffd 100644 | ||||
| -	int rc = 0;
 | ||||
| +	int ignore_db, rc = 0;
 | ||||
|  	struct key *keyring = NULL; | ||||
|  	struct key *blacklist = NULL; | ||||
|   | ||||
|  	/* Check if SB is enabled and just return if not */ | ||||
| @@ -60,17 +77,22 @@ static int __init load_uefi_certs(void)
 | ||||
|  		return -EINVAL; | ||||
|  	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user