Fix an fd leak and a return of -1 instead of -errno in the error path - this
showed up in intensive testing of HPPFS, the os_connect_socket user.
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Acked-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
        snprintf(sock.sun_path, sizeof(sock.sun_path), "%s", name);
 
        fd = socket(AF_UNIX, SOCK_STREAM, 0);
-       if(fd < 0)
-               return(fd);
+       if(fd < 0) {
+               err = -errno;
+               goto out;
+       }
 
        err = connect(fd, (struct sockaddr *) &sock, sizeof(sock));
-       if(err)
-               return(-errno);
+       if(err) {
+               err = -errno;
+               goto out_close;
+       }
 
-       return(fd);
+       return fd;
+
+out_close:
+       close(fd);
+out:
+       return err;
 }
 
 void os_close_file(int fd)