Skip to content

Commit

Permalink
Smack: fix smack_new_inode bogosities
Browse files Browse the repository at this point in the history
In January of 2012 Al Viro pointed out three bits of code that
he titled "new_inode_smack bogosities". This patch repairs these
errors.

1. smack_sb_kern_mount() included a NULL check that is impossible.
   The check and NULL case are removed.
2. smack_kb_kern_mount() included pointless locking. The locking is
   removed. Since this is the only place that lock was used the lock
   is removed from the superblock_smack structure.
3. smk_fill_super() incorrectly and unnecessarily set the Smack label
   for the smackfs root inode. The assignment has been removed.

Targeted for git://gitorious.org/smack-next/kernel.git

Signed-off-by: Casey Schaufler <[email protected]>
  • Loading branch information
cschaufler committed Jul 13, 2012
1 parent 417c6c8 commit eb982cb
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 8 deletions.
1 change: 0 additions & 1 deletion security/smack/smack.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ struct superblock_smack {
char *smk_hat;
char *smk_default;
int smk_initialized;
spinlock_t smk_sblock; /* for initialization */
};

struct socket_smack {
Expand Down
8 changes: 2 additions & 6 deletions security/smack/smack_lsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,6 @@ static int smack_sb_alloc_security(struct super_block *sb)
sbsp->smk_floor = smack_known_floor.smk_known;
sbsp->smk_hat = smack_known_hat.smk_known;
sbsp->smk_initialized = 0;
spin_lock_init(&sbsp->smk_sblock);

sb->s_security = sbsp;

Expand Down Expand Up @@ -332,13 +331,10 @@ static int smack_sb_kern_mount(struct super_block *sb, int flags, void *data)
char *commap;
char *nsp;

spin_lock(&sp->smk_sblock);
if (sp->smk_initialized != 0) {
spin_unlock(&sp->smk_sblock);
if (sp->smk_initialized != 0)
return 0;
}

sp->smk_initialized = 1;
spin_unlock(&sp->smk_sblock);

for (op = data; op != NULL; op = commap) {
commap = strchr(op, ',');
Expand Down
1 change: 0 additions & 1 deletion security/smack/smackfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2051,7 +2051,6 @@ static int smk_fill_super(struct super_block *sb, void *data, int silent)
}

root_inode = sb->s_root->d_inode;
root_inode->i_security = new_inode_smack(smack_known_floor.smk_known);

return 0;
}
Expand Down

0 comments on commit eb982cb

Please sign in to comment.