[PATCH] um: fix errno usage

Avoid reusing userspace errno twice - it can be cleared by libc code
everywhere (in particular printk() does clear it in my setup).

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Acked-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Paolo 'Blaisorblade' Giarrusso and committed by
Linus Torvalds
de7b37cd 0f97869d

+9 -8
+9 -8
arch/um/drivers/daemon_user.c
··· 56 57 pri->control = socket(AF_UNIX, SOCK_STREAM, 0); 58 if(pri->control < 0){ 59 printk("daemon_open : control socket failed, errno = %d\n", 60 - errno); 61 - return(-errno); 62 } 63 64 if(connect(pri->control, (struct sockaddr *) ctl_addr, 65 sizeof(*ctl_addr)) < 0){ 66 - printk("daemon_open : control connect failed, errno = %d\n", 67 - errno); 68 err = -errno; 69 goto out; 70 } 71 72 fd = socket(AF_UNIX, SOCK_DGRAM, 0); 73 if(fd < 0){ 74 - printk("daemon_open : data socket failed, errno = %d\n", 75 - errno); 76 err = -errno; 77 goto out; 78 } 79 if(bind(fd, (struct sockaddr *) local_addr, sizeof(*local_addr)) < 0){ 80 - printk("daemon_open : data bind failed, errno = %d\n", 81 - errno); 82 err = -errno; 83 goto out_close; 84 } 85
··· 56 57 pri->control = socket(AF_UNIX, SOCK_STREAM, 0); 58 if(pri->control < 0){ 59 + err = -errno; 60 printk("daemon_open : control socket failed, errno = %d\n", 61 + -err); 62 + return err; 63 } 64 65 if(connect(pri->control, (struct sockaddr *) ctl_addr, 66 sizeof(*ctl_addr)) < 0){ 67 err = -errno; 68 + printk("daemon_open : control connect failed, errno = %d\n", 69 + -err); 70 goto out; 71 } 72 73 fd = socket(AF_UNIX, SOCK_DGRAM, 0); 74 if(fd < 0){ 75 err = -errno; 76 + printk("daemon_open : data socket failed, errno = %d\n", 77 + -err); 78 goto out; 79 } 80 if(bind(fd, (struct sockaddr *) local_addr, sizeof(*local_addr)) < 0){ 81 err = -errno; 82 + printk("daemon_open : data bind failed, errno = %d\n", 83 + -err); 84 goto out_close; 85 } 86