->permission() sanitizing: don't pass flags to ->permission()

not used by the instances anymore.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2011-06-20 19:28:19 -04:00
parent 2830ba7f34
commit 10556cb21a
31 changed files with 55 additions and 55 deletions

View File

@ -333,7 +333,7 @@ struct inode_operations {
void * (*follow_link) (struct dentry *, struct nameidata *); void * (*follow_link) (struct dentry *, struct nameidata *);
void (*put_link) (struct dentry *, struct nameidata *, void *); void (*put_link) (struct dentry *, struct nameidata *, void *);
void (*truncate) (struct inode *); void (*truncate) (struct inode *);
int (*permission) (struct inode *, int, unsigned int); int (*permission) (struct inode *, int);
int (*check_acl)(struct inode *, int); int (*check_acl)(struct inode *, int);
int (*setattr) (struct dentry *, struct iattr *); int (*setattr) (struct dentry *, struct iattr *);
int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
@ -423,7 +423,7 @@ otherwise noted.
permission: called by the VFS to check for access rights on a POSIX-like permission: called by the VFS to check for access rights on a POSIX-like
filesystem. filesystem.
May be called in rcu-walk mode (flags & IPERM_FLAG_RCU). If in rcu-walk May be called in rcu-walk mode (mask & MAY_NOT_BLOCK). If in rcu-walk
mode, the filesystem must check the permission without blocking or mode, the filesystem must check the permission without blocking or
storing to the inode. storing to the inode.

View File

@ -627,7 +627,7 @@ extern void afs_clear_permits(struct afs_vnode *);
extern void afs_cache_permit(struct afs_vnode *, struct key *, long); extern void afs_cache_permit(struct afs_vnode *, struct key *, long);
extern void afs_zap_permits(struct rcu_head *); extern void afs_zap_permits(struct rcu_head *);
extern struct key *afs_request_key(struct afs_cell *); extern struct key *afs_request_key(struct afs_cell *);
extern int afs_permission(struct inode *, int, unsigned int); extern int afs_permission(struct inode *, int);
/* /*
* server.c * server.c

View File

@ -285,14 +285,14 @@ static int afs_check_permit(struct afs_vnode *vnode, struct key *key,
* - AFS ACLs are attached to directories only, and a file is controlled by its * - AFS ACLs are attached to directories only, and a file is controlled by its
* parent directory's ACL * parent directory's ACL
*/ */
int afs_permission(struct inode *inode, int mask, unsigned int flags) int afs_permission(struct inode *inode, int mask)
{ {
struct afs_vnode *vnode = AFS_FS_I(inode); struct afs_vnode *vnode = AFS_FS_I(inode);
afs_access_t uninitialized_var(access); afs_access_t uninitialized_var(access);
struct key *key; struct key *key;
int ret; int ret;
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
_enter("{{%x:%u},%lx},%x,", _enter("{{%x:%u},%lx},%x,",

View File

@ -229,7 +229,7 @@ static int bad_inode_readlink(struct dentry *dentry, char __user *buffer,
return -EIO; return -EIO;
} }
static int bad_inode_permission(struct inode *inode, int mask, unsigned int flags) static int bad_inode_permission(struct inode *inode, int mask)
{ {
return -EIO; return -EIO;
} }

View File

@ -7331,7 +7331,7 @@ static int btrfs_set_page_dirty(struct page *page)
return __set_page_dirty_nobuffers(page); return __set_page_dirty_nobuffers(page);
} }
static int btrfs_permission(struct inode *inode, int mask, unsigned int flags) static int btrfs_permission(struct inode *inode, int mask)
{ {
struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_root *root = BTRFS_I(inode)->root;

View File

@ -1795,11 +1795,11 @@ int ceph_do_getattr(struct inode *inode, int mask)
* Check inode permissions. We verify we have a valid value for * Check inode permissions. We verify we have a valid value for
* the AUTH cap, then call the generic handler. * the AUTH cap, then call the generic handler.
*/ */
int ceph_permission(struct inode *inode, int mask, unsigned int flags) int ceph_permission(struct inode *inode, int mask)
{ {
int err; int err;
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
err = ceph_do_getattr(inode, CEPH_CAP_AUTH_SHARED); err = ceph_do_getattr(inode, CEPH_CAP_AUTH_SHARED);

View File

@ -692,7 +692,7 @@ extern void ceph_queue_invalidate(struct inode *inode);
extern void ceph_queue_writeback(struct inode *inode); extern void ceph_queue_writeback(struct inode *inode);
extern int ceph_do_getattr(struct inode *inode, int mask); extern int ceph_do_getattr(struct inode *inode, int mask);
extern int ceph_permission(struct inode *inode, int mask, unsigned int flags); extern int ceph_permission(struct inode *inode, int mask);
extern int ceph_setattr(struct dentry *dentry, struct iattr *attr); extern int ceph_setattr(struct dentry *dentry, struct iattr *attr);
extern int ceph_getattr(struct vfsmount *mnt, struct dentry *dentry, extern int ceph_getattr(struct vfsmount *mnt, struct dentry *dentry,
struct kstat *stat); struct kstat *stat);

View File

@ -224,7 +224,7 @@ cifs_statfs(struct dentry *dentry, struct kstatfs *buf)
return 0; return 0;
} }
static int cifs_permission(struct inode *inode, int mask, unsigned int flags) static int cifs_permission(struct inode *inode, int mask)
{ {
struct cifs_sb_info *cifs_sb; struct cifs_sb_info *cifs_sb;

View File

@ -39,7 +39,7 @@ extern const struct file_operations coda_ioctl_operations;
/* operations shared over more than one file */ /* operations shared over more than one file */
int coda_open(struct inode *i, struct file *f); int coda_open(struct inode *i, struct file *f);
int coda_release(struct inode *i, struct file *f); int coda_release(struct inode *i, struct file *f);
int coda_permission(struct inode *inode, int mask, unsigned int flags); int coda_permission(struct inode *inode, int mask);
int coda_revalidate_inode(struct dentry *); int coda_revalidate_inode(struct dentry *);
int coda_getattr(struct vfsmount *, struct dentry *, struct kstat *); int coda_getattr(struct vfsmount *, struct dentry *, struct kstat *);
int coda_setattr(struct dentry *, struct iattr *); int coda_setattr(struct dentry *, struct iattr *);

View File

@ -132,11 +132,11 @@ exit:
} }
int coda_permission(struct inode *inode, int mask, unsigned int flags) int coda_permission(struct inode *inode, int mask)
{ {
int error; int error;
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
mask &= MAY_READ | MAY_WRITE | MAY_EXEC; mask &= MAY_READ | MAY_WRITE | MAY_EXEC;

View File

@ -24,7 +24,7 @@
#include "coda_linux.h" #include "coda_linux.h"
/* pioctl ops */ /* pioctl ops */
static int coda_ioctl_permission(struct inode *inode, int mask, unsigned int flags); static int coda_ioctl_permission(struct inode *inode, int mask);
static long coda_pioctl(struct file *filp, unsigned int cmd, static long coda_pioctl(struct file *filp, unsigned int cmd,
unsigned long user_data); unsigned long user_data);
@ -41,7 +41,7 @@ const struct file_operations coda_ioctl_operations = {
}; };
/* the coda pioctl inode ops */ /* the coda pioctl inode ops */
static int coda_ioctl_permission(struct inode *inode, int mask, unsigned int flags) static int coda_ioctl_permission(struct inode *inode, int mask)
{ {
return (mask & MAY_EXEC) ? -EACCES : 0; return (mask & MAY_EXEC) ? -EACCES : 0;
} }

View File

@ -942,9 +942,9 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
} }
static int static int
ecryptfs_permission(struct inode *inode, int mask, unsigned int flags) ecryptfs_permission(struct inode *inode, int mask)
{ {
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
return inode_permission(ecryptfs_inode_to_lower(inode), mask); return inode_permission(ecryptfs_inode_to_lower(inode), mask);
} }

View File

@ -971,9 +971,9 @@ static int fuse_access(struct inode *inode, int mask)
return err; return err;
} }
static int fuse_perm_getattr(struct inode *inode, int flags) static int fuse_perm_getattr(struct inode *inode, int mask)
{ {
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
return fuse_do_getattr(inode, NULL, NULL); return fuse_do_getattr(inode, NULL, NULL);
@ -992,7 +992,7 @@ static int fuse_perm_getattr(struct inode *inode, int flags)
* access request is sent. Execute permission is still checked * access request is sent. Execute permission is still checked
* locally based on file mode. * locally based on file mode.
*/ */
static int fuse_permission(struct inode *inode, int mask, unsigned int flags) static int fuse_permission(struct inode *inode, int mask)
{ {
struct fuse_conn *fc = get_fuse_conn(inode); struct fuse_conn *fc = get_fuse_conn(inode);
bool refreshed = false; bool refreshed = false;
@ -1011,7 +1011,7 @@ static int fuse_permission(struct inode *inode, int mask, unsigned int flags)
if (fi->i_time < get_jiffies_64()) { if (fi->i_time < get_jiffies_64()) {
refreshed = true; refreshed = true;
err = fuse_perm_getattr(inode, flags); err = fuse_perm_getattr(inode, mask);
if (err) if (err)
return err; return err;
} }
@ -1024,7 +1024,7 @@ static int fuse_permission(struct inode *inode, int mask, unsigned int flags)
attributes. This is also needed, because the root attributes. This is also needed, because the root
node will at first have no permissions */ node will at first have no permissions */
if (err == -EACCES && !refreshed) { if (err == -EACCES && !refreshed) {
err = fuse_perm_getattr(inode, flags); err = fuse_perm_getattr(inode, mask);
if (!err) if (!err)
err = generic_permission(inode, mask); err = generic_permission(inode, mask);
} }
@ -1034,7 +1034,7 @@ static int fuse_permission(struct inode *inode, int mask, unsigned int flags)
noticed immediately, only after the attribute noticed immediately, only after the attribute
timeout has expired */ timeout has expired */
} else if (mask & (MAY_ACCESS | MAY_CHDIR)) { } else if (mask & (MAY_ACCESS | MAY_CHDIR)) {
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
err = fuse_access(inode, mask); err = fuse_access(inode, mask);
@ -1043,7 +1043,7 @@ static int fuse_permission(struct inode *inode, int mask, unsigned int flags)
if (refreshed) if (refreshed)
return -EACCES; return -EACCES;
err = fuse_perm_getattr(inode, flags); err = fuse_perm_getattr(inode, mask);
if (!err && !(inode->i_mode & S_IXUGO)) if (!err && !(inode->i_mode & S_IXUGO))
return -EACCES; return -EACCES;
} }

View File

@ -243,7 +243,7 @@ static int do_gfs2_set_flags(struct file *filp, u32 reqflags, u32 mask)
!capable(CAP_LINUX_IMMUTABLE)) !capable(CAP_LINUX_IMMUTABLE))
goto out; goto out;
if (!IS_IMMUTABLE(inode)) { if (!IS_IMMUTABLE(inode)) {
error = gfs2_permission(inode, MAY_WRITE, 0); error = gfs2_permission(inode, MAY_WRITE);
if (error) if (error)
goto out; goto out;
} }

View File

@ -307,7 +307,7 @@ struct inode *gfs2_lookupi(struct inode *dir, const struct qstr *name,
} }
if (!is_root) { if (!is_root) {
error = gfs2_permission(dir, MAY_EXEC, 0); error = gfs2_permission(dir, MAY_EXEC);
if (error) if (error)
goto out; goto out;
} }
@ -337,7 +337,7 @@ static int create_ok(struct gfs2_inode *dip, const struct qstr *name,
{ {
int error; int error;
error = gfs2_permission(&dip->i_inode, MAY_WRITE | MAY_EXEC, 0); error = gfs2_permission(&dip->i_inode, MAY_WRITE | MAY_EXEC);
if (error) if (error)
return error; return error;
@ -857,7 +857,7 @@ static int gfs2_link(struct dentry *old_dentry, struct inode *dir,
if (inode->i_nlink == 0) if (inode->i_nlink == 0)
goto out_gunlock; goto out_gunlock;
error = gfs2_permission(dir, MAY_WRITE | MAY_EXEC, 0); error = gfs2_permission(dir, MAY_WRITE | MAY_EXEC);
if (error) if (error)
goto out_gunlock; goto out_gunlock;
@ -990,7 +990,7 @@ static int gfs2_unlink_ok(struct gfs2_inode *dip, const struct qstr *name,
if (IS_APPEND(&dip->i_inode)) if (IS_APPEND(&dip->i_inode))
return -EPERM; return -EPERM;
error = gfs2_permission(&dip->i_inode, MAY_WRITE | MAY_EXEC, 0); error = gfs2_permission(&dip->i_inode, MAY_WRITE | MAY_EXEC);
if (error) if (error)
return error; return error;
@ -1336,7 +1336,7 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry,
} }
} }
} else { } else {
error = gfs2_permission(ndir, MAY_WRITE | MAY_EXEC, 0); error = gfs2_permission(ndir, MAY_WRITE | MAY_EXEC);
if (error) if (error)
goto out_gunlock; goto out_gunlock;
@ -1371,7 +1371,7 @@ static int gfs2_rename(struct inode *odir, struct dentry *odentry,
/* Check out the dir to be renamed */ /* Check out the dir to be renamed */
if (dir_rename) { if (dir_rename) {
error = gfs2_permission(odentry->d_inode, MAY_WRITE, 0); error = gfs2_permission(odentry->d_inode, MAY_WRITE);
if (error) if (error)
goto out_gunlock; goto out_gunlock;
} }
@ -1543,7 +1543,7 @@ static void gfs2_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
* Returns: errno * Returns: errno
*/ */
int gfs2_permission(struct inode *inode, int mask, unsigned int flags) int gfs2_permission(struct inode *inode, int mask)
{ {
struct gfs2_inode *ip; struct gfs2_inode *ip;
struct gfs2_holder i_gh; struct gfs2_holder i_gh;
@ -1553,7 +1553,7 @@ int gfs2_permission(struct inode *inode, int mask, unsigned int flags)
ip = GFS2_I(inode); ip = GFS2_I(inode);
if (gfs2_glock_is_locked_by_me(ip->i_gl) == NULL) { if (gfs2_glock_is_locked_by_me(ip->i_gl) == NULL) {
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh); error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
if (error) if (error)

View File

@ -108,7 +108,7 @@ extern int gfs2_inode_refresh(struct gfs2_inode *ip);
extern struct inode *gfs2_lookupi(struct inode *dir, const struct qstr *name, extern struct inode *gfs2_lookupi(struct inode *dir, const struct qstr *name,
int is_root); int is_root);
extern int gfs2_permission(struct inode *inode, int mask, unsigned int flags); extern int gfs2_permission(struct inode *inode, int mask);
extern int gfs2_setattr_simple(struct gfs2_inode *ip, struct iattr *attr); extern int gfs2_setattr_simple(struct gfs2_inode *ip, struct iattr *attr);
extern struct inode *gfs2_lookup_simple(struct inode *dip, const char *name); extern struct inode *gfs2_lookup_simple(struct inode *dip, const char *name);
extern void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf); extern void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf);

View File

@ -748,12 +748,12 @@ int hostfs_rename(struct inode *from_ino, struct dentry *from,
return err; return err;
} }
int hostfs_permission(struct inode *ino, int desired, unsigned int flags) int hostfs_permission(struct inode *ino, int desired)
{ {
char *name; char *name;
int r = 0, w = 0, x = 0, err; int r = 0, w = 0, x = 0, err;
if (flags & IPERM_FLAG_RCU) if (desired & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
if (desired & MAY_READ) r = 1; if (desired & MAY_READ) r = 1;

View File

@ -287,7 +287,7 @@ int inode_permission(struct inode *inode, int mask)
} }
if (inode->i_op->permission) if (inode->i_op->permission)
retval = inode->i_op->permission(inode, mask, 0); retval = inode->i_op->permission(inode, mask);
else else
retval = generic_permission(inode, mask); retval = generic_permission(inode, mask);
@ -323,7 +323,7 @@ static inline int exec_permission(struct inode *inode, unsigned int flags)
mask |= MAY_NOT_BLOCK; mask |= MAY_NOT_BLOCK;
if (inode->i_op->permission) { if (inode->i_op->permission) {
ret = inode->i_op->permission(inode, mask, flags); ret = inode->i_op->permission(inode, mask);
if (likely(!ret)) if (likely(!ret))
goto ok; goto ok;
} else { } else {

View File

@ -2273,12 +2273,12 @@ int nfs_may_open(struct inode *inode, struct rpc_cred *cred, int openflags)
return nfs_do_access(inode, cred, nfs_open_permission_mask(openflags)); return nfs_do_access(inode, cred, nfs_open_permission_mask(openflags));
} }
int nfs_permission(struct inode *inode, int mask, unsigned int flags) int nfs_permission(struct inode *inode, int mask)
{ {
struct rpc_cred *cred; struct rpc_cred *cred;
int res = 0; int res = 0;
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
nfs_inc_stats(inode, NFSIOS_VFSACCESS); nfs_inc_stats(inode, NFSIOS_VFSACCESS);

View File

@ -799,7 +799,7 @@ out_err:
return err; return err;
} }
int nilfs_permission(struct inode *inode, int mask, unsigned int flags) int nilfs_permission(struct inode *inode, int mask)
{ {
struct nilfs_root *root = NILFS_I(inode)->i_root; struct nilfs_root *root = NILFS_I(inode)->i_root;
if ((mask & MAY_WRITE) && root && if ((mask & MAY_WRITE) && root &&

View File

@ -264,7 +264,7 @@ extern void nilfs_update_inode(struct inode *, struct buffer_head *);
extern void nilfs_truncate(struct inode *); extern void nilfs_truncate(struct inode *);
extern void nilfs_evict_inode(struct inode *); extern void nilfs_evict_inode(struct inode *);
extern int nilfs_setattr(struct dentry *, struct iattr *); extern int nilfs_setattr(struct dentry *, struct iattr *);
int nilfs_permission(struct inode *inode, int mask, unsigned int flags); int nilfs_permission(struct inode *inode, int mask);
int nilfs_load_inode_block(struct inode *inode, struct buffer_head **pbh); int nilfs_load_inode_block(struct inode *inode, struct buffer_head **pbh);
extern int nilfs_inode_dirty(struct inode *); extern int nilfs_inode_dirty(struct inode *);
int nilfs_set_file_dirty(struct inode *inode, unsigned nr_dirty); int nilfs_set_file_dirty(struct inode *inode, unsigned nr_dirty);

View File

@ -1279,11 +1279,11 @@ bail:
return err; return err;
} }
int ocfs2_permission(struct inode *inode, int mask, unsigned int flags) int ocfs2_permission(struct inode *inode, int mask)
{ {
int ret; int ret;
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
ret = ocfs2_inode_lock(inode, NULL, 0); ret = ocfs2_inode_lock(inode, NULL, 0);

View File

@ -61,7 +61,7 @@ int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh,
int ocfs2_setattr(struct dentry *dentry, struct iattr *attr); int ocfs2_setattr(struct dentry *dentry, struct iattr *attr);
int ocfs2_getattr(struct vfsmount *mnt, struct dentry *dentry, int ocfs2_getattr(struct vfsmount *mnt, struct dentry *dentry,
struct kstat *stat); struct kstat *stat);
int ocfs2_permission(struct inode *inode, int mask, unsigned int flags); int ocfs2_permission(struct inode *inode, int mask);
int ocfs2_should_update_atime(struct inode *inode, int ocfs2_should_update_atime(struct inode *inode,
struct vfsmount *vfsmnt); struct vfsmount *vfsmnt);

View File

@ -2167,7 +2167,7 @@ static const struct file_operations proc_fd_operations = {
* /proc/pid/fd needs a special permission handler so that a process can still * /proc/pid/fd needs a special permission handler so that a process can still
* access /proc/self/fd after it has executed a setuid(). * access /proc/self/fd after it has executed a setuid().
*/ */
static int proc_fd_permission(struct inode *inode, int mask, unsigned int flags) static int proc_fd_permission(struct inode *inode, int mask)
{ {
int rv = generic_permission(inode, mask); int rv = generic_permission(inode, mask);
if (rv == 0) if (rv == 0)

View File

@ -294,7 +294,7 @@ out:
return ret; return ret;
} }
static int proc_sys_permission(struct inode *inode, int mask,unsigned int flags) static int proc_sys_permission(struct inode *inode, int mask)
{ {
/* /*
* sysctl entries that are not writeable, * sysctl entries that are not writeable,

View File

@ -958,7 +958,7 @@ static int xattr_mount_check(struct super_block *s)
return 0; return 0;
} }
int reiserfs_permission(struct inode *inode, int mask, unsigned int flags) int reiserfs_permission(struct inode *inode, int mask)
{ {
/* /*
* We don't do permission checks on the internal objects. * We don't do permission checks on the internal objects.

View File

@ -349,11 +349,11 @@ int sysfs_hash_and_remove(struct sysfs_dirent *dir_sd, const void *ns, const cha
return -ENOENT; return -ENOENT;
} }
int sysfs_permission(struct inode *inode, int mask, unsigned int flags) int sysfs_permission(struct inode *inode, int mask)
{ {
struct sysfs_dirent *sd; struct sysfs_dirent *sd;
if (flags & IPERM_FLAG_RCU) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
sd = inode->i_private; sd = inode->i_private;

View File

@ -201,7 +201,7 @@ static inline void __sysfs_put(struct sysfs_dirent *sd)
struct inode *sysfs_get_inode(struct super_block *sb, struct sysfs_dirent *sd); struct inode *sysfs_get_inode(struct super_block *sb, struct sysfs_dirent *sd);
void sysfs_evict_inode(struct inode *inode); void sysfs_evict_inode(struct inode *inode);
int sysfs_sd_setattr(struct sysfs_dirent *sd, struct iattr *iattr); int sysfs_sd_setattr(struct sysfs_dirent *sd, struct iattr *iattr);
int sysfs_permission(struct inode *inode, int mask, unsigned int flags); int sysfs_permission(struct inode *inode, int mask);
int sysfs_setattr(struct dentry *dentry, struct iattr *iattr); int sysfs_setattr(struct dentry *dentry, struct iattr *iattr);
int sysfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat); int sysfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat);
int sysfs_setxattr(struct dentry *dentry, const char *name, const void *value, int sysfs_setxattr(struct dentry *dentry, const char *name, const void *value,

View File

@ -1578,7 +1578,7 @@ struct file_operations {
struct inode_operations { struct inode_operations {
struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *);
void * (*follow_link) (struct dentry *, struct nameidata *); void * (*follow_link) (struct dentry *, struct nameidata *);
int (*permission) (struct inode *, int, unsigned int); int (*permission) (struct inode *, int);
int (*check_acl)(struct inode *, int); int (*check_acl)(struct inode *, int);
int (*readlink) (struct dentry *, char __user *,int); int (*readlink) (struct dentry *, char __user *,int);

View File

@ -360,7 +360,7 @@ extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *);
extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr); extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr);
extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr); extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr);
extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *);
extern int nfs_permission(struct inode *, int, unsigned int); extern int nfs_permission(struct inode *, int);
extern int nfs_open(struct inode *, struct file *); extern int nfs_open(struct inode *, struct file *);
extern int nfs_release(struct inode *, struct file *); extern int nfs_release(struct inode *, struct file *);
extern int nfs_attribute_timeout(struct inode *inode); extern int nfs_attribute_timeout(struct inode *inode);

View File

@ -41,7 +41,7 @@ int reiserfs_xattr_init(struct super_block *sb, int mount_flags);
int reiserfs_lookup_privroot(struct super_block *sb); int reiserfs_lookup_privroot(struct super_block *sb);
int reiserfs_delete_xattrs(struct inode *inode); int reiserfs_delete_xattrs(struct inode *inode);
int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs); int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs);
int reiserfs_permission(struct inode *inode, int mask, unsigned int flags); int reiserfs_permission(struct inode *inode, int mask);
#ifdef CONFIG_REISERFS_FS_XATTR #ifdef CONFIG_REISERFS_FS_XATTR
#define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir) #define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir)