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>
 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;
                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);