From: David Howells <dhowells@redhat.com>
To: torvalds@osdl.org, akpm@osdl.org, steved@redhat.com,
trond.myklebust@fys.uio.no
Cc: linux-fsdevel@vger.kernel.org, linux-cachefs@redhat.com,
nfsv4@linux-nfs.org, linux-kernel@vger.kernel.org,
selinux@tycho.nsa.gov
Subject: [PATCH 11/16] CacheFiles: Permit an inode's security ID to be obtained [try #3]
Date: Fri, 10 Aug 2007 17:05:53 +0100 [thread overview]
Message-ID: <20070810160553.24698.5628.stgit@warthog.cambridge.redhat.com> (raw)
In-Reply-To: <20070810160455.24698.30983.stgit@warthog.cambridge.redhat.com>
Permit an inode's security ID to be obtained by the CacheFiles module. This is
then used as the SID with which files and directories will be created in the
cache.
Signed-Off-By: David Howells <dhowells@redhat.com>
---
include/linux/security.h | 19 +++++++++++++++++++
security/dummy.c | 7 +++++++
security/selinux/hooks.c | 9 +++++++++
3 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/include/linux/security.h b/include/linux/security.h
index 194ef49..a54958a 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -414,6 +414,11 @@ struct request_sock;
* the size of the buffer required.
* Returns number of bytes used/required on success.
*
+ * @inode_get_secid:
+ * Retrieve the security ID from an inode.
+ * @inode refers to the inode to get the security ID from.
+ * @secid points the location in which to return the security ID.
+ *
* Security hooks for file operations
*
* @file_permission:
@@ -1256,6 +1261,7 @@ struct security_operations {
int (*inode_getsecurity)(const struct inode *inode, const char *name, void *buffer, size_t size, int err);
int (*inode_setsecurity)(struct inode *inode, const char *name, const void *value, size_t size, int flags);
int (*inode_listsecurity)(struct inode *inode, char *buffer, size_t buffer_size);
+ int (*inode_get_secid)(struct inode *inode, u32 *secid);
int (*file_permission) (struct file * file, int mask);
int (*file_alloc_security) (struct file * file);
@@ -1818,6 +1824,13 @@ static inline int security_inode_listsecurity(struct inode *inode, char *buffer,
return security_ops->inode_listsecurity(inode, buffer, buffer_size);
}
+static inline int security_inode_get_secid(struct inode *inode, u32 *secid)
+{
+ if (unlikely(IS_PRIVATE(inode)))
+ return 0;
+ return security_ops->inode_get_secid(inode, secid);
+}
+
static inline int security_file_permission (struct file *file, int mask)
{
return security_ops->file_permission (file, mask);
@@ -2518,6 +2531,12 @@ static inline int security_inode_listsecurity(struct inode *inode, char *buffer,
return 0;
}
+static inline int security_inode_get_secid(struct inode *inode, u32 *secid)
+{
+ *secid = 0;
+ return 0;
+}
+
static inline int security_file_permission (struct file *file, int mask)
{
return 0;
diff --git a/security/dummy.c b/security/dummy.c
index 1a0be85..6be18fe 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -392,6 +392,12 @@ static int dummy_inode_listsecurity(struct inode *inode, char *buffer, size_t bu
return 0;
}
+static int dummy_inode_get_secid(struct inode *inode, u32 *secid)
+{
+ *secid = 0;
+ return 0;
+}
+
static const char *dummy_inode_xattr_getsuffix(void)
{
return NULL;
@@ -1046,6 +1052,7 @@ void security_fixup_ops (struct security_operations *ops)
set_to_dummy_if_null(ops, inode_getsecurity);
set_to_dummy_if_null(ops, inode_setsecurity);
set_to_dummy_if_null(ops, inode_listsecurity);
+ set_to_dummy_if_null(ops, inode_get_secid);
set_to_dummy_if_null(ops, file_permission);
set_to_dummy_if_null(ops, file_alloc_security);
set_to_dummy_if_null(ops, file_free_security);
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 2c64ec8..34646f8 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2464,6 +2464,14 @@ static int selinux_inode_listsecurity(struct inode *inode, char *buffer, size_t
return len;
}
+static int selinux_inode_get_secid(struct inode *inode, u32 *secid)
+{
+ struct inode_security_struct *isec = inode->i_security;
+
+ *secid = isec->sid;
+ return 0;
+}
+
/* file security operations */
static int selinux_file_permission(struct file *file, int mask)
@@ -4826,6 +4834,7 @@ static struct security_operations selinux_ops = {
.inode_getsecurity = selinux_inode_getsecurity,
.inode_setsecurity = selinux_inode_setsecurity,
.inode_listsecurity = selinux_inode_listsecurity,
+ .inode_get_secid = selinux_inode_get_secid,
.file_permission = selinux_file_permission,
.file_alloc_security = selinux_file_alloc_security,
next prev parent reply other threads:[~2007-08-10 16:05 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-10 16:04 [PATCH 00/16] Permit filesystem local caching [try #3] David Howells
2007-08-10 16:05 ` [PATCH 01/16] FS-Cache: Release page->private after failed readahead " David Howells
2007-08-10 16:05 ` [PATCH 02/16] FS-Cache: Recruit a couple of page flags for cache management " David Howells
2007-08-10 16:05 ` [PATCH 03/16] FS-Cache: Provide an add_wait_queue_tail() function " David Howells
2007-08-10 16:05 ` [PATCH 04/16] FS-Cache: Generic filesystem caching facility " David Howells
2007-08-10 16:05 ` [PATCH 05/16] CacheFiles: Add missing copy_page export for ia64 " David Howells
2007-08-10 16:05 ` [PATCH 06/16] CacheFiles: Add a hook to write a single page of data to an inode " David Howells
2007-08-10 16:05 ` [PATCH 07/16] CacheFiles: Permit the page lock state to be monitored " David Howells
2007-08-10 16:05 ` [PATCH 08/16] CacheFiles: Export things for CacheFiles " David Howells
2007-08-10 16:05 ` [PATCH 09/16] CacheFiles: Permit a process's create SID to be overridden " David Howells
2007-08-10 16:52 ` Casey Schaufler
2007-08-10 16:05 ` [PATCH 10/16] CacheFiles: Add an act-as SID override in task_security_struct " David Howells
2007-08-10 16:05 ` David Howells [this message]
2007-08-10 16:05 ` [PATCH 12/16] CacheFiles: Get the SID under which the CacheFiles module should operate " David Howells
2007-08-10 16:06 ` [PATCH 13/16] CacheFiles: A cache that backs onto a mounted filesystem " David Howells
2007-08-10 16:06 ` [PATCH 14/16] NFS: Use local caching " David Howells
2007-08-10 16:06 ` [PATCH 15/16] NFS: Configuration and mount option changes to enable local caching on NFS " David Howells
2007-08-10 16:06 ` [PATCH 16/16] NFS: Display local caching state " David Howells
2007-08-10 22:13 ` [PATCH 00/16] Permit filesystem local caching " Casey Schaufler
2007-08-11 8:41 ` David Howells
2007-08-11 15:56 ` Casey Schaufler
2007-08-13 10:54 ` David Howells
2007-08-13 13:46 ` Casey Schaufler
2007-08-13 14:51 ` David Howells
2007-08-13 14:57 ` Stephen Smalley
2007-08-13 15:42 ` Casey Schaufler
2007-08-13 15:22 ` David Howells
2007-08-13 16:20 ` Casey Schaufler
2007-08-13 16:31 ` David Howells
2007-08-13 16:58 ` Casey Schaufler
2007-08-13 19:52 ` David Howells
2007-08-13 21:44 ` Casey Schaufler
2007-08-14 9:39 ` David Howells
2007-08-14 15:53 ` Casey Schaufler
2007-08-14 17:42 ` Stephen Smalley
2007-08-15 16:30 ` Casey Schaufler
2007-08-14 17:58 ` David Howells
2007-08-14 17:50 ` Stephen Smalley
2007-08-13 13:50 ` Stephen Smalley
2007-08-13 15:10 ` Casey Schaufler
2007-08-13 13:01 ` Stephen Smalley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070810160553.24698.5628.stgit@warthog.cambridge.redhat.com \
--to=dhowells@redhat.com \
--cc=akpm@osdl.org \
--cc=linux-cachefs@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nfsv4@linux-nfs.org \
--cc=selinux@tycho.nsa.gov \
--cc=steved@redhat.com \
--cc=torvalds@osdl.org \
--cc=trond.myklebust@fys.uio.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).