linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.0-test3: setuid32(8) returns EAGAIN (WTF?!)
@ 2003-08-17  1:03 Felix von Leitner
  2003-08-18 19:43 ` Andries Brouwer
  0 siblings, 1 reply; 2+ messages in thread
From: Felix von Leitner @ 2003-08-17  1:03 UTC (permalink / raw)
  To: linux-kernel

I just changed from 2.5.75 to 2.6.0-test3 and suddenly my imap server
fails to start (it's dovecot).  It wrote to syslog:

Aug 17 02:58:02 hellhound dovecot: Dovecot starting up
Aug 17 02:58:03 hellhound imap-login: setuid(8) failed: Resource temporarily unavailable
Aug 17 02:58:03 hellhound dovecot: Login process died too early - shutting down

So I strace -f it, and sure enough, here is what happens:

[init, fork, tzfile...]
8094  chroot("/var/run/dovecot//login") = 0
8094  chdir("/")                        = 0
8094  setuid32(0x8)                     = -1 EAGAIN (Resource temporarily unavailable)

Now this does not appear to be a valid return value for setuid32, and
my understanding of POSIX and Susv3 is that dovecot is absolutely right
in barfing at this.

Why is this happening?  Please fix!

Felix

PS: Time for a brown paper bag bug-fix release, if you ask me.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: 2.6.0-test3: setuid32(8) returns EAGAIN (WTF?!)
  2003-08-17  1:03 2.6.0-test3: setuid32(8) returns EAGAIN (WTF?!) Felix von Leitner
@ 2003-08-18 19:43 ` Andries Brouwer
  0 siblings, 0 replies; 2+ messages in thread
From: Andries Brouwer @ 2003-08-18 19:43 UTC (permalink / raw)
  To: Felix von Leitner; +Cc: linux-kernel

On Sun, Aug 17, 2003 at 03:03:36AM +0200, Felix von Leitner wrote:
> I just changed from 2.5.75 to 2.6.0-test3 and suddenly my imap server
> fails to start (it's dovecot).  It wrote to syslog:
> 
> Aug 17 02:58:02 hellhound dovecot: Dovecot starting up
> Aug 17 02:58:03 hellhound imap-login: setuid(8) failed: Resource temporarily unavailable
> Aug 17 02:58:03 hellhound dovecot: Login process died too early - shutting down
> 
> So I strace -f it, and sure enough, here is what happens:
> 
> [init, fork, tzfile...]
> 8094  chroot("/var/run/dovecot//login") = 0
> 8094  chdir("/")                        = 0
> 8094  setuid32(0x8)                     = -1 EAGAIN (Resource temporarily unavailable)
> 
> Why is this happening?

In sys.c:set_user() we see

        if (atomic_read(&new_user->processes) >=
                                current->rlim[RLIMIT_NPROC].rlim_cur &&
                        new_user != &root_user) {
                free_uid(new_user);
                return -EAGAIN;
        }

which was added in patch-2.6.0-test2.
No doubt this causes your problem.

You might check what values these variables have for you.

Andries


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-08-18 19:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-17  1:03 2.6.0-test3: setuid32(8) returns EAGAIN (WTF?!) Felix von Leitner
2003-08-18 19:43 ` Andries Brouwer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).