gfs2: Remove code handling bio_alloc failure with __GFP_WAIT
[safe/jmp/linux-2.6] / fs / xattr.c
index b96222e..197c4fc 100644 (file)
@@ -175,7 +175,7 @@ vfs_listxattr(struct dentry *d, char *list, size_t size)
        if (error)
                return error;
        error = -EOPNOTSUPP;
-       if (d->d_inode->i_op && d->d_inode->i_op->listxattr) {
+       if (d->d_inode->i_op->listxattr) {
                error = d->d_inode->i_op->listxattr(d, list, size);
        } else {
                error = security_inode_listsecurity(d->d_inode, list, size);
@@ -251,47 +251,46 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
        return error;
 }
 
-asmlinkage long
-sys_setxattr(const char __user *path, const char __user *name,
-            const void __user *value, size_t size, int flags)
+SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
+               const char __user *, name, const void __user *, value,
+               size_t, size, int, flags)
 {
-       struct nameidata nd;
+       struct path path;
        int error;
 
-       error = user_path_walk(path, &nd);
+       error = user_path(pathname, &path);
        if (error)
                return error;
-       error = mnt_want_write(nd.path.mnt);
+       error = mnt_want_write(path.mnt);
        if (!error) {
-               error = setxattr(nd.path.dentry, name, value, size, flags);
-               mnt_drop_write(nd.path.mnt);
+               error = setxattr(path.dentry, name, value, size, flags);
+               mnt_drop_write(path.mnt);
        }
-       path_put(&nd.path);
+       path_put(&path);
        return error;
 }
 
-asmlinkage long
-sys_lsetxattr(const char __user *path, const char __user *name,
-             const void __user *value, size_t size, int flags)
+SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
+               const char __user *, name, const void __user *, value,
+               size_t, size, int, flags)
 {
-       struct nameidata nd;
+       struct path path;
        int error;
 
-       error = user_path_walk_link(path, &nd);
+       error = user_lpath(pathname, &path);
        if (error)
                return error;
-       error = mnt_want_write(nd.path.mnt);
+       error = mnt_want_write(path.mnt);
        if (!error) {
-               error = setxattr(nd.path.dentry, name, value, size, flags);
-               mnt_drop_write(nd.path.mnt);
+               error = setxattr(path.dentry, name, value, size, flags);
+               mnt_drop_write(path.mnt);
        }
-       path_put(&nd.path);
+       path_put(&path);
        return error;
 }
 
-asmlinkage long
-sys_fsetxattr(int fd, const char __user *name, const void __user *value,
-             size_t size, int flags)
+SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
+               const void __user *,value, size_t, size, int, flags)
 {
        struct file *f;
        struct dentry *dentry;
@@ -349,38 +348,36 @@ getxattr(struct dentry *d, const char __user *name, void __user *value,
        return error;
 }
 
-asmlinkage ssize_t
-sys_getxattr(const char __user *path, const char __user *name,
-            void __user *value, size_t size)
+SYSCALL_DEFINE4(getxattr, const char __user *, pathname,
+               const char __user *, name, void __user *, value, size_t, size)
 {
-       struct nameidata nd;
+       struct path path;
        ssize_t error;
 
-       error = user_path_walk(path, &nd);
+       error = user_path(pathname, &path);
        if (error)
                return error;
-       error = getxattr(nd.path.dentry, name, value, size);
-       path_put(&nd.path);
+       error = getxattr(path.dentry, name, value, size);
+       path_put(&path);
        return error;
 }
 
-asmlinkage ssize_t
-sys_lgetxattr(const char __user *path, const char __user *name, void __user *value,
-             size_t size)
+SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname,
+               const char __user *, name, void __user *, value, size_t, size)
 {
-       struct nameidata nd;
+       struct path path;
        ssize_t error;
 
-       error = user_path_walk_link(path, &nd);
+       error = user_lpath(pathname, &path);
        if (error)
                return error;
-       error = getxattr(nd.path.dentry, name, value, size);
-       path_put(&nd.path);
+       error = getxattr(path.dentry, name, value, size);
+       path_put(&path);
        return error;
 }
 
-asmlinkage ssize_t
-sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size)
+SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
+               void __user *, value, size_t, size)
 {
        struct file *f;
        ssize_t error = -EBADF;
@@ -424,36 +421,35 @@ listxattr(struct dentry *d, char __user *list, size_t size)
        return error;
 }
 
-asmlinkage ssize_t
-sys_listxattr(const char __user *path, char __user *list, size_t size)
+SYSCALL_DEFINE3(listxattr, const char __user *, pathname, char __user *, list,
+               size_t, size)
 {
-       struct nameidata nd;
+       struct path path;
        ssize_t error;
 
-       error = user_path_walk(path, &nd);
+       error = user_path(pathname, &path);
        if (error)
                return error;
-       error = listxattr(nd.path.dentry, list, size);
-       path_put(&nd.path);
+       error = listxattr(path.dentry, list, size);
+       path_put(&path);
        return error;
 }
 
-asmlinkage ssize_t
-sys_llistxattr(const char __user *path, char __user *list, size_t size)
+SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list,
+               size_t, size)
 {
-       struct nameidata nd;
+       struct path path;
        ssize_t error;
 
-       error = user_path_walk_link(path, &nd);
+       error = user_lpath(pathname, &path);
        if (error)
                return error;
-       error = listxattr(nd.path.dentry, list, size);
-       path_put(&nd.path);
+       error = listxattr(path.dentry, list, size);
+       path_put(&path);
        return error;
 }
 
-asmlinkage ssize_t
-sys_flistxattr(int fd, char __user *list, size_t size)
+SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
 {
        struct file *f;
        ssize_t error = -EBADF;
@@ -485,44 +481,43 @@ removexattr(struct dentry *d, const char __user *name)
        return vfs_removexattr(d, kname);
 }
 
-asmlinkage long
-sys_removexattr(const char __user *path, const char __user *name)
+SYSCALL_DEFINE2(removexattr, const char __user *, pathname,
+               const char __user *, name)
 {
-       struct nameidata nd;
+       struct path path;
        int error;
 
-       error = user_path_walk(path, &nd);
+       error = user_path(pathname, &path);
        if (error)
                return error;
-       error = mnt_want_write(nd.path.mnt);
+       error = mnt_want_write(path.mnt);
        if (!error) {
-               error = removexattr(nd.path.dentry, name);
-               mnt_drop_write(nd.path.mnt);
+               error = removexattr(path.dentry, name);
+               mnt_drop_write(path.mnt);
        }
-       path_put(&nd.path);
+       path_put(&path);
        return error;
 }
 
-asmlinkage long
-sys_lremovexattr(const char __user *path, const char __user *name)
+SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
+               const char __user *, name)
 {
-       struct nameidata nd;
+       struct path path;
        int error;
 
-       error = user_path_walk_link(path, &nd);
+       error = user_lpath(pathname, &path);
        if (error)
                return error;
-       error = mnt_want_write(nd.path.mnt);
+       error = mnt_want_write(path.mnt);
        if (!error) {
-               error = removexattr(nd.path.dentry, name);
-               mnt_drop_write(nd.path.mnt);
+               error = removexattr(path.dentry, name);
+               mnt_drop_write(path.mnt);
        }
-       path_put(&nd.path);
+       path_put(&path);
        return error;
 }
 
-asmlinkage long
-sys_fremovexattr(int fd, const char __user *name)
+SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
 {
        struct file *f;
        struct dentry *dentry;