Skip to content

Commit

Permalink
Merge branch 'smack-for-3.19' of git://git.gitorious.org/smack-next/k…
Browse files Browse the repository at this point in the history
…ernel into next
  • Loading branch information
James Morris committed Nov 26, 2014
2 parents a6aacbd + 5c1b662 commit ac14ae2
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
17 changes: 8 additions & 9 deletions security/smack/smack_access.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ int smk_access(struct smack_known *subject, struct smack_known *object,
* Tasks cannot be assigned the internet label.
* An internet subject can access any object.
*/
if (object == &smack_known_web ||
subject == &smack_known_web)
if (object == &smack_known_web || subject == &smack_known_web)
goto out_audit;
/*
* A star object can be accessed by any subject.
Expand All @@ -157,10 +156,11 @@ int smk_access(struct smack_known *subject, struct smack_known *object,
if (subject->smk_known == object->smk_known)
goto out_audit;
/*
* A hat subject can read any object.
* A floor object can be read by any subject.
* A hat subject can read or lock any object.
* A floor object can be read or locked by any subject.
*/
if ((request & MAY_ANYREAD) == request) {
if ((request & MAY_ANYREAD) == request ||
(request & MAY_LOCK) == request) {
if (object == &smack_known_floor)
goto out_audit;
if (subject == &smack_known_hat)
Expand Down Expand Up @@ -452,10 +452,9 @@ char *smk_parse_smack(const char *string, int len)
return NULL;

smack = kzalloc(i + 1, GFP_KERNEL);
if (smack != NULL) {
strncpy(smack, string, i + 1);
smack[i] = '\0';
}
if (smack != NULL)
strncpy(smack, string, i);

return smack;
}

Expand Down
13 changes: 10 additions & 3 deletions security/smack/smack_lsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
#define SMK_SENDING 2

LIST_HEAD(smk_ipv6_port_list);
static struct kmem_cache *smack_inode_cache;

#ifdef CONFIG_SECURITY_SMACK_BRINGUP
static void smk_bu_mode(int mode, char *s)
Expand Down Expand Up @@ -240,7 +241,7 @@ struct inode_smack *new_inode_smack(struct smack_known *skp)
{
struct inode_smack *isp;

isp = kzalloc(sizeof(struct inode_smack), GFP_NOFS);
isp = kmem_cache_zalloc(smack_inode_cache, GFP_NOFS);
if (isp == NULL)
return NULL;

Expand Down Expand Up @@ -767,7 +768,7 @@ static int smack_inode_alloc_security(struct inode *inode)
*/
static void smack_inode_free_security(struct inode *inode)
{
kfree(inode->i_security);
kmem_cache_free(smack_inode_cache, inode->i_security);
inode->i_security = NULL;
}

Expand Down Expand Up @@ -4265,10 +4266,16 @@ static __init int smack_init(void)
if (!security_module_enable(&smack_ops))
return 0;

smack_inode_cache = KMEM_CACHE(inode_smack, 0);
if (!smack_inode_cache)
return -ENOMEM;

tsp = new_task_smack(&smack_known_floor, &smack_known_floor,
GFP_KERNEL);
if (tsp == NULL)
if (tsp == NULL) {
kmem_cache_destroy(smack_inode_cache);
return -ENOMEM;
}

printk(KERN_INFO "Smack: Initializing.\n");

Expand Down

0 comments on commit ac14ae2

Please sign in to comment.