)]}'
{
  "log": [
    {
      "commit": "2030a42cecd4dd1985a2ab03e25f3cd6106a5ca8",
      "tree": "7cb4710c3f7a4e034a20890f0df99bc42f9bbcee",
      "parents": [
        "9f3acc3140444a900ab280de942291959f0f615d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 23 06:46:49 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 01 13:08:50 2008 -0400"
      },
      "message": "[PATCH] sanitize anon_inode_getfd()\n\na) none of the callers even looks at inode or file returned by anon_inode_getfd()\nb) any caller that would try to look at those would be racy, since by the time\nit returns we might have raced with close() from another thread and that\nfile would be pining for fjords.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "45cc2b96f20fa27088a650587e5d9dc5fa5e32c0",
      "tree": "a298360f7fd34c6fbb2d9156f0929cc59c36934e",
      "parents": [
        "f17a32e97eaa924754bf4463aee588a3890c7ae0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 00:58:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:01 2008 -0700"
      },
      "message": "fs/timerfd.c should #include \u003clinux/syscalls.h\u003e\n\nEvery file should include the headers containing the prototypes for its global\nfunctions (in this case for sys_timerfd_*()).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d672e7ac79b5ec5cdc90e450823441e20464691",
      "tree": "66da3aa0bf7f7ac80376a93f17edbb2246b2df06",
      "parents": [
        "5e05ad7d4e3b11f935998882b5d9c3b257137f1b"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Mon Feb 04 22:27:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:07 2008 -0800"
      },
      "message": "timerfd: new timerfd API\n\nThis is the new timerfd API as it is implemented by the following patch:\n\nint timerfd_create(int clockid, int flags);\nint timerfd_settime(int ufd, int flags,\n\t\t    const struct itimerspec *utmr,\n\t\t    struct itimerspec *otmr);\nint timerfd_gettime(int ufd, struct itimerspec *otmr);\n\nThe timerfd_create() API creates an un-programmed timerfd fd.  The \"clockid\"\nparameter can be either CLOCK_MONOTONIC or CLOCK_REALTIME.\n\nThe timerfd_settime() API give new settings by the timerfd fd, by optionally\nretrieving the previous expiration time (in case the \"otmr\" parameter is not\nNULL).\n\nThe time value specified in \"utmr\" is absolute, if the TFD_TIMER_ABSTIME bit\nis set in the \"flags\" parameter.  Otherwise it\u0027s a relative time.\n\nThe timerfd_gettime() API returns the next expiration time of the timer, or\n{0, 0} if the timerfd has not been set yet.\n\nLike the previous timerfd API implementation, read(2) and poll(2) are\nsupported (with the same interface).  Here\u0027s a simple test program I used to\nexercise the new timerfd APIs:\n\nhttp://www.xmailserver.org/timerfd-test2.c\n\n[akpm@linux-foundation.org: coding-style cleanups]\n[akpm@linux-foundation.org: fix ia64 build]\n[akpm@linux-foundation.org: fix m68k build]\n[akpm@linux-foundation.org: fix mips build]\n[akpm@linux-foundation.org: fix alpha, arm, blackfin, cris, m68k, s390, sparc and sparc64 builds]\n[heiko.carstens@de.ibm.com: fix s390]\n[akpm@linux-foundation.org: fix powerpc build]\n[akpm@linux-foundation.org: fix sparc64 more]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "098284020c47c1212d211e39ae2b41c21182e056",
      "tree": "f82e03b01a567a536f2f7b5c59671de2cf1f7dc2",
      "parents": [
        "a1cdd4a64f6ce15a1e81759ef99eed3a91f9acbe"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu Jul 26 10:41:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:35:17 2007 -0700"
      },
      "message": "make timerfd return a u64 and fix the __put_user\n\nDavi fixed a missing cast in the __put_user(), that was making timerfd\nreturn a single byte instead of the full value.\n\nTalking with Michael about the timerfd man page, we think it\u0027d be better to\nuse a u64 for the returned value, to align it with the eventfd\nimplementation.\n\nThis is an ABI change.  The timerfd code is new in 2.6.22 and if we merge this\ninto 2.6.23 then we should also merge it into 2.6.22.x.  That will leave a few\nearly 2.6.22 kernels out in the wild which might misbehave when a future\ntimerfd-enabled glibc is run on them.\n\nmtk says: The difference would be that read() will only return 4 bytes, while\nthe application will expect 8.  If the application is checking the size of\nreturned value, as it should, then it will be able to detect the problem (it\ncould even be sophisticated enough to know that if this is a 4-byte return,\nthen it is running on an old 2.6.22 kernel).  If the application is not\nchecking the return from read(), then its 8-byte buffer will not be filled --\nthe contents of the last 4 bytes will be undefined, so the u64 value as a\nwhole will be junk.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Davi Arnaut \u003cdavi@haxent.com.br\u003e\nCc: \u003cstable@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": "18963c01b8abf381f102752ce024c3582a716125",
      "tree": "6c7e594804608be82ec3988399e905e20d486f51",
      "parents": [
        "d48eb2331595224ffe89665e79721d44b40bb047"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Fri May 18 12:02:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 18 13:09:34 2007 -0700"
      },
      "message": "timerfd use waitqueue lock ...\n\nThe timerfd was using the unlocked waitqueue operations, but it was\nusing a different lock, so poll_wait() would race with it.\n\nThis makes timerfd directly use the waitqueue lock.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b215e283992899650c4271e7385c79e26fb9a88e",
      "tree": "3f950814510422606821f1b0b373d65e4d9ed303",
      "parents": [
        "6d18c9220965b437287c3a7e803725c24992ceac"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "signal/timer/event: timerfd core\n\nThis patch introduces a new system call for timers events delivered though\nfile descriptors.  This allows timer event to be used with standard POSIX\npoll(2), select(2) and read(2).  As a consequence of supporting the Linux\nf_op-\u003epoll subsystem, they can be used with epoll(2) too.\n\nThe system call is defined as:\n\nint timerfd(int ufd, int clockid, int flags, const struct itimerspec *utmr);\n\nThe \"ufd\" parameter allows for re-use (re-programming) of an existing timerfd\nw/out going through the close/open cycle (same as signalfd).  If \"ufd\" is -1,\ns new file descriptor will be created, otherwise the existing \"ufd\" will be\nre-programmed.\n\nThe \"clockid\" parameter is either CLOCK_MONOTONIC or CLOCK_REALTIME.  The time\nspecified in the \"utmr-\u003eit_value\" parameter is the expiry time for the timer.\n\nIf the TFD_TIMER_ABSTIME flag is set in \"flags\", this is an absolute time,\notherwise it\u0027s a relative time.\n\nIf the time specified in the \"utmr-\u003eit_interval\" is not zero (.tv_sec \u003d\u003d 0,\ntv_nsec \u003d\u003d 0), this is the period at which the following ticks should be\ngenerated.\n\nThe \"utmr-\u003eit_interval\" should be set to zero if only one tick is requested.\nSetting the \"utmr-\u003eit_value\" to zero will disable the timer, or will create a\ntimerfd without the timer enabled.\n\nThe function returns the new (or same, in case \"ufd\" is a valid timerfd\ndescriptor) file, or -1 in case of error.\n\nAs stated before, the timerfd file descriptor supports poll(2), select(2) and\nepoll(2).  When a timer event happened on the timerfd, a POLLIN mask will be\nreturned.\n\nThe read(2) call can be used, and it will return a u32 variable holding the\nnumber of \"ticks\" that happened on the interface since the last call to\nread(2).  The read(2) call supportes the O_NONBLOCK flag too, and EAGAIN will\nbe returned if no ticks happened.\n\nA quick test program, shows timerfd working correctly on my amd64 box:\n\nhttp://www.xmailserver.org/timerfd-test.c\n\n[akpm@linux-foundation.org: add sys_timerfd to sys_ni.c]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
