From 5c13c6f3bbc6eaf9d745d3b0b0e7d6d255f31596 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 19 Jun 2011 01:50:08 -0400 Subject: [PATCH] --- yaml --- r: 257306 b: refs/heads/master c: 4cf27141cbe0239f48ec6f0b37bad347d51d1785 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/namei.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index addca292a660..897aa9e758d9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 43e15cdbefea4ce6d68113de98d4f61c0cf45687 +refs/heads/master: 4cf27141cbe0239f48ec6f0b37bad347d51d1785 diff --git a/trunk/fs/namei.c b/trunk/fs/namei.c index 5ba42c453e31..7c8a93042e63 100644 --- a/trunk/fs/namei.c +++ b/trunk/fs/namei.c @@ -584,19 +584,19 @@ static inline int exec_permission(struct inode *inode, unsigned int flags) if (inode->i_op->permission) { ret = inode->i_op->permission(inode, MAY_EXEC, flags); + if (likely(!ret)) + goto ok; } else { ret = acl_permission_check(inode, MAY_EXEC, flags, inode->i_op->check_acl); + if (likely(!ret)) + goto ok; + if (ret != -EACCES) + return ret; + if (ns_capable(ns, CAP_DAC_OVERRIDE) || + ns_capable(ns, CAP_DAC_READ_SEARCH)) + goto ok; } - if (likely(!ret)) - goto ok; - if (ret == -ECHILD) - return ret; - - if (ns_capable(ns, CAP_DAC_OVERRIDE) || - ns_capable(ns, CAP_DAC_READ_SEARCH)) - goto ok; - return ret; ok: return security_inode_exec_permission(inode, flags);