From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Friesen Date: Tue, 16 Mar 2004 05:20:30 +0000 Subject: race conditions in udevd Message-Id: <40568E9E.1080809@sympatico.ca> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org I just realized that we've got some gaping flaws in the udevd signal handler logic. Currently the actual signal handler sets various flags. We then wait for an incoming message and handle it, then check the flags to see if we need to do various things.. The problem is, if we get SIGALRM or SIGCHLD before we get back to recvmsg(), we'll wait there until the next message comes in--which could be quite a while. Sorry guys, I screwed up in my original patch, and it took until now to see it. The fix is straightforward. In the init code we create a pipe. In the signal handler we write a byte (based on what signal came in) to the pipe. We add a select() in the main loop that listens on the pipe and on the unix socket. When the unix socket is readable, we run the existing recvmsg() code. When the pipe is readable, we read the byte and run the appropriate code. I don't have time to send a patch tonight, but will do so in the next few days if nobody beats me to it. Chris ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel