)]}'
{
  "log": [
    {
      "commit": "55d8538498f62ec72b5ba67aa386c7726f630475",
      "tree": "15ebcc7a51fdf1ff2bf76ade337a637c0990055d",
      "parents": [
        "481c5346d0981940ee63037eb53e4e37b0735c10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 22 12:23:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 22 12:23:15 2008 -0700"
      },
      "message": "Fix performance regression on lmbench select benchmark\n\nChristian Borntraeger reported that reinstating cond_resched() with\nCONFIG_PREEMPT caused a performance regression on lmbench:\n\n\tFor example select file 500:\n\t23 microseconds\n\t32 microseconds\n\nand that\u0027s really because we totally unnecessarily do the cond_resched()\nin the innermost loop of select(), which is just silly.\n\nThis moves it out from the innermost loop (which only ever loops ove the\nbits in a single \"unsigned long\" anyway), which makes the performance\nregression go away.\n\nReported-and-tested-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f3acc3140444a900ab280de942291959f0f615d",
      "tree": "0d7f3f9698071ff90fb9a127a4c6e86e1c37c945",
      "parents": [
        "a2dcb44c3c5a8151d2d9f6ac8ad0789efcdbe184"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Apr 24 07:44:08 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 01 13:08:16 2008 -0400"
      },
      "message": "[PATCH] split linux/file.h\n\nInitial splitoff of the low-level stuff; taken to fdtable.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a2dcb44c3c5a8151d2d9f6ac8ad0789efcdbe184",
      "tree": "8711fc210dc58372a859e6a6cf78dc638d768600",
      "parents": [
        "bf7da7bcfb38409b4cdea34b0905bdf344f1b36d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 14:05:15 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 01 13:07:28 2008 -0400"
      },
      "message": "[PATCH] make osf_select() use core_sys_select()\n\n... instead of open-coding it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f3de272b821accbc8387211977c2de4f38468d05",
      "tree": "775b5b3db5a09176447d4e62e04077b63640a4d7",
      "parents": [
        "49eaeb4bc4c901c327ee259c7768be20fd020a30"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Apr 30 00:53:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:37 2008 -0700"
      },
      "message": "signals: use HAVE_SET_RESTORE_SIGMASK\n\nChange all the #ifdef TIF_RESTORE_SIGMASK conditionals in non-arch code to\n#ifdef HAVE_SET_RESTORE_SIGMASK.  If arch code defines it first, the generic\nset_restore_sigmask() using TIF_RESTORE_SIGMASK is not defined.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e4c22c71144c1b2e22c257ec6cf08ccb5be1165",
      "tree": "0a41fb405ab60654f70ead9698d5ce414a066c37",
      "parents": [
        "80fe728d593e3a048a56610de932919f7d6d968a"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Apr 30 00:53:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:37 2008 -0700"
      },
      "message": "signals: add set_restore_sigmask\n\nThis adds the set_restore_sigmask() inline in \u003clinux/thread_info.h\u003e and\nreplaces every set_thread_flag(TIF_RESTORE_SIGMASK) with a call to it.  No\nchange, but abstracts the details of the flag protocol from all the calls.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f5264481c8049673e2cc8c7aca410931f571ba2d",
      "tree": "cfe54747b75be1c83d2102d9e7f80c650602fcdc",
      "parents": [
        "1fb7c6e4cba35b5e7cef88b58d0a2ad164d801a5"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@suse.cz",
        "time": "Mon Apr 21 22:15:06 2008 +0000"
      },
      "committer": {
        "name": "Jesper Juhl",
        "email": "juhl@hera.kernel.org",
        "time": "Mon Apr 21 22:15:06 2008 +0000"
      },
      "message": "trivial: small cleanups\n\nThese are small cleanups all over the tree.\n\nTrivial style and comment changes to\n  fs/select.c, kernel/signal.c, kernel/stop_machine.c \u0026 mm/pdflush.c\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\n"
    },
    {
      "commit": "844fcc53962d781aab7c164acbfa46505427375e",
      "tree": "2d0108617ebff6eec82c7c21f5bdf3a7610d4525",
      "parents": [
        "54d2a37eda3211d3b14c162238e9ccee43e023a9"
      ],
      "author": {
        "name": "Karsten Wiese",
        "email": "fzu@wemgehoertderstaat.de",
        "time": "Wed Feb 06 01:37:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:09 2008 -0800"
      },
      "message": "make sys_poll() wait at least timeout ms\n\nschedule_timeout(jiffies) waits for at least jiffies - 1.  Add 1 jiffie to\nthe timeout_jiffies calculated in sys_poll() to wait at least\ntimeout_msecs, like poll() manpage says.\n\nSigned-off-by: Karsten Wiese \u003cfzu@wemgehoertderstaat.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1276b103c20603835d9b903cae099125e8c2c5a3",
      "tree": "942421113b459fbbd26738e4fc145f06e269307a",
      "parents": [
        "bc552f77157d1bae79d0d3a5541da9579c39cb70"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Thu Oct 18 23:40:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:41 2007 -0700"
      },
      "message": "fs/select, remove unused macros\n\nfs/select, remove unused macros\n\nthis is due to preparation for global BIT macro\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3075d9da0b4ccc88959db30de80ebd11d2dde175",
      "tree": "7dbdcd9b5eae671864eac060ee3138a8c862c0ea",
      "parents": [
        "7e341fa1f8ed25385e2321d7e5a49ce6aea2d702"
      ],
      "author": {
        "name": "Chris Wright",
        "email": "chrisw@sous-sol.org",
        "time": "Tue Oct 16 23:27:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:53 2007 -0700"
      },
      "message": "Use ERESTART_RESTARTBLOCK if poll() is interrupted by a signal\n\nLomesh reported poll returning EINTR during suspend/resume cycle.  This is\ncaused by the STOP/CONT cycle that the freezer uses, generating a pending\nsignal for what in effect is an ignored signal.  In general poll is a\nlittle eager in returning EINTR, when it could try not bother userspace and\nsimply restart the syscall.  Both select and ppoll do use ERESTARTNOHAND to\nrestart the syscall.  Oleg points out that simply using ERESTARTNOHAND will\ncause poll to restart with original timeout value.  which could ultimately\nlead to process never returning to userspace.  Instead use\nERESTART_RESTARTBLOCK, and restart poll with updated timeout value.\nInspired by Manfred\u0027s use ERESTARTNOHAND in poll patch.\n\n[bunk@kernel.org: do_restart_poll() can become static]\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: \"Agarwal, Lomesh\" \u003clomesh.agarwal@intel.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9bf084f70ffde6521d113593b89461a5bd2a303b",
      "tree": "ea62a8c9c54d0f702e73e9fa6e6c8699106ab892",
      "parents": [
        "252e5725cfb55a89e54888317856903fef9d5031"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:48 2007 -0700"
      },
      "message": "do_poll: return -EINTR when signalled\n\ndo_poll() checks signal_pending() but returns 0 when interrupted.  This means\nthe caller has to check signal_pending() again.\n\nChange it to return -EINTR when signal_pending() and count \u003d\u003d 0.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Vadim Lobanov \u003cvlobanov@speakeasy.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "252e5725cfb55a89e54888317856903fef9d5031",
      "tree": "ca93be8725e01885f8af68dac5f6ca20a2bafe11",
      "parents": [
        "759d7c6c47cf1439171d057a226453e96856c5de"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:48 2007 -0700"
      },
      "message": "do_sys_poll: simplify playing with on-stack data\n\nCleanup. Lessens both the source and compiled code (100 bytes) and imho makes\nthe code much more understandable.\n\nWith this patch \"struct poll_list *head\" always points to on-stack stack_pps,\nso we can remove all \"is it on-stack\" and \"was it initialized\" checks.\n\nAlso, move poll_initwait/poll_freewait and -EINTR detection closer to the\ndo_poll()\u0027s callsite.\n\n[akpm@linux-foundation.org: fix warning (size_t !\u003d uint)]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nLooks-good-to: Andi Kleen \u003cak@suse.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Vadim Lobanov \u003cvlobanov@speakeasy.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd23aae4f5edf4e1dbd8f7f8013a754ba3253f48",
      "tree": "c7babf45f8132876e8a715f0327cf480c05c6131",
      "parents": [
        "3210f0ecdba6a81c3f8efe6f442d2e1f57db98f9"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Sep 11 15:23:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Sep 11 17:21:20 2007 -0700"
      },
      "message": "Fix select on /proc files without -\u003epoll\n\nTaneli Vähäkangas \u003cvahakang@cs.helsinki.fi\u003e reported that commit\n786d7e1612f0b0adb6046f19b906609e4fe8b1ba aka \"Fix rmmod/read/write races\nin /proc entries\" broke SBCL + SLIME combo.\n\nThe old code in do_select() used DEFAULT_POLLMASK, if couldn\u0027t find\n-\u003epoll handler.  The new code makes -\u003epoll always there and returns 0 by\ndefault, which is not correct.  Return DEFAULT_POLLMASK instead.\n\nSteps to reproduce:\n\n\tinstall emacs, SBCL, SLIME\n\temacs\n\tM-x slime\tin *inferior-lisp* buffer\n\t[watch it doing \"Connecting to Swank on port X..\"]\n\nPlease, apply before 2.6.23.\n\nP.S.: why SBCL can\u0027t just read(2) /proc/cpuinfo is a mystery.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: T Taneli Vahakangas \u003cvahakang@cs.helsinki.fi\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ccf6780dc3d228f380e17b6858b93fc48e40afd4",
      "tree": "4b905fcccab11e2016969c876d7320b0271e10aa",
      "parents": [
        "d3e6975e0f25044c4c86f5a42c9917090973636b"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Wed May 09 07:10:02 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 07:10:02 2007 +0200"
      },
      "message": "Style fix in fs/select.c\n\nSigned-off-by: WANG Cong  \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "022a1692444cd683ef42f637cc717db4d8fd9378",
      "tree": "82d8c1360921310f90b81c147b345afad98317f7",
      "parents": [
        "10f8a59813ee8bb41fb1d72ed2ec12a1c9f66da2"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Tue May 08 00:29:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "ROUND_UP macro cleanup in fs/(select|compat|readdir).c\n\nROUND_UP macro cleanup use,ALIGN or DIV_ROUND_UP where ever appropriate.\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbea9f69668a3d0cf9feba15a724cd02896f8675",
      "tree": "bc58506e4daba4a04309181a5501ae4eb5424783",
      "parents": [
        "f3d19c90fb117a5f080310a4592929aa8e1ad8e9"
      ],
      "author": {
        "name": "Vadim Lobanov",
        "email": "vlobanov@speakeasy.net",
        "time": "Sun Dec 10 02:21:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:22 2006 -0800"
      },
      "message": "[PATCH] fdtable: Make fdarray and fdsets equal in size\n\nCurrently, each fdtable supports three dynamically-sized arrays of data: the\nfdarray and two fdsets.  The code allows the number of fds supported by the\nfdarray (fdtable-\u003emax_fds) to differ from the number of fds supported by each\nof the fdsets (fdtable-\u003emax_fdset).\n\nIn practice, it is wasteful for these two sizes to differ: whenever we hit a\nlimit on the smaller-capacity structure, we will reallocate the entire fdtable\nand all the dynamic arrays within it, so any delta in the memory used by the\nlarger-capacity structure will never be touched at all.\n\nRather than hogging this excess, we shouldn\u0027t even allocate it in the first\nplace, and keep the capacities of the fdarray and the fdsets equal.  This\npatch removes fdtable-\u003emax_fdset.  As an added bonus, most of the supporting\ncode becomes simpler.\n\nSigned-off-by: Vadim Lobanov \u003cvlobanov@speakeasy.net\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4e6fd33b75602ced4c5d43e99a10a1d13f33d4f4",
      "tree": "f22573e7d57532c4393ae26bea08866decad2813",
      "parents": [
        "8c6ba51bdad0de0dc2a2e2415d4dac2d0db6c1a1"
      ],
      "author": {
        "name": "Chris Snook",
        "email": "csnook@redhat.com",
        "time": "Fri Sep 29 02:01:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:23 2006 -0700"
      },
      "message": "[PATCH] enforce RLIMIT_NOFILE in poll()\n\nPOSIX states that poll() shall fail with EINVAL if nfds \u003e OPEN_MAX.  In\nthis context, POSIX is referring to sysconf(OPEN_MAX), which is the value\nof current-\u003esignal-\u003erlim[RLIMIT_NOFILE].rlim_cur in the linux kernel, not\nthe compile-time constant which happens to also be named OPEN_MAX.  In the\ncurrent code, an application may poll up to max_fdset file descriptors,\neven if this exceeds RLIMIT_NOFILE.  The current code also breaks\napplications which poll more than max_fdset descriptors, which worked circa\n2.4.18 when the check was against NR_OPEN, which is 1024*1024.  This patch\nenforces the limit precisely as POSIX defines, even if RLIMIT_NOFILE has\nbeen changed at run time with ulimit -n.\n\nTo elaborate on the rationale for this, there are three cases:\n\n1) RLIMIT_NOFILE is at the default value of 1024\n\nIn this (default) case, the patch changes nothing.  Calls with nfds \u003e 1024\nfail with EINVAL both before and after the patch, and calls with nfds \u003c\u003d\n1024 pass the check both before and after the patch, since 1024 is the\ninitial value of max_fdset.\n\n2) RLIMIT_NOFILE has been raised above the default\n\nIn this case, poll() becomes more permissive, allowing polling up to\nRLIMIT_NOFILE file descriptors even if less than 1024 have been opened.\nThe patch won\u0027t introduce new errors here.  If an application somehow\ndepends on poll() failing when it polls with duplicate or invalid file\ndescriptors, it\u0027s already broken, since this is already allowed below 1024,\nand will also work above 1024 if enough file descriptors have been open at\nsome point to cause max_fdset to have been increased above nfds.\n\n3) RLIMIT_NOFILE has been lowered below the default\n\nIn this case, the system administrator or the user has gone out of their\nway to protect the system from inefficient (or malicious) applications\nwasting kernel memory.  The current code allows polling up to 1024 file\ndescriptors even if RLIMIT_NOFILE is much lower, which is not what the user\nor administrator intended.  Well-written applications which only poll\nvalid, unique file descriptors will never notice the difference, because\nthey\u0027ll hit the limit on open() first.  If an application gets broken\nbecause of the patch in this case, then it was already poorly/maliciously\ndesigned, and allowing it to work in the past was a violation of POSIX and\na DoS risk on low-resource systems.\n\nWith this patch, poll() will permit exactly what POSIX suggests, no more,\nno less, and for any run-time value set with ulimit -n, not just 256 or\n1024.  There are existing apps which which poll a large number of file\ndescriptors, some of which may be invalid, and if those numbers stradle\n1024, they currently fail with or without the patch in -mm, though they\nworked fine under 2.4.18.\n\nSigned-off-by: Chris Snook \u003ccsnook@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "04a3446c90137a473837288b04b517b19dc67a0d",
      "tree": "874f1681da03441b021f81446e72ace451b0cb09",
      "parents": [
        "8bdd1d1250d55afe403ac4affa6ccc5f9e60468f"
      ],
      "author": {
        "name": "Frode Isaksen",
        "email": "frode.isaksen@gmail.com",
        "time": "Sun Jun 25 05:49:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:22 2006 -0700"
      },
      "message": "[PATCH] fs: sys_poll with timeout -1 bug fix\n\nIf you do a poll() call with timeout -1, the wait will be a big number\n(depending on HZ) instead of infinite wait, since -1 is passed to the\nmsecs_to_jiffies function.\n\nSigned-off-by: Frode Isaksen \u003cfrode.isaksen@gmail.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4a4b69f79ba7286794765a856349e380f984a6cb",
      "tree": "e437752eb3f53b4e732595815aa5d24ff4bcbaab",
      "parents": [
        "2da132646358c853d5caf296d079aefc69358d46"
      ],
      "author": {
        "name": "Vadim Lobanov",
        "email": "vlobanov@speakeasy.net",
        "time": "Fri Jun 23 02:05:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:03 2006 -0700"
      },
      "message": "[PATCH] Poll cleanups/microoptimizations\n\nThe \"count\" and \"pt\" variables are declared and modified by do_poll(), as\nwell as accessed and written indirectly in the do_pollfd() subroutine.\n\nThis patch pulls all handling of these variables into the do_poll()\nfunction, thereby eliminating the odd use of indirection in do_pollfd().\nThis is done by pulling the \"struct pollfd\" traversal loop from do_pollfd()\ninto its only caller do_poll().  As an added bonus, the patch saves a few\nclock cycles, and also adds comments to make the code easier to follow.\n\nSigned-off-by: Vadim Lobanov \u003cvlobanov@speakeasy.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b04eb6aa08ecc3e24df2f78ebc486011ebd74feb",
      "tree": "8dbf6a2449f886f0db9c3082dabdf83d4c4f04f7",
      "parents": [
        "a9cdf410ca8f59b52bc7061a6751050010c7cc5b"
      ],
      "author": {
        "name": "Mitchell Blank Jr",
        "email": "mitch@sfgoth.com",
        "time": "Mon Apr 10 22:54:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:41 2006 -0700"
      },
      "message": "[PATCH] select: don\u0027t overflow if (SELECT_STACK_ALLOC % sizeof(long) !\u003d 0)\n\nIf SELECT_STACK_ALLOC is not a multiple of sizeof(long) then stack_fds[]\nwould be shorter than SELECT_STACK_ALLOC bytes and could overflow later in\nthe function.  Fixed by simply rearranging the test later to work on\nsizeof(stack_fds) Currently SELECT_STACK_ALLOC is 256 so this doesn\u0027t\nhappen, but it\u0027s nasty to have things like this hidden in the code.  What\nif later someone decides to change SELECT_STACK_ALLOC to 300?\n\nSigned-off-by: Mitchell Blank Jr \u003cmitch@sfgoth.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29ff2db55196717e2e67e0f04adc833ee7edd491",
      "tree": "7f68496e093a294d60939b60aa204ff16fb9633a",
      "parents": [
        "8a5bc075b8d8cf7a87b3f08fad2fba0f5d13295e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Apr 10 22:52:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:30 2006 -0700"
      },
      "message": "[PATCH] select() warning fixes\n\nfs/select.c: In function `core_sys_select\u0027:\nfs/select.c:339: warning: assignment from incompatible pointer type\nfs/select.c:376: warning: comparison of distinct pointer types lacks a cast\n\nBy using a void* we can remove lots of casts rather than adding more.\n\nCc: Jes Sorensen \u003cjes@trained-monkey.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "30c14e40ed85469f166b5effdab6705c73c5cd5e",
      "tree": "31154f46c2c2acd0499b9ab8c849f009ac342641",
      "parents": [
        "d21c356b08820e60501ce7a42107a7f05863d91d"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Fri Mar 31 11:18:57 2006 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:30:48 2006 -0800"
      },
      "message": "[PATCH] avoid unaligned access when accessing poll stack\n\nCommit 70674f95c0a2ea694d5c39f4e514f538a09be36f:\n\n  [PATCH] Optimize select/poll by putting small data sets on the stack\n\nresulted in the poll stack being 4-byte aligned on 64-bit architectures,\ncausing misaligned accesses to elements in the array.\n\nThis patch fixes it by declaring the stack in terms of \u0027long\u0027 instead\nof \u0027char\u0027.\n\nForce alignment of poll and select stacks to long to avoid unaligned\naccess on 64 bit architectures.\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99ac48f54a91d02140c497edc31dc57d4bc5c85d",
      "tree": "68719391694a6914191bdf73d2071875f7653f6f",
      "parents": [
        "ec1b9466cb4f6ae6d950bd67055d9410d1056d2a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:05 2006 -0800"
      },
      "message": "[PATCH] mark f_ops const in the inode\n\nMark the f_ops members of inodes as const, as well as fix the\nripple-through this causes by places that copy this f_ops and then \"do\nstuff\" with it.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e4a1f129f9e43a5e5d28fe6d1b214246a398cdce",
      "tree": "9a8277520d5ef1bf8e86f11d76e6f0244efd9330",
      "parents": [
        "70674f95c0a2ea694d5c39f4e514f538a09be36f"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Mar 28 01:56:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:04 2006 -0800"
      },
      "message": "[PATCH] use fget_light() in select/poll\n\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "70674f95c0a2ea694d5c39f4e514f538a09be36f",
      "tree": "906d109fafc5eafff6a90c8d866e0525fdaf6783",
      "parents": [
        "b02389e98a7b64ad5cd4823740defa8821f30bbd"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Mar 28 01:56:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:04 2006 -0800"
      },
      "message": "[PATCH] Optimize select/poll by putting small data sets on the stack\n\nOptimize select and poll by a using stack space for small fd sets\n\nThis brings back an old optimization from Linux 2.0.  Using the stack is\nfaster than kmalloc.  On a Intel P4 system it speeds up a select of a\nsingle pty fd by about 13% (~4000 cycles -\u003e ~3500)\n\nIt also saves memory because a daemon hanging in select or poll will\nusually save one or two less pages.  This can add up - e.g.  if you have 10\ndaemons blocking in poll/select you save 40KB of memory.\n\nI did a patch for this long ago, but it was never applied.  This version is\na reimplementation of the old patch that tries to be less intrusive.  I\nonly did the minimal changes needed for the stack allocation.\n\nThe cut off point before external memory is allocated is currently at\n832bytes.  The system calls always allocate this much memory on the stack.\n\nThese 832 bytes are divided into 256 bytes frontend data (for the select\nbitmaps of the pollfds) and the rest of the space for the wait queues used\nby the low level drivers.  There are some extreme cases where this won\u0027t\nwork out for select and it falls back to allocating memory too early -\nespecially with very sparse large select bitmaps - but the majority of\nprocesses who only have a small number of file descriptors should be ok.\n[TBD: 832/256 might not be the best split for select or poll]\n\nI suspect more optimizations might be possible, but they would be more\ncomplicated.  One way would be to cache the select/poll context over\nmultiple system calls because typically the input values should be similar.\n Problem is when to flush the file descriptors out though.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74910e6c7dc7471b286a883c1a7af70483ffd2ba",
      "tree": "42314cf5882563b967284900a18e990b8a974a91",
      "parents": [
        "200a4552af34b9a32e1f68a881a9ed5c7ec699cc"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Feb 17 13:52:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 17 13:59:28 2006 -0800"
      },
      "message": "[PATCH] select: time comparison fixes\n\nI got all of these backwards.  We want to return\n\n\tmin(input timeout, new timeout)\n\nto userspace to prevent increasing the time-remaining value.\n\nThanks to Ernst Herzberg \u003cearny@net4u.de\u003e for reporting and diagnosing.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "643a654540579b0dcc7a206a4a7475276a41aff0",
      "tree": "e31d40e4362e4dc7823b7290c0de2a9353d3d117",
      "parents": [
        "33042a9ff4d126ba944b9dc3076665a2029e0a34"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Feb 11 17:55:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Feb 11 21:41:11 2006 -0800"
      },
      "message": "[PATCH] select: fix returned timeval\n\nWith David Woodhouse \u003cdwmw2@infradead.org\u003e\n\nselect() presently has a habit of increasing the value of the user\u0027s\n`timeout\u0027 argument on return.\n\nWe were writing back a timeout larger than the original.  We _deliberately_\nround up, since we know we must wait at _least_ as long as the caller asks\nus to.\n\nThe patch adds a couple of helper functions for magnitude comparison of\ntimespecs and of timevals, and uses them to prevent the various poll and\nselect functions from returning a timeout which is larger than the one which\nwas passed in.\n\nThe patch also fixes a bug in compat_sys_pselect7(): it was adding the new\ntimeout value to the old one and was returning that.  It should just return\nthe new timeout value.\n\n(We have various handy timespec/timeval-to-from-nsec conversion functions in\ntime.h.  But this code open-codes it all).\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: george anzinger \u003cgeorge@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e110ab94ebc714de57f75f0c7c576dde8cf80944",
      "tree": "c07b5f010d244cb11afeb50becdb1d7256a8560d",
      "parents": [
        "3023b438c4b6103d520690cfa8b790bdd3868dc2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 01 05:26:09 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 07 20:57:31 2006 -0500"
      },
      "message": "[PATCH] fix __user annotations in fs/select.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9f72949f679df06021c9e43886c9191494fdb007",
      "tree": "f4d76ed281b34e195db7741b69a7d095e168a864",
      "parents": [
        "36a7878a224c18aa4a5e098dc93d19cf5601462b"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Jan 18 17:44:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:30 2006 -0800"
      },
      "message": "[PATCH] Add pselect/ppoll system call implementation\n\nThe following implementation of ppoll() and pselect() system calls\ndepends on the architecture providing a TIF_RESTORE_SIGMASK flag in the\nthread_info.\n\nThese system calls have to change the signal mask during their\noperation, and signal handlers must be invoked using the new, temporary\nsignal mask. The old signal mask must be restored either upon successful\nexit from the system call, or upon returning from the invoked signal\nhandler if the system call is interrupted. We can\u0027t simply restore the\noriginal signal mask and return to userspace, since the restored signal\nmask may actually block the signal which interrupted the system call.\n\nThe TIF_RESTORE_SIGMASK flag deals with this by causing the syscall exit\npath to trap into do_signal() just as TIF_SIGPENDING does, and by\ncausing do_signal() to use the saved signal mask instead of the current\nsignal mask when setting up the stack frame for the signal handler -- or\nby causing do_signal() to simply restore the saved signal mask in the\ncase where there is no handler to be invoked.\n\nThe first patch implements the sys_pselect() and sys_ppoll() system\ncalls, which are present only if TIF_RESTORE_SIGMASK is defined. That\n#ifdef should go away in time when all architectures have implemented\nit. The second patch implements TIF_RESTORE_SIGMASK for the PowerPC\nkernel (in the -mm tree), and the third patch then removes the\narch-specific implementations of sys_rt_sigsuspend() and replaces them\nwith generic versions using the same trick.\n\nThe fourth and fifth patches, provided by David Howells, implement\nTIF_RESTORE_SIGMASK for FR-V and i386 respectively, and the sixth patch\nadds the syscalls to the i386 syscall table.\n\nThis patch:\n\nAdd the pselect() and ppoll() system calls, providing core routines usable by\nthe original select() and poll() system calls and also the new calls (with\ntheir semantics w.r.t timeouts).\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b835996f628eadb55c5fb222ba46fe9395bf73c7",
      "tree": "d63d80585d197e1ffc299af4a0034049790fb197",
      "parents": [
        "ab2af1f5005069321c5d130f09cce577b03f43ef"
      ],
      "author": {
        "name": "Dipankar Sarma",
        "email": "dipankar@in.ibm.com",
        "time": "Fri Sep 09 13:04:14 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 13:57:55 2005 -0700"
      },
      "message": "[PATCH] files: lock-free fd look-up\n\nWith the use of RCU in files structure, the look-up of files using fds can now\nbe lock-free.  The lookup is protected by rcu_read_lock()/rcu_read_unlock().\nThis patch changes the readers to use lock-free lookup.\n\nSigned-off-by: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nSigned-off-by: Ravikiran Thirumalai \u003ckiran_th@gmail.com\u003e\nSigned-off-by: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "badf16621c1f9d1ac753be056fce11b43d6e0be5",
      "tree": "3fdf833fdf2e3d3a439090743539680449ec3428",
      "parents": [
        "c0dfb2905126e9e94edebbce8d3e05001301f52d"
      ],
      "author": {
        "name": "Dipankar Sarma",
        "email": "dipankar@in.ibm.com",
        "time": "Fri Sep 09 13:04:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 13:57:55 2005 -0700"
      },
      "message": "[PATCH] files: break up files struct\n\nIn order for the RCU to work, the file table array, sets and their sizes must\nbe updated atomically.  Instead of ensuring this through too many memory\nbarriers, we put the arrays and their sizes in a separate structure.  This\npatch takes the first step of putting the file table elements in a separate\nstructure fdtable that is embedded withing files_struct.  It also changes all\nthe users to refer to the file table using files_fdtable() macro.  Subsequent\napplciation of RCU becomes easier after this.\n\nSigned-off-by: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "75c96f85845a6707b0f9916cb263cb3584f7d48f",
      "tree": "45a64d1c9bb71d7093db3a11e0f21465c2e3dec6",
      "parents": [
        "5e198d94dd0c3ec7f6138229e2e412c2c6268c38"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu May 05 16:16:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:47 2005 -0700"
      },
      "message": "[PATCH] make some things static\n\nThis patch makes some needlessly global identifiers static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Arjan van de Ven \u003carjanv@infradead.org\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
