Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / um / drivers / daemon_user.c
index de71aec..c944265 100644 (file)
@@ -53,7 +53,8 @@ static int connect_to_switch(struct daemon_data *pri)
        struct request_v3 req;
        int fd, n, err;
 
-       if((pri->control = socket(AF_UNIX, SOCK_STREAM, 0)) < 0){
+       pri->control = socket(AF_UNIX, SOCK_STREAM, 0);
+       if(pri->control < 0){
                printk("daemon_open : control socket failed, errno = %d\n", 
                       errno);          
                return(-errno);
@@ -67,7 +68,8 @@ static int connect_to_switch(struct daemon_data *pri)
                goto out;
        }
 
-       if((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0){
+       fd = socket(AF_UNIX, SOCK_DGRAM, 0);
+       if(fd < 0){
                printk("daemon_open : data socket failed, errno = %d\n", 
                       errno);
                err = -errno;
@@ -91,29 +93,31 @@ static int connect_to_switch(struct daemon_data *pri)
        req.version = SWITCH_VERSION;
        req.type = REQ_NEW_CONTROL;
        req.sock = *local_addr;
-       n = write(pri->control, &req, sizeof(req));
+       n = os_write_file(pri->control, &req, sizeof(req));
        if(n != sizeof(req)){
-               printk("daemon_open : control setup request returned %d, "
-                      "errno = %d\n", n, errno);
+               printk("daemon_open : control setup request failed, err = %d\n",
+                      -n);
                err = -ENOTCONN;
-               goto out;               
+               goto out_free;
        }
 
-       n = read(pri->control, sun, sizeof(*sun));
+       n = os_read_file(pri->control, sun, sizeof(*sun));
        if(n != sizeof(*sun)){
-               printk("daemon_open : read of data socket returned %d, "
-                      "errno = %d\n", n, errno);
+               printk("daemon_open : read of data socket failed, err = %d\n",
+                      -n);
                err = -ENOTCONN;
-               goto out_close;         
+               goto out_free;
        }
 
        pri->data_addr = sun;
        return(fd);
 
+ out_free:
+       kfree(sun);
  out_close:
-       close(fd);
+       os_close_file(fd);
  out:
-       close(pri->control);
+       os_close_file(pri->control);
        return(err);
 }
 
@@ -153,11 +157,17 @@ static void daemon_remove(void *data)
 {
        struct daemon_data *pri = data;
 
-       close(pri->fd);
-       close(pri->control);
-       if(pri->data_addr != NULL) kfree(pri->data_addr);
-       if(pri->ctl_addr != NULL) kfree(pri->ctl_addr);
-       if(pri->local_addr != NULL) kfree(pri->local_addr);
+       os_close_file(pri->fd);
+       pri->fd = -1;
+       os_close_file(pri->control);
+       pri->control = -1;
+
+       kfree(pri->data_addr);
+       pri->data_addr = NULL;
+       kfree(pri->ctl_addr);
+       pri->ctl_addr = NULL;
+       kfree(pri->local_addr);
+       pri->local_addr = NULL;
 }
 
 int daemon_user_write(int fd, void *buf, int len, struct daemon_data *pri)