Smack: fix smack_new_inode bogosities
Subsystems (3)
Casey Schaufler
maintainerPATCH 1/1 Smack: fix smack_new_inode bogosities
From: Casey Schaufler <[email protected]>
Subject: [PATCH] Smack: fix smack_new_inode bogosities
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
---
security/smack/smack.h | 1 - security/smack/smack_lsm.c | 8 ++------ security/smack/smackfs.c | 1 - 3 files changed, 2 insertions(+), 8 deletions(-)
security/smack/smack.h +0 -1
@@ -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 {
security/smack/smack_lsm.c +2 -6
@@ -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;
@@ -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,',' );
security/smack/smackfs.c +0 -1
@@ -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 ; }
Quoted 15 lines · Casey Schaufler
From: Casey Schaufler <[email protected]>
Subject: [PATCH] Smack: fixsmack_new_inodebogositiesIn January of 2012 Al Viro pointed out three bits of code that he titled "
new_inode_smackbogosities". 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 thesuperblock_smackstructure.
3.smk_fill_super()incorrectly and unnecessarily set the Smack label for the smackfs root inode. The assignment has been removed.
Quoted 3 lines
Targeted for
git://gitorious.org/smack-next/kernel.gitSigned-off-by Casey Schaufler <[email protected]>
Applied to git://gitorious.org/smack-next/kernel.git
Quoted 64 lines
---
security/smack/smack.h | 1 - security/smack/smack_lsm.c | 8 ++------ security/smack/smackfs.c | 1 - 3 files changed, 2 insertions(+), 8 deletions(-)security/smack/smack.h +0
-1@@ -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 {security/smack/smack_lsm.c +2
-6@@ -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;@@ -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,',' );security/smack/smackfs.c +0
-1@@ -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 ; }