]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
apparmor: fix sparse warnings
authorJohn Johansen <john.johansen@canonical.com>
Thu, 21 Feb 2013 21:25:44 +0000 (13:25 -0800)
committerJohn Johansen <john.johansen@canonical.com>
Sun, 28 Apr 2013 07:39:35 +0000 (00:39 -0700)
Fix a couple of warning reported by sparse

Signed-off-by: John Johansen <john.johansen@canonical.com>
security/apparmor/include/file.h
security/apparmor/lsm.c

index 967b2deda376a2b3ff63821301b26ba600260fc6..2c922b86bd44f5ba7e4b519df43c663b21c34ad3 100644 (file)
@@ -186,11 +186,6 @@ static inline void aa_free_file_rules(struct aa_file_rules *rules)
        aa_free_domain_entries(&rules->trans);
 }
 
-#define ACC_FMODE(x) (("\000\004\002\006"[(x)&O_ACCMODE]) | (((x) << 1) & 0x40))
-
-/* from namei.c */
-#define MAP_OPEN_FLAGS(x) ((((x) + 1) & O_ACCMODE) ? (x) + 1 : (x))
-
 /**
  * aa_map_file_perms - map file flags to AppArmor permissions
  * @file: open file to map flags to AppArmor permissions
@@ -199,8 +194,13 @@ static inline void aa_free_file_rules(struct aa_file_rules *rules)
  */
 static inline u32 aa_map_file_to_perms(struct file *file)
 {
-       int flags = MAP_OPEN_FLAGS(file->f_flags);
-       u32 perms = ACC_FMODE(file->f_mode);
+       int flags = file->f_flags;
+       u32 perms = 0;
+
+       if (file->f_mode & FMODE_WRITE)
+               perms |= MAY_WRITE;
+       if (file->f_mode & FMODE_READ)
+               perms |= MAY_READ;
 
        if ((flags & O_APPEND) && (perms & MAY_WRITE))
                perms = (perms & ~MAY_WRITE) | MAY_APPEND;
index ed7e3aadba3a35764283596371fafe58c7ae1c6b..10843aa5a368301c6ed78855e64ae1054d7a0d60 100644 (file)
@@ -909,8 +909,11 @@ static int __init apparmor_init(void)
 
        error = register_security(&apparmor_ops);
        if (error) {
+               struct cred *cred = (struct cred *)current->real_cred;
+               aa_free_task_context(cred->security);
+               cred->security = NULL;
                AA_ERROR("Unable to register AppArmor\n");
-               goto set_init_cxt_out;
+               goto register_security_out;
        }
 
        /* Report that AppArmor successfully initialized */
@@ -924,9 +927,6 @@ static int __init apparmor_init(void)
 
        return error;
 
-set_init_cxt_out:
-       aa_free_task_context(current->real_cred->security);
-
 register_security_out:
        aa_free_root_ns();