From: Hans Reiser <reiser@namesys.com>
To: Andrew Morton <akpm@osdl.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [Fwd: [PATCH 1/3] reiser4-remove-rwx-perm-plugin.patch]
Date: Fri, 11 Nov 2005 11:20:21 -0800 [thread overview]
Message-ID: <4374EEF5.2010609@namesys.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Attachment #2: [PATCH 1/3] reiser4-remove-rwx-perm-plugin.patch --]
[-- Type: message/rfc822, Size: 8730 bytes --]
[-- Attachment #2.1.1: Type: text/plain, Size: 0 bytes --]
[-- Attachment #2.1.2: reiser4-remove-rwx-perm-plugin.patch --]
[-- Type: text/plain, Size: 7541 bytes --]
From: Hans Reiser <reiser@namesys.com>
Security plugin duplicating LSM is removed.
Signed-off-by: Vladimir V. Saveliev <vs@namesys.com>
fs/reiser4/init_super.c | 2 -
fs/reiser4/plugin/dir_plugin_common.c | 4 --
fs/reiser4/plugin/inode_ops.c | 40 +++++-----------------
fs/reiser4/plugin/security/perm.c | 61 ++++------------------------------
fs/reiser4/plugin/security/perm.h | 13 -------
5 files changed, 20 insertions(+), 100 deletions(-)
diff -puN fs/reiser4/init_super.c~reiser4-remove-rwx-perm-plugin fs/reiser4/init_super.c
--- linux-2.6.14-rc5-mm1/fs/reiser4/init_super.c~reiser4-remove-rwx-perm-plugin 2005-11-11 17:55:57.775962799 +0300
+++ linux-2.6.14-rc5-mm1-vs/fs/reiser4/init_super.c 2005-11-11 17:55:57.907991038 +0300
@@ -626,7 +626,7 @@ static struct {
},
[PSET_PERM] = {
.type = REISER4_PERM_PLUGIN_TYPE,
- .id = RWX_PERM_ID
+ .id = NULL_PERM_ID
},
[PSET_FORMATTING] = {
.type = REISER4_FORMATTING_PLUGIN_TYPE,
diff -puN fs/reiser4/plugin/dir_plugin_common.c~reiser4-remove-rwx-perm-plugin fs/reiser4/plugin/dir_plugin_common.c
--- linux-2.6.14-rc5-mm1/fs/reiser4/plugin/dir_plugin_common.c~reiser4-remove-rwx-perm-plugin 2005-11-11 17:55:57.807969645 +0300
+++ linux-2.6.14-rc5-mm1-vs/fs/reiser4/plugin/dir_plugin_common.c 2005-11-11 17:55:57.931996172 +0300
@@ -488,10 +488,6 @@ int lookup_name(struct inode *parent, /*
assert("vs-1486",
dentry->d_op == &get_super_private(parent->i_sb)->ops.dentry);
- result = perm_chk(parent, lookup, parent, dentry);
- if (result != 0)
- return 0;
-
name = dentry->d_name.name;
len = dentry->d_name.len;
diff -puN fs/reiser4/plugin/inode_ops.c~reiser4-remove-rwx-perm-plugin fs/reiser4/plugin/inode_ops.c
--- linux-2.6.14-rc5-mm1/fs/reiser4/plugin/inode_ops.c~reiser4-remove-rwx-perm-plugin 2005-11-11 17:55:57.819972212 +0300
+++ linux-2.6.14-rc5-mm1-vs/fs/reiser4/plugin/inode_ops.c 2005-11-11 17:55:57.911991894 +0300
@@ -150,14 +150,6 @@ int link_common(struct dentry *existing,
return RETERR(-EISDIR);
}
- /* check permissions */
- result = perm_chk(parent, link, existing, parent, newname);
- if (result != 0) {
- context_set_commit_async(ctx);
- reiser4_exit_context(ctx);
- return result;
- }
-
parent_dplug = inode_dir_plugin(parent);
memset(&entry, 0, sizeof entry);
@@ -438,20 +430,18 @@ void *follow_link_common(struct dentry *
return NULL;
}
-/* this is common implementation of vfs's permission method of struct
- inode_operations
-*/
-int permission_common(struct inode *inode /* object */ ,
- int mask, /* mode bits to check permissions for */
+/**
+ * permission_common - permission of inode operations
+ * @inode: inode to check permissions for
+ * @mask: mode bits to check permissions for
+ * @nameidata:
+ *
+ * Uses generic function to check for rwx permissions.
+ */
+int permission_common(struct inode *inode, int mask,
struct nameidata *nameidata)
{
- /* reiser4_context creation/destruction removed from here,
- because permission checks currently don't require this.
-
- Permission plugin have to create context itself if necessary. */
- assert("nikita-1687", inode != NULL);
-
- return perm_chk(inode, mask, inode, mask);
+ return generic_permission(inode, mask, NULL);
}
static int setattr_reserve(reiser4_tree *);
@@ -597,11 +587,6 @@ static int do_create_vfs_child(reiser4_o
assert("nikita-1418", parent != NULL);
assert("nikita-1419", dentry != NULL);
- /* check permissions */
- result = perm_chk(parent, create, parent, dentry, data);
- if (result != 0)
- return result;
-
/* check, that name is acceptable for parent */
par_dir = inode_dir_plugin(parent);
if (par_dir->is_name_acceptable &&
@@ -901,11 +886,6 @@ static int unlink_check_and_grab(struct
/* object being deleted should have stat data */
assert("vs-949", !inode_get_flag(child, REISER4_NO_SD));
- /* check permissions */
- result = perm_chk(parent, unlink, parent, victim);
- if (result != 0)
- return result;
-
/* ask object plugin */
if (fplug->can_rem_link != NULL && !fplug->can_rem_link(child))
return RETERR(-ENOTEMPTY);
diff -puN fs/reiser4/plugin/security/perm.c~reiser4-remove-rwx-perm-plugin fs/reiser4/plugin/security/perm.c
--- linux-2.6.14-rc5-mm1/fs/reiser4/plugin/security/perm.c~reiser4-remove-rwx-perm-plugin 2005-11-11 17:55:57.839976491 +0300
+++ linux-2.6.14-rc5-mm1-vs/fs/reiser4/plugin/security/perm.c 2005-11-11 17:55:57.887986759 +0300
@@ -9,70 +9,25 @@
#include "../plugin_header.h"
#include "../../debug.h"
-#include <linux/fs.h>
-#include <linux/dcache.h> /* for struct dentry */
-#include <linux/quotaops.h>
-#include <asm/uaccess.h>
-
-static int mask_ok_common(struct inode *inode, int mask)
-{
- return generic_permission(inode, mask, NULL);
-}
-
-static int setattr_ok_common(struct dentry *dentry, struct iattr *attr)
-{
- int result;
- struct inode *inode;
-
- assert("nikita-2272", dentry != NULL);
- assert("nikita-2273", attr != NULL);
-
- inode = dentry->d_inode;
- assert("nikita-2274", inode != NULL);
-
- result = inode_change_ok(inode, attr);
- if (result == 0) {
- unsigned int valid;
-
- valid = attr->ia_valid;
- if ((valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
- (valid & ATTR_GID && attr->ia_gid != inode->i_gid))
- result = DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0;
- }
- return result;
-}
-
-static int
-read_ok_common(struct file *file, const char __user *buf, size_t size, loff_t * off)
-{
- return access_ok(VERIFY_WRITE, buf, size) ? 0 : -EFAULT;
-}
-
-static int
-write_ok_common(struct file *file, const char __user *buf, size_t size, loff_t * off)
-{
- return access_ok(VERIFY_READ, buf, size) ? 0 : -EFAULT;
-}
-
perm_plugin perm_plugins[LAST_PERM_ID] = {
- [RWX_PERM_ID] = {
+ [NULL_PERM_ID] = {
.h = {
.type_id = REISER4_PERM_PLUGIN_TYPE,
- .id = RWX_PERM_ID,
+ .id = NULL_PERM_ID,
.pops = NULL,
- .label = "rwx",
- .desc = "standard UNIX permissions",
+ .label = "null",
+ .desc = "stub permission plugin",
.linkage = {NULL, NULL}
},
- .read_ok = read_ok_common,
- .write_ok = write_ok_common,
+ .read_ok = NULL,
+ .write_ok = NULL,
.lookup_ok = NULL,
.create_ok = NULL,
.link_ok = NULL,
.unlink_ok = NULL,
.delete_ok = NULL,
- .mask_ok = mask_ok_common,
- .setattr_ok = setattr_ok_common,
+ .mask_ok = NULL,
+ .setattr_ok = NULL,
.getattr_ok = NULL,
.rename_ok = NULL,
}
diff -puN fs/reiser4/plugin/security/perm.h~reiser4-remove-rwx-perm-plugin fs/reiser4/plugin/security/perm.h
--- linux-2.6.14-rc5-mm1/fs/reiser4/plugin/security/perm.h~reiser4-remove-rwx-perm-plugin 2005-11-11 17:55:57.843977346 +0300
+++ linux-2.6.14-rc5-mm1-vs/fs/reiser4/plugin/security/perm.h 2005-11-11 17:55:57.907991038 +0300
@@ -65,19 +65,8 @@ typedef struct perm_plugin {
int (*rename_ok) (struct inode * old_dir, struct dentry * old,
struct inode * new_dir, struct dentry * new);
} perm_plugin;
-/* NIKITA-FIXME-HANS: I really hate things like this that kill the ability of Meta-. to work. Please eliminate this macro, exce */
-/* call ->check_ok method of perm plugin for inode */
-#define perm_chk(inode, check, ...) \
-({ \
- perm_plugin *perm; \
- \
- perm = inode_perm_plugin(inode); \
- (perm == NULL || perm->check ## _ok == NULL) ? \
- 0 : \
- perm->check ## _ok(__VA_ARGS__); \
-})
-typedef enum { RWX_PERM_ID, LAST_PERM_ID } reiser4_perm_id;
+typedef enum { NULL_PERM_ID, LAST_PERM_ID } reiser4_perm_id;
/* __REISER4_PERM_H__ */
#endif
_
reply other threads:[~2005-11-11 19:20 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=4374EEF5.2010609@namesys.com \
--to=reiser@namesys.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/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