X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fum%2Fos-Linux%2Fumid.c;h=ecf107ae5ac87704afc39021c9c178b6fc641547;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=362db059fe305d4a7276fb7c40705cb18d1a704b;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/arch/um/os-Linux/umid.c b/arch/um/os-Linux/umid.c index 362db059f..ecf107ae5 100644 --- a/arch/um/os-Linux/umid.c +++ b/arch/um/os-Linux/umid.c @@ -120,8 +120,7 @@ static int not_dead_yet(char *dir) dead = 0; fd = open(file, O_RDONLY); - if(fd < 0) { - fd = -errno; + if(fd < 0){ if(fd != -ENOENT){ printk("not_dead_yet : couldn't open pid file '%s', " "err = %d\n", file, -fd); @@ -131,13 +130,9 @@ static int not_dead_yet(char *dir) err = 0; n = read(fd, pid, sizeof(pid)); - if(n < 0){ - printk("not_dead_yet : couldn't read pid file '%s', " - "err = %d\n", file, errno); - goto out_close; - } else if(n == 0){ + if(n <= 0){ printk("not_dead_yet : couldn't read pid file '%s', " - "0-byte read\n", file); + "err = %d\n", file, -n); goto out_close; } @@ -148,10 +143,8 @@ static int not_dead_yet(char *dir) goto out_close; } - if((kill(p, 0) == 0) || (errno != ESRCH)){ - printk("umid \"%s\" is already in use by pid %d\n", umid, p); + if((kill(p, 0) == 0) || (errno != ESRCH)) return 1; - } err = actually_do_remove(dir); if(err) @@ -160,9 +153,9 @@ static int not_dead_yet(char *dir) return err; -out_close: + out_close: close(fd); -out: + out: return 0; } @@ -178,14 +171,14 @@ static void __init create_pid_file(void) fd = open(file, O_RDWR | O_CREAT | O_EXCL, 0644); if(fd < 0){ printk("Open of machine pid file \"%s\" failed: %s\n", - file, strerror(errno)); + file, strerror(-fd)); return; } snprintf(pid, sizeof(pid), "%d\n", getpid()); n = write(fd, pid, strlen(pid)); if(n != strlen(pid)) - printk("Write of pid file failed - err = %d\n", errno); + printk("Write of pid file failed - err = %d\n", -n); close(fd); } @@ -241,44 +234,33 @@ int __init make_umid(void) err = mkdir(tmp, 0777); if(err < 0){ err = -errno; - if(err != -EEXIST) + if(errno != EEXIST) goto err; - /* 1 -> this umid is already in use - * < 0 -> we couldn't remove the umid directory - * In either case, we can't use this umid, so return -EEXIST. - */ - if(not_dead_yet(tmp) != 0) + if(not_dead_yet(tmp) < 0) goto err; err = mkdir(tmp, 0777); } - if(err){ - err = -errno; - printk("Failed to create '%s' - err = %d\n", umid, -errno); - goto err; + if(err < 0){ + printk("Failed to create '%s' - err = %d\n", umid, err); + goto err_rmdir; } umid_setup = 1; create_pid_file(); - err = 0; + return 0; + + err_rmdir: + rmdir(tmp); err: return err; } static int __init make_umid_init(void) { - if(!make_umid()) - return 0; - - /* If initializing with the given umid failed, then try again with - * a random one. - */ - printk("Failed to initialize umid \"%s\", trying with a random umid\n", - umid); - *umid = '\0'; make_umid(); return 0;