mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs changes from Al Viro.
"A lot of misc stuff. The obvious groups:
* Miklos' atomic_open series; kills the damn abuse of
->d_revalidate() by NFS, which was the major stumbling block for
all work in that area.
* ripping security_file_mmap() and dealing with deadlocks in the
area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in
general.
* ->encode_fh() switched to saner API; insane fake dentry in
mm/cleancache.c gone.
* assorted annotations in fs (endianness, __user)
* parts of Artem's ->s_dirty work (jff2 and reiserfs parts)
* ->update_time() work from Josef.
* other bits and pieces all over the place.
Normally it would've been in two or three pull requests, but
signal.git stuff had eaten a lot of time during this cycle ;-/"
Fix up trivial conflicts in Documentation/filesystems/vfs.txt (the
'truncate_range' inode method was removed by the VM changes, the VFS
update adds an 'update_time()' method), and in fs/btrfs/ulist.[ch] (due
to sparse fix added twice, with other changes nearby).
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)
nfs: don't open in ->d_revalidate
vfs: retry last component if opening stale dentry
vfs: nameidata_to_filp(): don't throw away file on error
vfs: nameidata_to_filp(): inline __dentry_open()
vfs: do_dentry_open(): don't put filp
vfs: split __dentry_open()
vfs: do_last() common post lookup
vfs: do_last(): add audit_inode before open
vfs: do_last(): only return EISDIR for O_CREAT
vfs: do_last(): check LOOKUP_DIRECTORY
vfs: do_last(): make ENOENT exit RCU safe
vfs: make follow_link check RCU safe
vfs: do_last(): use inode variable
vfs: do_last(): inline walk_component()
vfs: do_last(): make exit RCU safe
vfs: split do_lookup()
Btrfs: move over to use ->update_time
fs: introduce inode operation ->update_time
reiserfs: get rid of resierfs_sync_super
reiserfs: mark the superblock as dirty a bit later
...
This commit is contained in:
commit
1193755ac6
148 changed files with 1495 additions and 1618 deletions
33
fs/compat.c
33
fs/compat.c
|
|
@ -871,12 +871,12 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
|
|||
{
|
||||
int error;
|
||||
struct file *file;
|
||||
int fput_needed;
|
||||
struct compat_readdir_callback buf;
|
||||
|
||||
error = -EBADF;
|
||||
file = fget(fd);
|
||||
file = fget_light(fd, &fput_needed);
|
||||
if (!file)
|
||||
goto out;
|
||||
return -EBADF;
|
||||
|
||||
buf.result = 0;
|
||||
buf.dirent = dirent;
|
||||
|
|
@ -885,8 +885,7 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
|
|||
if (buf.result)
|
||||
error = buf.result;
|
||||
|
||||
fput(file);
|
||||
out:
|
||||
fput_light(file, fput_needed);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
|
@ -953,16 +952,15 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
|
|||
struct file * file;
|
||||
struct compat_linux_dirent __user * lastdirent;
|
||||
struct compat_getdents_callback buf;
|
||||
int fput_needed;
|
||||
int error;
|
||||
|
||||
error = -EFAULT;
|
||||
if (!access_ok(VERIFY_WRITE, dirent, count))
|
||||
goto out;
|
||||
return -EFAULT;
|
||||
|
||||
error = -EBADF;
|
||||
file = fget(fd);
|
||||
file = fget_light(fd, &fput_needed);
|
||||
if (!file)
|
||||
goto out;
|
||||
return -EBADF;
|
||||
|
||||
buf.current_dir = dirent;
|
||||
buf.previous = NULL;
|
||||
|
|
@ -979,8 +977,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
|
|||
else
|
||||
error = count - buf.count;
|
||||
}
|
||||
fput(file);
|
||||
out:
|
||||
fput_light(file, fput_needed);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
|
@ -1041,16 +1038,15 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
|
|||
struct file * file;
|
||||
struct linux_dirent64 __user * lastdirent;
|
||||
struct compat_getdents_callback64 buf;
|
||||
int fput_needed;
|
||||
int error;
|
||||
|
||||
error = -EFAULT;
|
||||
if (!access_ok(VERIFY_WRITE, dirent, count))
|
||||
goto out;
|
||||
return -EFAULT;
|
||||
|
||||
error = -EBADF;
|
||||
file = fget(fd);
|
||||
file = fget_light(fd, &fput_needed);
|
||||
if (!file)
|
||||
goto out;
|
||||
return -EBADF;
|
||||
|
||||
buf.current_dir = dirent;
|
||||
buf.previous = NULL;
|
||||
|
|
@ -1068,8 +1064,7 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
|
|||
else
|
||||
error = count - buf.count;
|
||||
}
|
||||
fput(file);
|
||||
out:
|
||||
fput_light(file, fput_needed);
|
||||
return error;
|
||||
}
|
||||
#endif /* ! __ARCH_OMIT_COMPAT_SYS_GETDENTS64 */
|
||||
|
|
|
|||
Loading…
Reference in a new issue