aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2012-02-16 12:49:54 -0500
committerH. Peter Anvin <hpa@zytor.com>2012-02-19 13:30:57 -0500
commit1fd36adcd98c14d2fd97f545293c488775cb2823 (patch)
treec13ab1934a15aebe0d81601d910ce5a3c6fa2c6f /security
parent1dce27c5aa6770e9d195f2bb7db1db3d4dde5591 (diff)
Replace the fd_sets in struct fdtable with an array of unsigned longs
Replace the fd_sets in struct fdtable with an array of unsigned longs and then use the standard non-atomic bit operations rather than the FD_* macros. This: (1) Removes the abuses of struct fd_set: (a) Since we don't want to allocate a full fd_set the vast majority of the time, we actually, in effect, just allocate a just-big-enough array of unsigned longs and cast it to an fd_set type - so why bother with the fd_set at all? (b) Some places outside of the core fdtable handling code (such as SELinux) want to look inside the array of unsigned longs hidden inside the fd_set struct for more efficient iteration over the entire set. (2) Eliminates the use of FD_*() macros in the kernel completely. (3) Permits the __FD_*() macros to be deleted entirely where not exposed to userspace. Signed-off-by: David Howells <dhowells@redhat.com> Link: http://lkml.kernel.org/r/20120216174954.23314.48147.stgit@warthog.procyon.org.uk Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'security')
-rw-r--r--security/selinux/hooks.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 6a3683e28426..421c990a20b2 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2145,7 +2145,7 @@ static inline void flush_unauthorized_files(const struct cred *cred,
2145 fdt = files_fdtable(files); 2145 fdt = files_fdtable(files);
2146 if (i >= fdt->max_fds) 2146 if (i >= fdt->max_fds)
2147 break; 2147 break;
2148 set = fdt->open_fds->fds_bits[j]; 2148 set = fdt->open_fds[j];
2149 if (!set) 2149 if (!set)
2150 continue; 2150 continue;
2151 spin_unlock(&files->file_lock); 2151 spin_unlock(&files->file_lock);