Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
cdac74dd
Commit
cdac74dd
authored
Jun 21, 2017
by
James Morris
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'smack-for-4.13' of
git://github.com/cschaufler/smack-next
into next
parents
e4b08527
f28e783f
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
18 deletions
+31
-18
security/smack/smack.h
security/smack/smack.h
+1
-1
security/smack/smack_access.c
security/smack/smack_access.c
+11
-8
security/smack/smack_lsm.c
security/smack/smack_lsm.c
+1
-1
security/smack/smack_netfilter.c
security/smack/smack_netfilter.c
+18
-8
No files found.
security/smack/smack.h
View file @
cdac74dd
...
@@ -320,7 +320,7 @@ int smk_netlbl_mls(int, char *, struct netlbl_lsm_secattr *, int);
...
@@ -320,7 +320,7 @@ int smk_netlbl_mls(int, char *, struct netlbl_lsm_secattr *, int);
struct
smack_known
*
smk_import_entry
(
const
char
*
,
int
);
struct
smack_known
*
smk_import_entry
(
const
char
*
,
int
);
void
smk_insert_entry
(
struct
smack_known
*
skp
);
void
smk_insert_entry
(
struct
smack_known
*
skp
);
struct
smack_known
*
smk_find_entry
(
const
char
*
);
struct
smack_known
*
smk_find_entry
(
const
char
*
);
int
smack_privileged
(
int
cap
);
bool
smack_privileged
(
int
cap
);
void
smk_destroy_label_list
(
struct
list_head
*
list
);
void
smk_destroy_label_list
(
struct
list_head
*
list
);
/*
/*
...
...
security/smack/smack_access.c
View file @
cdac74dd
...
@@ -627,35 +627,38 @@ DEFINE_MUTEX(smack_onlycap_lock);
...
@@ -627,35 +627,38 @@ DEFINE_MUTEX(smack_onlycap_lock);
* Is the task privileged and allowed to be privileged
* Is the task privileged and allowed to be privileged
* by the onlycap rule.
* by the onlycap rule.
*
*
* Returns
1 if the task is allowed to be privileged, 0
if it's not.
* Returns
true if the task is allowed to be privileged, false
if it's not.
*/
*/
int
smack_privileged
(
int
cap
)
bool
smack_privileged
(
int
cap
)
{
{
struct
smack_known
*
skp
=
smk_of_current
();
struct
smack_known
*
skp
=
smk_of_current
();
struct
smack_known_list_elem
*
sklep
;
struct
smack_known_list_elem
*
sklep
;
int
rc
;
/*
/*
* All kernel tasks are privileged
* All kernel tasks are privileged
*/
*/
if
(
unlikely
(
current
->
flags
&
PF_KTHREAD
))
if
(
unlikely
(
current
->
flags
&
PF_KTHREAD
))
return
1
;
return
true
;
if
(
!
capable
(
cap
))
rc
=
cap_capable
(
current_cred
(),
&
init_user_ns
,
cap
,
return
0
;
SECURITY_CAP_AUDIT
);
if
(
rc
)
return
false
;
rcu_read_lock
();
rcu_read_lock
();
if
(
list_empty
(
&
smack_onlycap_list
))
{
if
(
list_empty
(
&
smack_onlycap_list
))
{
rcu_read_unlock
();
rcu_read_unlock
();
return
1
;
return
true
;
}
}
list_for_each_entry_rcu
(
sklep
,
&
smack_onlycap_list
,
list
)
{
list_for_each_entry_rcu
(
sklep
,
&
smack_onlycap_list
,
list
)
{
if
(
sklep
->
smk_label
==
skp
)
{
if
(
sklep
->
smk_label
==
skp
)
{
rcu_read_unlock
();
rcu_read_unlock
();
return
1
;
return
true
;
}
}
}
}
rcu_read_unlock
();
rcu_read_unlock
();
return
0
;
return
false
;
}
}
security/smack/smack_lsm.c
View file @
cdac74dd
...
@@ -1915,7 +1915,7 @@ static int smack_file_receive(struct file *file)
...
@@ -1915,7 +1915,7 @@ static int smack_file_receive(struct file *file)
smk_ad_init
(
&
ad
,
__func__
,
LSM_AUDIT_DATA_PATH
);
smk_ad_init
(
&
ad
,
__func__
,
LSM_AUDIT_DATA_PATH
);
smk_ad_setfield_u_fs_path
(
&
ad
,
file
->
f_path
);
smk_ad_setfield_u_fs_path
(
&
ad
,
file
->
f_path
);
if
(
S_ISSOCK
(
inode
->
i_mode
)
)
{
if
(
inode
->
i_sb
->
s_magic
==
SOCKFS_MAGIC
)
{
sock
=
SOCKET_I
(
inode
);
sock
=
SOCKET_I
(
inode
);
ssp
=
sock
->
sk
->
sk_security
;
ssp
=
sock
->
sk
->
sk_security
;
tsp
=
current_security
();
tsp
=
current_security
();
...
...
security/smack/smack_netfilter.c
View file @
cdac74dd
...
@@ -18,6 +18,7 @@
...
@@ -18,6 +18,7 @@
#include <linux/netfilter_ipv6.h>
#include <linux/netfilter_ipv6.h>
#include <linux/netdevice.h>
#include <linux/netdevice.h>
#include <net/inet_sock.h>
#include <net/inet_sock.h>
#include <net/net_namespace.h>
#include "smack.h"
#include "smack.h"
#if IS_ENABLED(CONFIG_IPV6)
#if IS_ENABLED(CONFIG_IPV6)
...
@@ -74,20 +75,29 @@ static struct nf_hook_ops smack_nf_ops[] = {
...
@@ -74,20 +75,29 @@ static struct nf_hook_ops smack_nf_ops[] = {
#endif
/* IPV6 */
#endif
/* IPV6 */
};
};
static
int
__init
smack_nf_ip_init
(
void
)
static
int
__net_init
smack_nf_register
(
struct
net
*
net
)
{
return
nf_register_net_hooks
(
net
,
smack_nf_ops
,
ARRAY_SIZE
(
smack_nf_ops
));
}
static
void
__net_exit
smack_nf_unregister
(
struct
net
*
net
)
{
{
int
err
;
nf_unregister_net_hooks
(
net
,
smack_nf_ops
,
ARRAY_SIZE
(
smack_nf_ops
));
}
static
struct
pernet_operations
smack_net_ops
=
{
.
init
=
smack_nf_register
,
.
exit
=
smack_nf_unregister
,
};
static
int
__init
smack_nf_ip_init
(
void
)
{
if
(
smack_enabled
==
0
)
if
(
smack_enabled
==
0
)
return
0
;
return
0
;
printk
(
KERN_DEBUG
"Smack: Registering netfilter hooks
\n
"
);
printk
(
KERN_DEBUG
"Smack: Registering netfilter hooks
\n
"
);
return
register_pernet_subsys
(
&
smack_net_ops
);
err
=
nf_register_hooks
(
smack_nf_ops
,
ARRAY_SIZE
(
smack_nf_ops
));
if
(
err
)
pr_info
(
"Smack: nf_register_hooks: error %d
\n
"
,
err
);
return
0
;
}
}
__initcall
(
smack_nf_ip_init
);
__initcall
(
smack_nf_ip_init
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment