Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8418263e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull third pile of VFS updates from Al Viro:
 "Stuff from Jeff Layton, mostly.  Sanitizing interplay between audit
  and namei, removing a lot of insanity from audit_inode() mess and
  getting things ready for his ESTALE patchset."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  procfs: don't need a PATH_MAX allocation to hold a string representation of an int
  vfs: embed struct filename inside of names_cache allocation if possible
  audit: make audit_inode take struct filename
  vfs: make path_openat take a struct filename pointer
  vfs: turn do_path_lookup into wrapper around struct filename variant
  audit: allow audit code to satisfy getname requests from its names_list
  vfs: define struct filename and have getname() return it
  vfs: unexport getname and putname symbols
  acct: constify the name arg to acct_on
  vfs: allocate page instead of names_cache buffer in mount_block_root
  audit: overhaul __audit_inode_child to accomodate retrying
  audit: optimize audit_compare_dname_path
  audit: make audit_compare_dname_path use parent_len helper
  audit: remove dirlen argument to audit_compare_dname_path
  audit: set the name_len in audit_inode for parent lookups
  audit: add a new "type" field to audit_names struct
  audit: reverse arguments to audit_inode_child
  audit: no need to walk list in audit_inode if name is NULL
  audit: pass in dentry to audit_copy_inode wherever possible
  audit: remove unnecessary NULL ptr checks from do_path_lookup
parents ccff9b1d f81700bd
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -449,7 +449,7 @@ osf_ufs_mount(char *dirname, struct ufs_args __user *args, int flags)
{
	int retval;
	struct cdfs_args tmp;
	char *devname;
	struct filename *devname;

	retval = -EFAULT;
	if (copy_from_user(&tmp, args, sizeof(tmp)))
@@ -458,7 +458,7 @@ osf_ufs_mount(char *dirname, struct ufs_args __user *args, int flags)
	retval = PTR_ERR(devname);
	if (IS_ERR(devname))
		goto out;
	retval = do_mount(devname, dirname, "ext2", flags, NULL);
	retval = do_mount(devname->name, dirname, "ext2", flags, NULL);
	putname(devname);
 out:
	return retval;
@@ -469,7 +469,7 @@ osf_cdfs_mount(char *dirname, struct cdfs_args __user *args, int flags)
{
	int retval;
	struct cdfs_args tmp;
	char *devname;
	struct filename *devname;

	retval = -EFAULT;
	if (copy_from_user(&tmp, args, sizeof(tmp)))
@@ -478,7 +478,7 @@ osf_cdfs_mount(char *dirname, struct cdfs_args __user *args, int flags)
	retval = PTR_ERR(devname);
	if (IS_ERR(devname))
		goto out;
	retval = do_mount(devname, dirname, "iso9660", flags, NULL);
	retval = do_mount(devname->name, dirname, "iso9660", flags, NULL);
	putname(devname);
 out:
	return retval;
@@ -499,7 +499,7 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
		int, flag, void __user *, data)
{
	int retval;
	char *name;
	struct filename *name;

	name = getname(path);
	retval = PTR_ERR(name);
@@ -507,13 +507,13 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
		goto out;
	switch (typenr) {
	case 1:
		retval = osf_ufs_mount(name, data, flag);
		retval = osf_ufs_mount(name->name, data, flag);
		break;
	case 6:
		retval = osf_cdfs_mount(name, data, flag);
		retval = osf_cdfs_mount(name->name, data, flag);
		break;
	case 9:
		retval = osf_procfs_mount(name, data, flag);
		retval = osf_procfs_mount(name->name, data, flag);
		break;
	default:
		retval = -EINVAL;
+2 −2
Original line number Diff line number Diff line
@@ -50,13 +50,13 @@ asmlinkage long sys_execve(const char __user *filenamei,
			   struct pt_regs *regs)
{
	long error;
	char * filename;
	struct filename *filename;

	filename = getname(filenamei);
	error = PTR_ERR(filename);
	if (IS_ERR(filename))
		goto out;
	error = do_execve(filename, argv, envp, regs);
	error = do_execve(filename->name, argv, envp, regs);
	putname(filename);
out:
	return error;
+3 −3
Original line number Diff line number Diff line
@@ -56,14 +56,14 @@ asmlinkage int compat_sys_execve(const char __user *filenamei,
				 struct pt_regs *regs)
{
	int error;
	char * filename;
	struct filename *filename;

	filename = getname(filenamei);
	error = PTR_ERR(filename);
	if (IS_ERR(filename))
		goto out;
	error = compat_do_execve(filename, compat_ptr(argv), compat_ptr(envp),
				 regs);
	error = compat_do_execve(filename->name, compat_ptr(argv),
					compat_ptr(envp), regs);
	putname(filename);
out:
	return error;
+2 −2
Original line number Diff line number Diff line
@@ -388,14 +388,14 @@ asmlinkage int sys_execve(const char __user *ufilename,
			  struct pt_regs *regs)
{
	int error;
	char *filename;
	struct filename *filename;

	filename = getname(ufilename);
	error = PTR_ERR(filename);
	if (IS_ERR(filename))
		goto out;

	error = do_execve(filename, uargv, uenvp, regs);
	error = do_execve(filename->name, uargv, uenvp, regs);
	putname(filename);

out:
+2 −2
Original line number Diff line number Diff line
@@ -213,14 +213,14 @@ asmlinkage int sys_execve(const char __user *name,
			  const char __user *const __user *envp)
{
	int error;
	char *filename;
	struct filename *filename;
	struct pt_regs *regs = (struct pt_regs *)((&name) + 6);

	filename = getname(name);
	error = PTR_ERR(filename);
	if (IS_ERR(filename))
		return error;
	error = do_execve(filename, argv, envp, regs);
	error = do_execve(filename->name, argv, envp, regs);
	putname(filename);
	return error;
}
Loading