Messages in this thread | | | Date | Wed, 25 Mar 2015 07:44:15 -0700 | From | Casey Schaufler <> | Subject | Re: [PATCH 1/1] Smack: Assign smack_known_web as default smk_in label for kernel thread's socket |
| |
On 1/22/2015 6:40 AM, Marcin Lis wrote: > This change fixes the bug associated with sockets owned by kernel threads. These > sockets, created usually by network devices' drivers tasks, received smk_in > label from the task that created them - the "floor" label in the most cases. The > result was that they were not able to receive data packets because of missing > smack rules. The main reason of the access deny is that the socket smk_in label > is placed as the object during smk check, kernel thread's capabilities are > omitted. > > Signed-off-by: Marcin Lis <m.lis@samsung.com>
Applied to git://git.gitorious.org/smack-next/kernel.git#smack-for-4.1
> --- > security/smack/smack_lsm.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c > index a688f7b..535a06a 100644 > --- a/security/smack/smack_lsm.c > +++ b/security/smack/smack_lsm.c > @@ -2452,7 +2452,20 @@ static int smack_inode_setsecurity(struct inode *inode, const char *name, > static int smack_socket_post_create(struct socket *sock, int family, > int type, int protocol, int kern) > { > - if (family != PF_INET || sock->sk == NULL) > + struct socket_smack *ssp; > + > + if (sock->sk == NULL) > + return 0; > + > + /* > + * Sockets created by kernel threads receive web label. > + */ > + if (unlikely(current->flags & PF_KTHREAD)) { > + ssp = sock->sk->sk_security; > + ssp->smk_in = &smack_known_web; > + } > + > + if (family != PF_INET) > return 0; > /* > * Set the outbound netlbl.
| |