diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-25 18:45:29 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-25 18:45:29 -0500 |
commit | f6d43b93bd07cf3e430f426ee8f1330cb8d5d8c9 (patch) | |
tree | 284d1fc1e6954b747eb3c68dcb77a704e9a6b579 | |
parent | c69d0a15d240a854f6d620ac7d5238a41883a920 (diff) | |
parent | 446d64e3e1154806092ac27de198dff1225797d9 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
Pull security subsystem fixes from James Morris:
"From Mimi:
Both of these patches are bug fixes for patches, which were
upstreamed in this open window. The first patch addresses a merge
issue. The second patch addresses a CONFIG_BLOCK dependency."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
block: fix part_pack_uuid() build error
ima: "remove enforce checking duplication" merge fix
-rw-r--r-- | include/linux/genhd.h | 10 | ||||
-rw-r--r-- | security/integrity/ima/ima_main.c | 3 | ||||
-rw-r--r-- | security/integrity/ima/ima_policy.c | 11 |
3 files changed, 18 insertions, 6 deletions
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 79b8bba19363..9f3c275e053e 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -231,6 +231,12 @@ static inline void part_pack_uuid(const u8 *uuid_str, u8 *to) | |||
231 | } | 231 | } |
232 | } | 232 | } |
233 | 233 | ||
234 | static inline int blk_part_pack_uuid(const u8 *uuid_str, u8 *to) | ||
235 | { | ||
236 | part_pack_uuid(uuid_str, to); | ||
237 | return 0; | ||
238 | } | ||
239 | |||
234 | static inline int disk_max_parts(struct gendisk *disk) | 240 | static inline int disk_max_parts(struct gendisk *disk) |
235 | { | 241 | { |
236 | if (disk->flags & GENHD_FL_EXT_DEVT) | 242 | if (disk->flags & GENHD_FL_EXT_DEVT) |
@@ -718,6 +724,10 @@ static inline dev_t blk_lookup_devt(const char *name, int partno) | |||
718 | return devt; | 724 | return devt; |
719 | } | 725 | } |
720 | 726 | ||
727 | static inline int blk_part_pack_uuid(const u8 *uuid_str, u8 *to) | ||
728 | { | ||
729 | return -EINVAL; | ||
730 | } | ||
721 | #endif /* CONFIG_BLOCK */ | 731 | #endif /* CONFIG_BLOCK */ |
722 | 732 | ||
723 | #endif /* _LINUX_GENHD_H */ | 733 | #endif /* _LINUX_GENHD_H */ |
diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c index 5127afcc4b89..5b14a0946d6e 100644 --- a/security/integrity/ima/ima_main.c +++ b/security/integrity/ima/ima_main.c | |||
@@ -284,7 +284,8 @@ int ima_module_check(struct file *file) | |||
284 | { | 284 | { |
285 | if (!file) { | 285 | if (!file) { |
286 | #ifndef CONFIG_MODULE_SIG_FORCE | 286 | #ifndef CONFIG_MODULE_SIG_FORCE |
287 | if (ima_appraise & IMA_APPRAISE_MODULES) | 287 | if ((ima_appraise & IMA_APPRAISE_MODULES) && |
288 | (ima_appraise & IMA_APPRAISE_ENFORCE)) | ||
288 | return -EACCES; /* INTEGRITY_UNKNOWN */ | 289 | return -EACCES; /* INTEGRITY_UNKNOWN */ |
289 | #endif | 290 | #endif |
290 | return 0; /* We rely on module signature checking */ | 291 | return 0; /* We rely on module signature checking */ |
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c index b27535a13a79..399433ad614e 100644 --- a/security/integrity/ima/ima_policy.c +++ b/security/integrity/ima/ima_policy.c | |||
@@ -176,7 +176,7 @@ static bool ima_match_rules(struct ima_rule_entry *rule, | |||
176 | && rule->fsmagic != inode->i_sb->s_magic) | 176 | && rule->fsmagic != inode->i_sb->s_magic) |
177 | return false; | 177 | return false; |
178 | if ((rule->flags & IMA_FSUUID) && | 178 | if ((rule->flags & IMA_FSUUID) && |
179 | memcmp(rule->fsuuid, inode->i_sb->s_uuid, sizeof(rule->fsuuid))) | 179 | memcmp(rule->fsuuid, inode->i_sb->s_uuid, sizeof(rule->fsuuid))) |
180 | return false; | 180 | return false; |
181 | if ((rule->flags & IMA_UID) && !uid_eq(rule->uid, cred->uid)) | 181 | if ((rule->flags & IMA_UID) && !uid_eq(rule->uid, cred->uid)) |
182 | return false; | 182 | return false; |
@@ -530,14 +530,15 @@ static int ima_parse_rule(char *rule, struct ima_rule_entry *entry) | |||
530 | ima_log_string(ab, "fsuuid", args[0].from); | 530 | ima_log_string(ab, "fsuuid", args[0].from); |
531 | 531 | ||
532 | if (memchr_inv(entry->fsuuid, 0x00, | 532 | if (memchr_inv(entry->fsuuid, 0x00, |
533 | sizeof(entry->fsuuid))) { | 533 | sizeof(entry->fsuuid))) { |
534 | result = -EINVAL; | 534 | result = -EINVAL; |
535 | break; | 535 | break; |
536 | } | 536 | } |
537 | 537 | ||
538 | part_pack_uuid(args[0].from, entry->fsuuid); | 538 | result = blk_part_pack_uuid(args[0].from, |
539 | entry->flags |= IMA_FSUUID; | 539 | entry->fsuuid); |
540 | result = 0; | 540 | if (!result) |
541 | entry->flags |= IMA_FSUUID; | ||
541 | break; | 542 | break; |
542 | case Opt_uid: | 543 | case Opt_uid: |
543 | ima_log_string(ab, "uid", args[0].from); | 544 | ima_log_string(ab, "uid", args[0].from); |