Date: Thu, 24 Sep 2009 10:30:10 GMT From: Jacob Myers <jacob@whotookspaz.org> To: freebsd-net@FreeBSD.org Subject: Re: kern/138999: [libc] lighttpd/php-cgi with freebsd sendfile(2) enabled causing kernel to not reenter userland Message-ID: <200909241030.n8OAUAg4072397@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/138999; it has been noted by GNATS. From: Jacob Myers <jacob@whotookspaz.org> To: bug-followup@FreeBSD.org, jacob@whotookspaz.org Cc: Subject: Re: kern/138999: [libc] lighttpd/php-cgi with freebsd sendfile(2) enabled causing kernel to not reenter userland Date: Thu, 24 Sep 2009 05:51:38 -0400 This is a multi-part message in MIME format. --------------040709090100010605060305 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Er, whoops. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.13 (FreeBSD) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIcBAEBAgAGBQJKu0EoAAoJEA933foYakKkoi0P/0eZ3z9frqhqacfcgwJEtXro 6e+cVyqdUp4LsQuh4198jrhuA6IXxAHVUB6JP5wkThA7ml0h5Jwd4w/LV2fPlFvC F8rYxyLZvrHenUWJoJELyZLt5B4P6QgwLD6+l1nyW6vE4IZZmnfqX9nqbE101xq8 tBcx1THXWAGgd+nrswDfKv5Y7QPzMjdCGA5vfnCQ9TQREoqgvCz0kuWKfHE3SpFc Pg2d/fyUwHNXOqJbU2N+HLqht+MT5wL/SAitDd5h4sUUtzi9cQ3h1niHwed+ctTP evsek0wdmfaVcdURNtLGYDos7OAszdVF2yKZO+I2IYiOhDZnGtVrLxM1BPYIcT7R xnUzIw5/A/u3raNpfkmHKbZkqOLZhu4IqFWmdLUjzKo/LvNoEMsIwIU7Zdcxro7s gYo5hGw9y2TNBQVOuZLC1/UN6vvAM7/MwL/AdVmP1wbyShg3t6n3pez/o95fy/Iq 4uTqYqQFgbFAZtURXnVm/0x5TjZJKvlSUcE7ckzRhzNOifaO4mEyEIHIPd0EIkdd qqzQ2OGnAUFXkRqCj15CIDx/qLo5O0jhmy9cCBX/BO4AVwvBXEdPMLl2x9IBTizr N5QIvEPUY3X9LNZgE5jcbt1hnSq1fmurkfX/ECJ1i4NAv4NhWLGEmeEwrWRtUIin DzvqkA+brIyLdZKGTmq0 =X+6G -----END PGP SIGNATURE----- --------------040709090100010605060305 Content-Type: text/plain; name="sendfile.sh" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="sendfile.sh" # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # sendfile/lighttpd.conf # sendfile/upload.php # sendfile/uploader.php # echo x - sendfile/lighttpd.conf sed 's/^X//' >sendfile/lighttpd.conf << '13d6c5353933d78bbe99686dc1205d95' Xserver.modules = ( "mod_access", X "mod_fastcgi") X Xserver.document-root = "/usr/local/www/default/" Xserver.errorlog = "/var/log/lighttpd/default/error.log" X Xindex-file.names = ( "index.php", "index.html", X "index.htm", "default.htm" ) X Xserver.event-handler = "freebsd-kqueue" Xserver.network-backend = "freebsd-sendfile" X Xmimetype.assign = ( X ".pdf" => "application/pdf", X ".sig" => "application/pgp-signature", X ".spl" => "application/futuresplash", X ".class" => "application/octet-stream", X ".ps" => "application/postscript", X ".torrent" => "application/x-bittorrent", X ".dvi" => "application/x-dvi", X ".gz" => "application/x-gzip", X ".pac" => "application/x-ns-proxy-autoconfig", X ".swf" => "application/x-shockwave-flash", X ".tar.gz" => "application/x-tgz", X ".tgz" => "application/x-tgz", X ".tar" => "application/x-tar", X ".zip" => "application/zip", X ".mp3" => "audio/mpeg", X ".m3u" => "audio/x-mpegurl", X ".wma" => "audio/x-ms-wma", X ".wax" => "audio/x-ms-wax", X ".ogg" => "application/ogg", X ".wav" => "audio/x-wav", X ".gif" => "image/gif", X ".jar" => "application/x-java-archive", X ".jpg" => "image/jpeg", X ".jpeg" => "image/jpeg", X ".png" => "image/png", X ".xbm" => "image/x-xbitmap", X ".xpm" => "image/x-xpixmap", X ".xwd" => "image/x-xwindowdump", X ".css" => "text/css", X ".html" => "text/html", X ".htm" => "text/html", X ".js" => "text/javascript", X ".asc" => "text/plain", X ".c" => "text/plain", X ".cpp" => "text/plain", X ".log" => "text/plain", X ".conf" => "text/plain", X ".text" => "text/plain", X ".txt" => "text/plain", X ".diff" => "text/plain", X ".patch" => "text/plain", X ".dtd" => "text/xml", X ".xml" => "text/xml", X ".mpeg" => "video/mpeg", X ".mpg" => "video/mpeg", X ".mov" => "video/quicktime", X ".qt" => "video/quicktime", X ".avi" => "video/x-msvideo", X ".asf" => "video/x-ms-asf", X ".asx" => "video/x-ms-asf", X ".wmv" => "video/x-ms-wmv", X ".bz2" => "application/x-bzip", X ".tbz" => "application/x-bzip-compressed-tar", X ".tar.bz2" => "application/x-bzip-compressed-tar", X # default mime type X "" => "application/octet-stream", X ) X Xmimetype.use-xattr = "enable" X Xaccesslog.filename = "/var/log/lighttpd/default/access.log" X Xstatic-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) X Xserver.pid-file = "/var/run/lighttpd.pid" X Xserver.username = "www" Xserver.groupname = "www" X Xfastcgi.server = ( ".php" => X ( "localhost" => X ( X "socket" => "/var/run/lighttpd/php-fastcgi.socket", X "bin-path" => "/usr/local/bin/php-cgi", X "max-procs" => 2 X ) X ) X ) X X Xserver.stat-cache-engine = "fam" X Xserver.use-ipv6 = "enable" X$SERVER["socket"] == "0.0.0.0:80" { } 13d6c5353933d78bbe99686dc1205d95 echo x - sendfile/upload.php sed 's/^X//' >sendfile/upload.php << '5519f8f464a953c27a762163cfade428' X<html> X <title>Upload thingy</title> X </head> X X <body> X <div id="container"> X <div id="mainbody"> X <br /> X <form enctype="multipart/form-data" action="uploader.php" method="POST"> X <h2>Choose a flash thingy to upload:</h2> X <br /> X <input name="uploadedfile" type="file"/><br /> X <input type="submit" value="Upload"/> X </form> X </div> X </div> X </body> X</html> X 5519f8f464a953c27a762163cfade428 echo x - sendfile/uploader.php sed 's/^X//' >sendfile/uploader.php << 'fe7d407dda27de3d9cfe521e27e7a469' X<html> X <head> X <title>Upload!</title> X </head> X X <body> X <div id="container"> X <div id="mainbody"> X <br /> X<?php X function verify_file() X { X // Do we even have a file? X if ($_FILES['uploadedfile'] == NULL) X { X return "No file!"; X } X X if ($_FILES['uploadedfile']['size'] < 1048576) X { X return "It's not big enough to trigger the bug"; X } X X // Where the file is going to be placed X $target_path = "junk/"; X X // Add the original filename to our target path. X $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); X X if (file_exists($target_path)) X { X return "This file already exists."; X } X X if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) X { X return "The file ". basename( $_FILES['uploadedfile']['name']). X " has been uploaded"; X } X else X { X return "There was an error uploading the file."; X } X } X X $rvalue = verify_file(); X echo " <h2>$rvalue</h2>\n"; X?> X </div> X </div> X </body> X</html> X fe7d407dda27de3d9cfe521e27e7a469 exit --------------040709090100010605060305--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200909241030.n8OAUAg4072397>