Skip to content

Commit

Permalink
selinux: Shuffle the sk_security_struct alloc and free routines
Browse files Browse the repository at this point in the history
The sk_alloc_security() and sk_free_security() functions were only being
called by the selinux_sk_alloc_security() and selinux_sk_free_security()
functions so we just move the guts of the alloc/free routines to the
callers and eliminate a layer of indirection.

Signed-off-by: Paul Moore <[email protected]>
Acked-by: Eric Paris <[email protected]>
Signed-off-by: James Morris <[email protected]>
  • Loading branch information
pcmoore authored and James Morris committed Aug 2, 2010
1 parent d4f2d97 commit 84914b7
Showing 1 changed file with 17 additions and 28 deletions.
45 changes: 17 additions & 28 deletions security/selinux/hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -279,32 +279,6 @@ static void superblock_free_security(struct super_block *sb)
kfree(sbsec);
}

static int sk_alloc_security(struct sock *sk, int family, gfp_t priority)
{
struct sk_security_struct *sksec;

sksec = kzalloc(sizeof(*sksec), priority);
if (!sksec)
return -ENOMEM;

sksec->peer_sid = SECINITSID_UNLABELED;
sksec->sid = SECINITSID_UNLABELED;
sk->sk_security = sksec;

selinux_netlbl_sk_security_reset(sksec);

return 0;
}

static void sk_free_security(struct sock *sk)
{
struct sk_security_struct *sksec = sk->sk_security;

sk->sk_security = NULL;
selinux_netlbl_sk_security_free(sksec);
kfree(sksec);
}

/* The security server must be initialized before
any labeling or access decisions can be provided. */
extern int ss_initialized;
Expand Down Expand Up @@ -4224,12 +4198,27 @@ static int selinux_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *

static int selinux_sk_alloc_security(struct sock *sk, int family, gfp_t priority)
{
return sk_alloc_security(sk, family, priority);
struct sk_security_struct *sksec;

sksec = kzalloc(sizeof(*sksec), priority);
if (!sksec)
return -ENOMEM;

sksec->peer_sid = SECINITSID_UNLABELED;
sksec->sid = SECINITSID_UNLABELED;
selinux_netlbl_sk_security_reset(sksec);
sk->sk_security = sksec;

return 0;
}

static void selinux_sk_free_security(struct sock *sk)
{
sk_free_security(sk);
struct sk_security_struct *sksec = sk->sk_security;

sk->sk_security = NULL;
selinux_netlbl_sk_security_free(sksec);
kfree(sksec);
}

static void selinux_sk_clone_security(const struct sock *sk, struct sock *newsk)
Expand Down

0 comments on commit 84914b7

Please sign in to comment.