git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eCryptfs: don't encrypt file key with filename key
[safe/jmp/linux-2.6]
/
fs
/
namei.c
diff --git
a/fs/namei.c
b/fs/namei.c
index
1f6656c
..
bbc15c2
100644
(file)
--- a/
fs/namei.c
+++ b/
fs/namei.c
@@
-1962,8
+1962,8
@@
static int may_mknod(mode_t mode)
}
}
}
}
-
asmlinkage long sys_mknodat(int dfd, const char __user *filename, int
mode,
-
unsigned
dev)
+
SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int,
mode,
+
unsigned,
dev)
{
int error;
char *tmp;
{
int error;
char *tmp;
@@
-2017,7
+2017,7
@@
out_unlock:
return error;
}
return error;
}
-
asmlinkage long sys_mknod(const char __user *filename, int mode, unsigned
dev)
+
SYSCALL_DEFINE3(mknod, const char __user *, filename, int, mode, unsigned,
dev)
{
return sys_mknodat(AT_FDCWD, filename, mode, dev);
}
{
return sys_mknodat(AT_FDCWD, filename, mode, dev);
}
@@
-2044,7
+2044,7
@@
int vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
return error;
}
return error;
}
-
asmlinkage long sys_mkdirat(int dfd, const char __user *pathname, int
mode)
+
SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int,
mode)
{
int error = 0;
char * tmp;
{
int error = 0;
char * tmp;
@@
-2081,7
+2081,7
@@
out_err:
return error;
}
return error;
}
-
asmlinkage long sys_mkdir(const char __user *pathname, int
mode)
+
SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int,
mode)
{
return sys_mkdirat(AT_FDCWD, pathname, mode);
}
{
return sys_mkdirat(AT_FDCWD, pathname, mode);
}
@@
-2195,7
+2195,7
@@
exit1:
return error;
}
return error;
}
-
asmlinkage long sys_rmdir(const char __user *
pathname)
+
SYSCALL_DEFINE1(rmdir, const char __user *,
pathname)
{
return do_rmdir(AT_FDCWD, pathname);
}
{
return do_rmdir(AT_FDCWD, pathname);
}
@@
-2291,7
+2291,7
@@
slashes:
goto exit2;
}
goto exit2;
}
-
asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int
flag)
+
SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int,
flag)
{
if ((flag & ~AT_REMOVEDIR) != 0)
return -EINVAL;
{
if ((flag & ~AT_REMOVEDIR) != 0)
return -EINVAL;
@@
-2302,7
+2302,7
@@
asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag)
return do_unlinkat(dfd, pathname);
}
return do_unlinkat(dfd, pathname);
}
-
asmlinkage long sys_unlink(const char __user *
pathname)
+
SYSCALL_DEFINE1(unlink, const char __user *,
pathname)
{
return do_unlinkat(AT_FDCWD, pathname);
}
{
return do_unlinkat(AT_FDCWD, pathname);
}
@@
-2328,8
+2328,8
@@
int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
return error;
}
return error;
}
-
asmlinkage long sys_symlinkat(const char __user *
oldname,
-
int newdfd, const char __user *
newname)
+
SYSCALL_DEFINE3(symlinkat, const char __user *,
oldname,
+
int, newdfd, const char __user *,
newname)
{
int error;
char *from;
{
int error;
char *from;
@@
-2370,7
+2370,7
@@
out_putname:
return error;
}
return error;
}
-
asmlinkage long sys_symlink(const char __user *oldname, const char __user *
newname)
+
SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *,
newname)
{
return sys_symlinkat(oldname, AT_FDCWD, newname);
}
{
return sys_symlinkat(oldname, AT_FDCWD, newname);
}
@@
-2422,9
+2422,8
@@
int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_de
* with linux 2.0, and to avoid hard-linking to directories
* and other special files. --ADM
*/
* with linux 2.0, and to avoid hard-linking to directories
* and other special files. --ADM
*/
-asmlinkage long sys_linkat(int olddfd, const char __user *oldname,
- int newdfd, const char __user *newname,
- int flags)
+SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+ int, newdfd, const char __user *, newname, int, flags)
{
struct dentry *new_dentry;
struct nameidata nd;
{
struct dentry *new_dentry;
struct nameidata nd;
@@
-2473,7
+2472,7
@@
out:
return error;
}
return error;
}
-
asmlinkage long sys_link(const char __user *oldname, const char __user *
newname)
+
SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *,
newname)
{
return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
}
{
return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
}
@@
-2624,8
+2623,8
@@
int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
return error;
}
return error;
}
-
asmlinkage long sys_renameat(int olddfd, const char __user *
oldname,
-
int newdfd, const char __user *
newname)
+
SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *,
oldname,
+
int, newdfd, const char __user *,
newname)
{
struct dentry *old_dir, *new_dir;
struct dentry *old_dentry, *new_dentry;
{
struct dentry *old_dir, *new_dir;
struct dentry *old_dentry, *new_dentry;
@@
-2718,7
+2717,7
@@
exit:
return error;
}
return error;
}
-
asmlinkage long sys_rename(const char __user *oldname, const char __user *
newname)
+
SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *,
newname)
{
return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
}
{
return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
}
@@
-2811,18
+2810,23
@@
void page_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
}
}
}
}
-int __page_symlink(struct inode *inode, const char *symname, int len,
- gfp_t gfp_mask)
+/*
+ * The nofs argument instructs pagecache_write_begin to pass AOP_FLAG_NOFS
+ */
+int __page_symlink(struct inode *inode, const char *symname, int len, int nofs)
{
struct address_space *mapping = inode->i_mapping;
struct page *page;
void *fsdata;
int err;
char *kaddr;
{
struct address_space *mapping = inode->i_mapping;
struct page *page;
void *fsdata;
int err;
char *kaddr;
+ unsigned int flags = AOP_FLAG_UNINTERRUPTIBLE;
+ if (nofs)
+ flags |= AOP_FLAG_NOFS;
retry:
err = pagecache_write_begin(NULL, mapping, 0, len-1,
retry:
err = pagecache_write_begin(NULL, mapping, 0, len-1,
-
AOP_FLAG_UNINTERRUPTIBLE
, &page, &fsdata);
+
flags
, &page, &fsdata);
if (err)
goto fail;
if (err)
goto fail;
@@
-2846,7
+2850,7
@@
fail:
int page_symlink(struct inode *inode, const char *symname, int len)
{
return __page_symlink(inode, symname, len,
int page_symlink(struct inode *inode, const char *symname, int len)
{
return __page_symlink(inode, symname, len,
-
mapping_gfp_mask(inode->i_mapping
));
+
!(mapping_gfp_mask(inode->i_mapping) & __GFP_FS
));
}
const struct inode_operations page_symlink_inode_operations = {
}
const struct inode_operations page_symlink_inode_operations = {