aboutsummaryrefslogtreecommitdiffstats
path: root/arch/cris
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/cris
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/cris')
-rw-r--r--arch/cris/arch-v10/kernel/process.c4
-rw-r--r--arch/cris/arch-v32/kernel/process.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/cris/arch-v10/kernel/process.c b/arch/cris/arch-v10/kernel/process.c
index bee8df43c201..15ac7150371f 100644
--- a/arch/cris/arch-v10/kernel/process.c
+++ b/arch/cris/arch-v10/kernel/process.c
@@ -212,14 +212,14 @@ asmlinkage int sys_execve(const char *fname,
212 struct pt_regs *regs) 212 struct pt_regs *regs)
213{ 213{
214 int error; 214 int error;
215 char *filename; 215 struct filename *filename;
216 216
217 filename = getname(fname); 217 filename = getname(fname);
218 error = PTR_ERR(filename); 218 error = PTR_ERR(filename);
219 219
220 if (IS_ERR(filename)) 220 if (IS_ERR(filename))
221 goto out; 221 goto out;
222 error = do_execve(filename, argv, envp, regs); 222 error = do_execve(filename->name, argv, envp, regs);
223 putname(filename); 223 putname(filename);
224 out: 224 out:
225 return error; 225 return error;
diff --git a/arch/cris/arch-v32/kernel/process.c b/arch/cris/arch-v32/kernel/process.c
index 0570e8ce603d..4e9992246359 100644
--- a/arch/cris/arch-v32/kernel/process.c
+++ b/arch/cris/arch-v32/kernel/process.c
@@ -224,7 +224,7 @@ sys_execve(const char *fname,
224 struct pt_regs *regs) 224 struct pt_regs *regs)
225{ 225{
226 int error; 226 int error;
227 char *filename; 227 struct filename *filename;
228 228
229 filename = getname(fname); 229 filename = getname(fname);
230 error = PTR_ERR(filename); 230 error = PTR_ERR(filename);
@@ -232,7 +232,7 @@ sys_execve(const char *fname,
232 if (IS_ERR(filename)) 232 if (IS_ERR(filename))
233 goto out; 233 goto out;
234 234
235 error = do_execve(filename, argv, envp, regs); 235 error = do_execve(filename->name, argv, envp, regs);
236 putname(filename); 236 putname(filename);
237 out: 237 out:
238 return error; 238 return error;