mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'master' into next
Conflicts: fs/namei.c Manually merged per: diff --cc fs/namei.c index 734f2b5,bbc15c2..0000000 --- a/fs/namei.c +++ b/fs/namei.c @@@ -860,9 -848,8 +849,10 @@@ static int __link_path_walk(const char nd->flags |= LOOKUP_CONTINUE; err = exec_permission_lite(inode); if (err == -EAGAIN) - err = vfs_permission(nd, MAY_EXEC); + err = inode_permission(nd->path.dentry->d_inode, + MAY_EXEC); + if (!err) + err = ima_path_check(&nd->path, MAY_EXEC); if (err) break; @@@ -1525,14 -1506,9 +1509,14 @@@ int may_open(struct path *path, int acc flag &= ~O_TRUNC; } - error = vfs_permission(nd, acc_mode); + error = inode_permission(inode, acc_mode); if (error) return error; + - error = ima_path_check(&nd->path, ++ error = ima_path_check(path, + acc_mode & (MAY_READ | MAY_WRITE | MAY_EXEC)); + if (error) + return error; /* * An append-only file must be opened in append mode for writing. */ Signed-off-by: James Morris <[email protected]>
This commit is contained in:
commit
cb5629b10d
6302 changed files with 762687 additions and 123195 deletions
|
|
@ -847,8 +847,6 @@ static struct inode *sel_make_inode(struct super_block *sb, int mode)
|
|||
|
||||
if (ret) {
|
||||
ret->i_mode = mode;
|
||||
ret->i_uid = ret->i_gid = 0;
|
||||
ret->i_blocks = 0;
|
||||
ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME;
|
||||
}
|
||||
return ret;
|
||||
|
|
@ -1211,7 +1209,7 @@ static struct avc_cache_stats *sel_avc_get_stat_idx(loff_t *idx)
|
|||
{
|
||||
int cpu;
|
||||
|
||||
for (cpu = *idx; cpu < NR_CPUS; ++cpu) {
|
||||
for (cpu = *idx; cpu < nr_cpu_ids; ++cpu) {
|
||||
if (!cpu_possible(cpu))
|
||||
continue;
|
||||
*idx = cpu + 1;
|
||||
|
|
|
|||
|
|
@ -2602,7 +2602,7 @@ int selinux_audit_rule_init(u32 field, u32 op, char *rulestr, void **vrule)
|
|||
case AUDIT_OBJ_ROLE:
|
||||
case AUDIT_OBJ_TYPE:
|
||||
/* only 'equals' and 'not equals' fit user, role, and type */
|
||||
if (op != AUDIT_EQUAL && op != AUDIT_NOT_EQUAL)
|
||||
if (op != Audit_equal && op != Audit_not_equal)
|
||||
return -EINVAL;
|
||||
break;
|
||||
case AUDIT_SUBJ_SEN:
|
||||
|
|
@ -2736,10 +2736,10 @@ int selinux_audit_rule_match(u32 sid, u32 field, u32 op, void *vrule,
|
|||
case AUDIT_SUBJ_USER:
|
||||
case AUDIT_OBJ_USER:
|
||||
switch (op) {
|
||||
case AUDIT_EQUAL:
|
||||
case Audit_equal:
|
||||
match = (ctxt->user == rule->au_ctxt.user);
|
||||
break;
|
||||
case AUDIT_NOT_EQUAL:
|
||||
case Audit_not_equal:
|
||||
match = (ctxt->user != rule->au_ctxt.user);
|
||||
break;
|
||||
}
|
||||
|
|
@ -2747,10 +2747,10 @@ int selinux_audit_rule_match(u32 sid, u32 field, u32 op, void *vrule,
|
|||
case AUDIT_SUBJ_ROLE:
|
||||
case AUDIT_OBJ_ROLE:
|
||||
switch (op) {
|
||||
case AUDIT_EQUAL:
|
||||
case Audit_equal:
|
||||
match = (ctxt->role == rule->au_ctxt.role);
|
||||
break;
|
||||
case AUDIT_NOT_EQUAL:
|
||||
case Audit_not_equal:
|
||||
match = (ctxt->role != rule->au_ctxt.role);
|
||||
break;
|
||||
}
|
||||
|
|
@ -2758,10 +2758,10 @@ int selinux_audit_rule_match(u32 sid, u32 field, u32 op, void *vrule,
|
|||
case AUDIT_SUBJ_TYPE:
|
||||
case AUDIT_OBJ_TYPE:
|
||||
switch (op) {
|
||||
case AUDIT_EQUAL:
|
||||
case Audit_equal:
|
||||
match = (ctxt->type == rule->au_ctxt.type);
|
||||
break;
|
||||
case AUDIT_NOT_EQUAL:
|
||||
case Audit_not_equal:
|
||||
match = (ctxt->type != rule->au_ctxt.type);
|
||||
break;
|
||||
}
|
||||
|
|
@ -2774,31 +2774,31 @@ int selinux_audit_rule_match(u32 sid, u32 field, u32 op, void *vrule,
|
|||
field == AUDIT_OBJ_LEV_LOW) ?
|
||||
&ctxt->range.level[0] : &ctxt->range.level[1]);
|
||||
switch (op) {
|
||||
case AUDIT_EQUAL:
|
||||
case Audit_equal:
|
||||
match = mls_level_eq(&rule->au_ctxt.range.level[0],
|
||||
level);
|
||||
break;
|
||||
case AUDIT_NOT_EQUAL:
|
||||
case Audit_not_equal:
|
||||
match = !mls_level_eq(&rule->au_ctxt.range.level[0],
|
||||
level);
|
||||
break;
|
||||
case AUDIT_LESS_THAN:
|
||||
case Audit_lt:
|
||||
match = (mls_level_dom(&rule->au_ctxt.range.level[0],
|
||||
level) &&
|
||||
!mls_level_eq(&rule->au_ctxt.range.level[0],
|
||||
level));
|
||||
break;
|
||||
case AUDIT_LESS_THAN_OR_EQUAL:
|
||||
case Audit_le:
|
||||
match = mls_level_dom(&rule->au_ctxt.range.level[0],
|
||||
level);
|
||||
break;
|
||||
case AUDIT_GREATER_THAN:
|
||||
case Audit_gt:
|
||||
match = (mls_level_dom(level,
|
||||
&rule->au_ctxt.range.level[0]) &&
|
||||
!mls_level_eq(level,
|
||||
&rule->au_ctxt.range.level[0]));
|
||||
break;
|
||||
case AUDIT_GREATER_THAN_OR_EQUAL:
|
||||
case Audit_ge:
|
||||
match = mls_level_dom(level,
|
||||
&rule->au_ctxt.range.level[0]);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue