Index: util-linux-ng-2.14/login-utils/login.c
===================================================================
--- util-linux-ng-2.14.orig/login-utils/login.c	2008-05-28 16:01:02.000000000 -0700
+++ util-linux-ng-2.14/login-utils/login.c	2009-03-04 18:31:42.000000000 -0800
@@ -358,6 +358,7 @@
     char *childArgv[10];
     char *buff;
     int childArgc = 0;
+    struct sigaction act;
 #ifdef HAVE_SECURITY_PAM_MISC_H
     int retcode;
     pam_handle_t *pamh = NULL;
@@ -373,7 +374,9 @@
     pid = getpid();
 
     signal(SIGALRM, timedout);
-    siginterrupt(SIGALRM,1);           /* we have to interrupt syscalls like ioclt() */
+    (void) sigaction(SIGALRM, NULL, &act);
+    act.sa_flags &= ~SA_RESTART;
+    sigaction(SIGALRM, &act, NULL);
     alarm((unsigned int)timeout);
     signal(SIGQUIT, SIG_IGN);
     signal(SIGINT, SIG_IGN);
