Messages in this thread | | | Date | Fri, 18 Jan 2002 22:08:26 +0100 | From | Pavel Machek <> | Subject | 2.4.17: sys_sigsuspend does not return value |
| |
Hi!
From 2.4.17:
asmlinkage int sys_sigsuspend(int history0, int history1, old_sigset_t mask) { struct pt_regs * regs = (struct pt_regs *) &history0; sigset_t saveset;
mask &= _BLOCKABLE; spin_lock_irq(¤t->sigmask_lock); saveset = current->blocked; siginitset(¤t->blocked, mask); recalc_sigpending(current); spin_unlock_irq(¤t->sigmask_lock);
regs->eax = -EINTR; while (1) { current->state = TASK_INTERRUPTIBLE; schedule(); if (do_signal(regs, &saveset)) return -EINTR; } }
...Which looks to me like it returns something undefined when do_signal returns 0. What prevents gcc from having "top secret" value in eax, and from returning that value to userspace? Pavel -- (about SSSCA) "I don't say this lightly. However, I really think that the U.S. no longer is classifiable as a democracy, but rather as a plutocracy." --hpa - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |