[PATCH] fix udevd zombies
The recent version of klibc switched to -mregparm=3. This broke the signal handlers parameter, cause it is called directly from the kernel with the parameter on the stack not in a register.
This commit is contained in:
committed by
Greg KH
parent
0f36e68e8a
commit
47bf9196c6
@@ -55,7 +55,7 @@ void log_message(int level, const char *format, ...)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void sig_handler(int signum)
|
||||
__attribute__((regparm(0))) static void sig_handler(int signum)
|
||||
{
|
||||
switch (signum) {
|
||||
case SIGINT:
|
||||
@@ -63,7 +63,7 @@ static void sig_handler(int signum)
|
||||
udevdb_exit();
|
||||
exit(20 + signum);
|
||||
default:
|
||||
dbg("unhandled signal");
|
||||
dbg("unhandled signal %d", signum);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ static int udev_hotplug(void)
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* set up a default signal handler for now */
|
||||
/* set signal handlers */
|
||||
act.sa_handler = sig_handler;
|
||||
sigemptyset (&act.sa_mask);
|
||||
act.sa_flags = SA_RESTART;
|
||||
|
||||
@@ -306,9 +306,10 @@ skip:
|
||||
return;
|
||||
}
|
||||
|
||||
static void sig_handler(int signum)
|
||||
__attribute__((regparm(0))) static void sig_handler(int signum)
|
||||
{
|
||||
int rc;
|
||||
|
||||
switch (signum) {
|
||||
case SIGINT:
|
||||
case SIGTERM:
|
||||
@@ -325,7 +326,7 @@ static void sig_handler(int signum)
|
||||
goto do_write;
|
||||
break;
|
||||
default:
|
||||
dbg("unhandled signal");
|
||||
dbg("unhandled signal %d", signum);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user