aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2012-10-10 15:25:28 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-10-12 20:14:55 -0400
commit91a27b2a756784714e924e5e854b919273082d26 (patch)
tree3913246b7d6e62703ec915f481e3a7159393f0f0 /arch/tile
parent8e377d15078a501c4da98471f56396343c407d92 (diff)
vfs: define struct filename and have getname() return it
getname() is intended to copy pathname strings from userspace into a kernel buffer. The result is just a string in kernel space. It would however be quite helpful to be able to attach some ancillary info to the string. For instance, we could attach some audit-related info to reduce the amount of audit-related processing needed. When auditing is enabled, we could also call getname() on the string more than once and not need to recopy it from userspace. This patchset converts the getname()/putname() interfaces to return a struct instead of a string. For now, the struct just tracks the string in kernel space and the original userland pointer for it. Later, we'll add other information to the struct as it becomes convenient. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/tile')
-rw-r--r--arch/tile/kernel/process.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c
index 6be799150501..622560030a58 100644
--- a/arch/tile/kernel/process.c
+++ b/arch/tile/kernel/process.c
@@ -594,13 +594,13 @@ SYSCALL_DEFINE4(execve, const char __user *, path,
594 struct pt_regs *, regs) 594 struct pt_regs *, regs)
595{ 595{
596 long error; 596 long error;
597 char *filename; 597 struct filename *filename;
598 598
599 filename = getname(path); 599 filename = getname(path);
600 error = PTR_ERR(filename); 600 error = PTR_ERR(filename);
601 if (IS_ERR(filename)) 601 if (IS_ERR(filename))
602 goto out; 602 goto out;
603 error = do_execve(filename, argv, envp, regs); 603 error = do_execve(filename->name, argv, envp, regs);
604 putname(filename); 604 putname(filename);
605 if (error == 0) 605 if (error == 0)
606 single_step_execve(); 606 single_step_execve();
@@ -615,13 +615,13 @@ long compat_sys_execve(const char __user *path,
615 struct pt_regs *regs) 615 struct pt_regs *regs)
616{ 616{
617 long error; 617 long error;
618 char *filename; 618 struct filename *filename;
619 619
620 filename = getname(path); 620 filename = getname(path);
621 error = PTR_ERR(filename); 621 error = PTR_ERR(filename);
622 if (IS_ERR(filename)) 622 if (IS_ERR(filename))
623 goto out; 623 goto out;
624 error = compat_do_execve(filename, argv, envp, regs); 624 error = compat_do_execve(filename->name, argv, envp, regs);
625 putname(filename); 625 putname(filename);
626 if (error == 0) 626 if (error == 0)
627 single_step_execve(); 627 single_step_execve();