[PATCH] sys_open() cleanup
Clean up tortured logic in sys_open(). Signed-off-by: Telemaque Ndizihiwe <telendiz@eircom.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
64ccd715d3
Коммит
fed2fc18a4
18
fs/open.c
18
fs/open.c
|
@ -934,7 +934,7 @@ EXPORT_SYMBOL(fd_install);
|
|||
asmlinkage long sys_open(const char __user * filename, int flags, int mode)
|
||||
{
|
||||
char * tmp;
|
||||
int fd, error;
|
||||
int fd;
|
||||
|
||||
if (force_o_largefile())
|
||||
flags |= O_LARGEFILE;
|
||||
|
@ -945,20 +945,16 @@ asmlinkage long sys_open(const char __user * filename, int flags, int mode)
|
|||
fd = get_unused_fd();
|
||||
if (fd >= 0) {
|
||||
struct file *f = filp_open(tmp, flags, mode);
|
||||
error = PTR_ERR(f);
|
||||
if (IS_ERR(f))
|
||||
goto out_error;
|
||||
fd_install(fd, f);
|
||||
if (IS_ERR(f)) {
|
||||
put_unused_fd(fd);
|
||||
fd = PTR_ERR(f);
|
||||
} else {
|
||||
fd_install(fd, f);
|
||||
}
|
||||
}
|
||||
out:
|
||||
putname(tmp);
|
||||
}
|
||||
return fd;
|
||||
|
||||
out_error:
|
||||
put_unused_fd(fd);
|
||||
fd = error;
|
||||
goto out;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sys_open);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче