]> err.no Git - linux-2.6/blobdiff - fs/proc/proc_sysctl.c
iget: stop QNX4 from using iget() and read_inode()
[linux-2.6] / fs / proc / proc_sysctl.c
index bb16a1e78826f8c86b66ea4add2c3b1c128e9883..4e57fcf85982f648ec29f7c0962a1cebae990388 100644 (file)
@@ -47,6 +47,7 @@ static struct inode *proc_sys_make_inode(struct inode *dir, struct ctl_table *ta
        inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
        inode->i_op = &proc_sys_inode_operations;
        inode->i_fop = &proc_sys_file_operations;
+       inode->i_flags |= S_PRIVATE; /* tell selinux to ignore this inode */
        proc_sys_refresh_inode(inode, table);
 out:
        return inode;
@@ -170,7 +171,8 @@ static ssize_t proc_sys_read(struct file *filp, char __user *buf,
        struct dentry *dentry = filp->f_dentry;
        struct ctl_table_header *head;
        struct ctl_table *table;
-       ssize_t error, res;
+       ssize_t error;
+       size_t res;
 
        table = do_proc_sys_lookup(dentry->d_parent, &dentry->d_name, &head);
        /* Has the sysctl entry disappeared on us? */
@@ -208,7 +210,8 @@ static ssize_t proc_sys_write(struct file *filp, const char __user *buf,
        struct dentry *dentry = filp->f_dentry;
        struct ctl_table_header *head;
        struct ctl_table *table;
-       ssize_t error, res;
+       ssize_t error;
+       size_t res;
 
        table = do_proc_sys_lookup(dentry->d_parent, &dentry->d_name, &head);
        /* Has the sysctl entry disappeared on us? */
@@ -428,11 +431,8 @@ static int proc_sys_setattr(struct dentry *dentry, struct iattr *attr)
                return -EPERM;
 
        error = inode_change_ok(inode, attr);
-       if (!error) {
-               error = security_inode_setattr(dentry, attr);
-               if (!error)
-                       error = inode_setattr(inode, attr);
-       }
+       if (!error)
+               error = inode_setattr(inode, attr);
 
        return error;
 }