diff options
Diffstat (limited to 'security/inode.c')
| -rw-r--r-- | security/inode.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/security/inode.c b/security/inode.c index 1c812e874504..cb8f47c66a58 100644 --- a/security/inode.c +++ b/security/inode.c | |||
| @@ -53,6 +53,7 @@ static const struct file_operations default_file_ops = { | |||
| 53 | .read = default_read_file, | 53 | .read = default_read_file, |
| 54 | .write = default_write_file, | 54 | .write = default_write_file, |
| 55 | .open = default_open, | 55 | .open = default_open, |
| 56 | .llseek = noop_llseek, | ||
| 56 | }; | 57 | }; |
| 57 | 58 | ||
| 58 | static struct inode *get_inode(struct super_block *sb, int mode, dev_t dev) | 59 | static struct inode *get_inode(struct super_block *sb, int mode, dev_t dev) |
| @@ -60,6 +61,7 @@ static struct inode *get_inode(struct super_block *sb, int mode, dev_t dev) | |||
| 60 | struct inode *inode = new_inode(sb); | 61 | struct inode *inode = new_inode(sb); |
| 61 | 62 | ||
| 62 | if (inode) { | 63 | if (inode) { |
| 64 | inode->i_ino = get_next_ino(); | ||
| 63 | inode->i_mode = mode; | 65 | inode->i_mode = mode; |
| 64 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 66 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
| 65 | switch (mode & S_IFMT) { | 67 | switch (mode & S_IFMT) { |
| @@ -86,7 +88,7 @@ static int mknod(struct inode *dir, struct dentry *dentry, | |||
| 86 | int mode, dev_t dev) | 88 | int mode, dev_t dev) |
| 87 | { | 89 | { |
| 88 | struct inode *inode; | 90 | struct inode *inode; |
| 89 | int error = -EPERM; | 91 | int error = -ENOMEM; |
| 90 | 92 | ||
| 91 | if (dentry->d_inode) | 93 | if (dentry->d_inode) |
| 92 | return -EEXIST; | 94 | return -EEXIST; |
| @@ -166,6 +168,8 @@ static int create_by_name(const char *name, mode_t mode, | |||
| 166 | error = mkdir(parent->d_inode, *dentry, mode); | 168 | error = mkdir(parent->d_inode, *dentry, mode); |
| 167 | else | 169 | else |
| 168 | error = create(parent->d_inode, *dentry, mode); | 170 | error = create(parent->d_inode, *dentry, mode); |
| 171 | if (error) | ||
| 172 | dput(*dentry); | ||
| 169 | } else | 173 | } else |
| 170 | error = PTR_ERR(*dentry); | 174 | error = PTR_ERR(*dentry); |
| 171 | mutex_unlock(&parent->d_inode->i_mutex); | 175 | mutex_unlock(&parent->d_inode->i_mutex); |
