diff options
author | James Morris <jmorris@namei.org> | 2009-02-05 19:01:45 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-02-05 19:01:45 -0500 |
commit | cb5629b10d64a8006622ce3a52bc887d91057d69 (patch) | |
tree | 7c06d8f30783115e3384721046258ce615b129c5 /fs/ocfs2/inode.h | |
parent | 8920d5ad6ba74ae8ab020e90cc4d976980e68701 (diff) | |
parent | f01d1d546abb2f4028b5299092f529eefb01253a (diff) |
Merge branch 'master' into next
Conflicts:
fs/namei.c
Manually merged per:
diff --cc fs/namei.c
index 734f2b5,bbc15c2..0000000
--- a/fs/namei.c
+++ b/fs/namei.c
@@@ -860,9 -848,8 +849,10 @@@ static int __link_path_walk(const char
nd->flags |= LOOKUP_CONTINUE;
err = exec_permission_lite(inode);
if (err == -EAGAIN)
- err = vfs_permission(nd, MAY_EXEC);
+ err = inode_permission(nd->path.dentry->d_inode,
+ MAY_EXEC);
+ if (!err)
+ err = ima_path_check(&nd->path, MAY_EXEC);
if (err)
break;
@@@ -1525,14 -1506,9 +1509,14 @@@ int may_open(struct path *path, int acc
flag &= ~O_TRUNC;
}
- error = vfs_permission(nd, acc_mode);
+ error = inode_permission(inode, acc_mode);
if (error)
return error;
+
- error = ima_path_check(&nd->path,
++ error = ima_path_check(path,
+ acc_mode & (MAY_READ | MAY_WRITE | MAY_EXEC));
+ if (error)
+ return error;
/*
* An append-only file must be opened in append mode for writing.
*/
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'fs/ocfs2/inode.h')
-rw-r--r-- | fs/ocfs2/inode.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h index 2f37af9bcc4a..eb3c302b38d3 100644 --- a/fs/ocfs2/inode.h +++ b/fs/ocfs2/inode.h | |||
@@ -128,8 +128,8 @@ struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 feoff, unsigned flags, | |||
128 | int sysfile_type); | 128 | int sysfile_type); |
129 | int ocfs2_inode_init_private(struct inode *inode); | 129 | int ocfs2_inode_init_private(struct inode *inode); |
130 | int ocfs2_inode_revalidate(struct dentry *dentry); | 130 | int ocfs2_inode_revalidate(struct dentry *dentry); |
131 | int ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe, | 131 | void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe, |
132 | int create_ino); | 132 | int create_ino); |
133 | void ocfs2_read_inode(struct inode *inode); | 133 | void ocfs2_read_inode(struct inode *inode); |
134 | void ocfs2_read_inode2(struct inode *inode, void *opaque); | 134 | void ocfs2_read_inode2(struct inode *inode, void *opaque); |
135 | ssize_t ocfs2_rw_direct(int rw, struct file *filp, char *buf, | 135 | ssize_t ocfs2_rw_direct(int rw, struct file *filp, char *buf, |
@@ -142,6 +142,8 @@ int ocfs2_mark_inode_dirty(handle_t *handle, | |||
142 | struct buffer_head *bh); | 142 | struct buffer_head *bh); |
143 | int ocfs2_aio_read(struct file *file, struct kiocb *req, struct iocb *iocb); | 143 | int ocfs2_aio_read(struct file *file, struct kiocb *req, struct iocb *iocb); |
144 | int ocfs2_aio_write(struct file *file, struct kiocb *req, struct iocb *iocb); | 144 | int ocfs2_aio_write(struct file *file, struct kiocb *req, struct iocb *iocb); |
145 | struct buffer_head *ocfs2_bread(struct inode *inode, | ||
146 | int block, int *err, int reada); | ||
145 | 147 | ||
146 | void ocfs2_set_inode_flags(struct inode *inode); | 148 | void ocfs2_set_inode_flags(struct inode *inode); |
147 | void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi); | 149 | void ocfs2_get_inode_flags(struct ocfs2_inode_info *oi); |
@@ -153,4 +155,16 @@ static inline blkcnt_t ocfs2_inode_sector_count(struct inode *inode) | |||
153 | return (blkcnt_t)(OCFS2_I(inode)->ip_clusters << c_to_s_bits); | 155 | return (blkcnt_t)(OCFS2_I(inode)->ip_clusters << c_to_s_bits); |
154 | } | 156 | } |
155 | 157 | ||
158 | /* Validate that a bh contains a valid inode */ | ||
159 | int ocfs2_validate_inode_block(struct super_block *sb, | ||
160 | struct buffer_head *bh); | ||
161 | /* | ||
162 | * Read an inode block into *bh. If *bh is NULL, a bh will be allocated. | ||
163 | * This is a cached read. The inode will be validated with | ||
164 | * ocfs2_validate_inode_block(). | ||
165 | */ | ||
166 | int ocfs2_read_inode_block(struct inode *inode, struct buffer_head **bh); | ||
167 | /* The same, but can be passed OCFS2_BH_* flags */ | ||
168 | int ocfs2_read_inode_block_full(struct inode *inode, struct buffer_head **bh, | ||
169 | int flags); | ||
156 | #endif /* OCFS2_INODE_H */ | 170 | #endif /* OCFS2_INODE_H */ |