Merge master.kernel.org:/home/rmk/linux-2.6-arm
[powerpc.git] / arch / um / os-Linux / file.c
index f55773c..0925133 100644 (file)
@@ -171,7 +171,7 @@ int os_sigio_async(int master, int slave)
 
        flags = fcntl(master, F_GETFL);
        if(flags < 0)
-               return errno;
+               return -errno;
 
        if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) ||
           (fcntl(master, F_SETOWN, os_getpid()) < 0))
@@ -272,14 +272,23 @@ int os_connect_socket(char *name)
        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)