)]}'
{
  "log": [
    {
      "commit": "1e1405673e4e40a94ed7620553eb440a21040402",
      "tree": "2553812b11feeefbf2b68c226f45d52e7a12f5b5",
      "parents": [
        "c67874f942e30039442d925b03793e0a46ddcddd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 22 12:55:07 2010 +1000"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Sep 22 15:33:14 2010 -0400"
      },
      "message": "nfsd: allow deprecated interface to be compiled out.\n\nAdd CONFIG_NFSD_DEPRECATED, default to y.\nOnly include deprecated interface if this is defined.\nThis allows distros to remove this interface before the official\nremoval, and allows developers to test without it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "c7887325230aec47d47a32562a6e26014a0fafca",
      "tree": "10535943dace59ddb01d3440aa582bc4640e8016",
      "parents": [
        "b84ae4a1401a731ef5fee987c0cb08743838dda7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Aug 11 11:26:22 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 13 16:53:13 2010 -0700"
      },
      "message": "Mark arguments to certain syscalls as being const\n\nMark arguments to certain system calls as being const where they should be but\naren\u0027t.  The list includes:\n\n (*) The filename arguments of various stat syscalls, execve(), various utimes\n     syscalls and some mount syscalls.\n\n (*) The filename arguments of some syscall helpers relating to the above.\n\n (*) The buffer argument of various write syscalls.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c8946f509a494769a8c602b5ed189df01917d39",
      "tree": "dfd96bd6ca5ea6803c6d77f65ba37e04f78b2d3b",
      "parents": [
        "5f248c9c251c60af3403902b26e08de43964ea0b",
        "1968f5eed54ce47bde488fd9a450912e4a2d7138"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify: (132 commits)\n  fanotify: use both marks when possible\n  fsnotify: pass both the vfsmount mark and inode mark\n  fsnotify: walk the inode and vfsmount lists simultaneously\n  fsnotify: rework ignored mark flushing\n  fsnotify: remove global fsnotify groups lists\n  fsnotify: remove group-\u003emask\n  fsnotify: remove the global masks\n  fsnotify: cleanup should_send_event\n  fanotify: use the mark in handler functions\n  audit: use the mark in handler functions\n  dnotify: use the mark in handler functions\n  inotify: use the mark in handler functions\n  fsnotify: send fsnotify_mark to groups in event handling functions\n  fsnotify: Exchange list heads instead of moving elements\n  fsnotify: srcu to protect read side of inode and vfsmount locks\n  fsnotify: use an explicit flag to indicate fsnotify_destroy_mark has been called\n  fsnotify: use _rcu functions for mark list traversal\n  fsnotify: place marks on object in order of group memory address\n  vfs/fsnotify: fsnotify_close can delay the final work in fput\n  fsnotify: store struct file not struct path\n  ...\n\nFix up trivial delete/modify conflict in fs/notify/inotify/inotify.c.\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "85c9fe8fcaf630225b26047b3a7cc5167739eced",
      "tree": "7af001a80ea43c22411f80cd35bd4aceae60e6aa",
      "parents": [
        "d89b1945b760a6e0e887da004d68432c0bff899a"
      ],
      "author": {
        "name": "Kevin Winchester",
        "email": "kjwinchester@gmail.com",
        "time": "Mon Aug 09 17:20:22 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:05 2010 -0700"
      },
      "message": "vfs: fix warning: \u0027dirent\u0027 is used uninitialized in this function\n\nUsing:\n\n\tgcc (GCC) 4.5.0 20100610 (prerelease)\n\nThe following warnings appear:\n\n\tfs/readdir.c: In function `filldir64\u0027:\n\tfs/readdir.c:240:15: warning: `dirent\u0027 is used uninitialized in this function\n\tfs/readdir.c: In function `filldir\u0027:\n\tfs/readdir.c:155:15: warning: `dirent\u0027 is used uninitialized in this function\n\tfs/compat.c: In function `compat_filldir64\u0027:\n\tfs/compat.c:1071:11: warning: `dirent\u0027 is used uninitialized in this function\n\tfs/compat.c: In function `compat_filldir\u0027:\n\tfs/compat.c:984:15: warning: `dirent\u0027 is used uninitialized in this function\n\nThe warnings are related to the use of the NAME_OFFSET() macro.  Luckily,\nit appears as though the standard offsetof() macro is what is being\nimplemented by NAME_OFFSET(), thus we can fix the warning and use a more\nstandard code construct at the same time.\n\nSigned-off-by: Kevin Winchester \u003ckjwinchester@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ebabe9a9001af0af56c0c2780ca1576246e7a74b",
      "tree": "b263299f575c650b6e9d95c7c4bdeef958af2fc9",
      "parents": [
        "336fb3b97b78edc65bae0b223b83bf676cfe29e2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jul 07 18:53:11 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:42 2010 -0400"
      },
      "message": "pass a struct path to vfs_statfs\n\nWe\u0027ll need the path to implement the flags field for statvfs support.\nWe do have it available in all callers except:\n\n - ecryptfs_statfs.  This one doesn\u0027t actually need vfs_statfs but just\n   needs to do a caller to the lower filesystem statfs method.\n - sys_ustat.  Add a non-exported statfs_by_dentry helper for it which\n   doesn\u0027t won\u0027t be able to fill out the flags field later on.\n\nIn addition rename the helpers for statfs vs fstatfs to do_*statfs instead\nof the misleading vfs prefix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2a12a9d7814631e918dec93abad856e692d5286d",
      "tree": "12817004ae9667bf83f869606f38050636edeb61",
      "parents": [
        "8112e2d6a7356e8c3ff1f7f3c86f375ed0305705"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:21 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:32 2010 -0400"
      },
      "message": "fsnotify: pass a file instead of an inode to open, read, and write\n\nfanotify, the upcoming notification system actually needs a struct path so it can\ndo opens in the context of listeners, and it needs a file so it can get f_flags\nfrom the original process.  Close was the only operation that already was passing\na struct file to the notification hook.  This patch passes a file for access,\nmodify, and open as well as they are easily available to these hooks.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a2531293dbb7608fa672ff28efe3ab4027917a2f",
      "tree": "017d5a38fa33838ebdca1a332db6887096885d2d",
      "parents": [
        "7a53cd16d4d9968d1962e378b14eec2d99aa43e0"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Sun Jul 18 14:27:13 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Jul 19 10:56:54 2010 +0200"
      },
      "message": "update email address\n\npavel@suse.cz no longer works, replace it with working address.\n\nSigned-off-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "7cbe17701a0379c7b05a79a6df4f24e41d2afde8",
      "tree": "914879cce805da0525f6d0c7c730f4945f1586f5",
      "parents": [
        "eaa6e4dd4bf243a357056448e54d7c673cd44acb"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Fri Jun 04 14:14:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:21:44 2010 -0700"
      },
      "message": "fs/compat_rw_copy_check_uvector: add missing compat_ptr call\n\nA call to access_ok is missing a compat_ptr conversion.  Introduced with\nb83733639a494d5f42fa00a2506563fbd2d3015d \"compat: factor out\ncompat_rw_copy_check_uvector from compat_do_readv_writev\"\n\nfs/compat.c: In function \u0027compat_rw_copy_check_uvector\u0027:\nfs/compat.c:629: warning: passing argument 1 of \u0027__access_ok\u0027 makes pointer from integer without a cast\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\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": "9d85cba718efeef9ca00ce3f7f34f5880737aa9b",
      "tree": "d445d35d915b65dac171e58f83c75feb15d625fd",
      "parents": [
        "b83733639a494d5f42fa00a2506563fbd2d3015d"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed May 26 14:44:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:53 2010 -0700"
      },
      "message": "aio: fix the compat vectored operations\n\nThe aio compat code was not converting the struct iovecs from 32bit to\n64bit pointers, causing either EINVAL to be returned from io_getevents, or\nEFAULT as the result of the I/O.  This patch passes a compat flag to\nio_submit to signal that pointer conversion is necessary for a given iocb\narray.\n\nA variant of this was tested by Michael Tokarev.  I have also updated the\nlibaio test harness to exercise this code path with good success.\nFurther, I grabbed a copy of ltp and ran the\ntestcases/kernel/syscall/readv and writev tests there (compiled with -m32\non my 64bit system).  All seems happy, but extra eyes on this would be\nwelcome.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix CONFIG_COMPAT\u003dn build]\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nReported-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.35.1]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b83733639a494d5f42fa00a2506563fbd2d3015d",
      "tree": "5aea71a7b0da140d839cc6109091350e1fbc8868",
      "parents": [
        "5b530fc18324602e1ecb70cd280c2194b2656a5e"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Wed May 26 14:44:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:53 2010 -0700"
      },
      "message": "compat: factor out compat_rw_copy_check_uvector from compat_do_readv_writev\n\nIt was reported in http://lkml.org/lkml/2010/3/8/309 that 32 bit readv and\nwritev AIO operations were not functioning properly.  It turns out that\nthe code to convert the 32bit io vectors to 64 bits was never written.\nThe results of that can be pretty bad, but in my testing, it mostly ended\nup in generating EFAULT as we walked off the list of I/O vectors provided.\n\nThis patch set fixes the problem in my environment.  are greatly\nappreciated.\n\nThis patch:\n\nFactor out code that will be used by both compat_do_readv_writev and the\ncompat aio submission code paths.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nReported-by: Michael Tokarev \u003cmjt@tls.msk.ru\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.35.1]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34441427aab4bdb3069a4ffcda69a99357abcb2e",
      "tree": "3beebde910f25b0945e9105017fd743c9e5241a5",
      "parents": [
        "3c904afd7358e9ef515eb5df36b6f25c2b7fc2da"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Tue May 11 14:06:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 11 17:33:41 2010 -0700"
      },
      "message": "revert \"procfs: provide stack information for threads\" and its fixup commits\n\nOriginally, commit d899bf7b (\"procfs: provide stack information for\nthreads\") attempted to introduce a new feature for showing where the\nthreadstack was located and how many pages are being utilized by the\nstack.\n\nCommit c44972f1 (\"procfs: disable per-task stack usage on NOMMU\") was\napplied to fix the NO_MMU case.\n\nCommit 89240ba0 (\"x86, fs: Fix x86 procfs stack information for threads on\n64-bit\") was applied to fix a bug in ia32 executables being loaded.\n\nCommit 9ebd4eba7 (\"procfs: fix /proc/\u003cpid\u003e/stat stack pointer for kernel\nthreads\") was applied to fix a bug which had kernel threads printing a\nuserland stack address.\n\nCommit 1306d603f (\u0027proc: partially revert \"procfs: provide stack\ninformation for threads\"\u0027) was then applied to revert the stack pages\nbeing used to solve a significant performance regression.\n\nThis patch nearly undoes the effect of all these patches.\n\nThe reason for reverting these is it provides an unusable value in\nfield 28.  For x86_64, a fork will result in the task-\u003estack_start\nvalue being updated to the current user top of stack and not the stack\nstart address.  This unpredictability of the stack_start value makes\nit worthless.  That includes the intended use of showing how much stack\nspace a thread has.\n\nOther architectures will get different values.  As an example, ia64\ngets 0.  The do_fork() and copy_process() functions appear to treat the\nstack_start and stack_size parameters as architecture specific.\n\nI only partially reverted c44972f1 (\"procfs: disable per-task stack usage\non NOMMU\") .  If I had completely reverted it, I would have had to change\nmm/Makefile only build pagewalk.o when CONFIG_PROC_PAGE_MONITOR is\nconfigured.  Since I could not test the builds without significant effort,\nI decided to not change mm/Makefile.\n\nI only partially reverted 89240ba0 (\"x86, fs: Fix x86 procfs stack\ninformation for threads on 64-bit\") .  I left the KSTK_ESP() change in\nplace as that seemed worthwhile.\n\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nCc: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Simek \u003cmonstr@monstr.eu\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\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": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "5d0e52830e9ae09b872567f4aca3dfb5b5918079",
      "tree": "55a199575058da551ccc837ab35a1f4826a8c5b4",
      "parents": [
        "724ee626f38feaea215a11790e1a0cb5d83b0628"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Mar 10 15:21:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:32 2010 -0800"
      },
      "message": "Add generic sys_old_select()\n\nAdd a generic implementation of the old select() syscall, which expects\nits argument in a memory block and switch all architectures over to use\nit.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nReviewed-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Andreas Schwab \u003cschwab@linux-m68k.org\u003e\nAcked-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nAcked-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andreas Schwab \u003cschwab@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "370d560017c9c269a1351ba19e91b206bd5816c8",
      "tree": "c3be6d2e4517c35bf788e8731b3a339377e63396",
      "parents": [
        "341eb184469f8e4a6841fc49a57ad4a27e51c335"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Thu Dec 03 20:29:27 2009 +0200"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Mon Dec 14 18:12:10 2009 -0500"
      },
      "message": "compat.c: Remove dependence on nfsd private headers\n\nTwo nfsd related headers where included but never actually\nused. The linux/nfsd/nfsd.h file will eventually be moved\nto fs/nfsd directory as it is only needed by nfsd itself.\n\nThere are 3 more compat.c files in the Kernel at other ARCHs\nthat wrongly #include nfsd headers. Once these are fixed the\nheaders can be moved.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "89240ba059ca468ae7a8346edf7f95082458c2fc",
      "tree": "a16b4ce794572d256f568e41fe9ccfc10c35ff39",
      "parents": [
        "1d87cff407ceddf0bc4e825949a4b1bf645418bd"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Tue Nov 03 10:22:40 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 04 13:25:03 2009 +0100"
      },
      "message": "x86, fs: Fix x86 procfs stack information for threads on 64-bit\n\nThis patch fixes two issues in the procfs stack information on\nx86-64 linux.\n\nThe 32 bit loader compat_do_execve did not store stack\nstart. (this was figured out by Alexey Dobriyan).\n\nThe stack information on a x64_64 kernel always shows 0 kbyte\nstack usage, because of a missing implementation of the KSTK_ESP\nmacro which always returned -1.\n\nThe new implementation now returns the right value.\n\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: Americo Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLKML-Reference: \u003c1257240160.4889.24.camel@wall-e\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eca6f534e61919b28fb21aafbd1c2983deae75be",
      "tree": "b2c3f110a2defe6360004c39a074f3962ed0cc50",
      "parents": [
        "6d729e44a55547c009d7a87ea66bff21a8e0afea"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Fri Sep 18 13:05:45 2009 -0700"
      },
      "committer": {
        "name": "al",
        "email": "al@dizzy.pdmi.ras.ru",
        "time": "Thu Sep 24 08:40:15 2009 -0400"
      },
      "message": "fs: fix overflow in sys_mount() for in-kernel calls\n\nsys_mount() reads/copies a whole page for its \"type\" parameter.  When\ndo_mount_root() passes a kernel address that points to an object which is\nsmaller than a whole page, copy_mount_options() will happily go past this\nmemory object, possibly dereferencing \"wild\" pointers that could be in any\nstate (hence the kmemcheck warning, which shows that parts of the next\npage are not even allocated).\n\n(The likelihood of something going wrong here is pretty low -- first of\nall this only applies to kernel calls to sys_mount(), which are mostly\nfound in the boot code.  Secondly, I guess if the page was not mapped,\nexact_copy_from_user() _would_ in fact handle it correctly because of its\naccess_ok(), etc.  checks.)\n\nBut it is much nicer to avoid the dubious reads altogether, by stopping as\nsoon as we find a NUL byte.  Is there a good reason why we can\u0027t do\nsomething like this, using the already existing strndup_from_user()?\n\n[akpm@linux-foundation.org: make copy_mount_string() static]\n[AV: fix compat mount breakage, which involves undoing akpm\u0027s change above]\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: al \u003cal@dizzy.pdmi.ras.ru\u003e\n"
    },
    {
      "commit": "d7d7561c908afa001ab0fc8212eee94731a213a6",
      "tree": "116f7585bca14df575560c43c39b3e37d7e18595",
      "parents": [
        "54447c3e8f63524fcdd40395bb2d405cab5555a7"
      ],
      "author": {
        "name": "Suzuki Poulose",
        "email": "suzuki@in.ibm.com",
        "time": "Tue Sep 22 16:44:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:30 2009 -0700"
      },
      "message": "fix compat_sys_utimensat()\n\nCompat utimensat() returns EINVAL when the tv_nsec is one of UTIME_OMIT or\nUTIME_NOW and the tv_sec is set to non-zero.  As per man pages, the tv_sec\nfield should be ignored.\n\nsys_utimensat() works fine in this case.\n\nTest case:\n\n#define _GNU_SOURCE\n#define _ATFILE_SOURCE\n#include \u003cstdio.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003cstdlib.h\u003e\n\nmain(int argc, char *argv[])\n{\n\tstruct timespec ts[2];\n\tstruct timespec *tsp;\n\n\tif (argc \u003c 2) {\n\t\tfprintf(stderr, \"Usage : %s filename\\n\", argv[0]);\n\t\texit (-1);\n\t}\n\n\tts[0].tv_nsec \u003d ts[1].tv_nsec \u003d UTIME_NOW;\n\tts[0].tv_sec \u003d ts[1].tv_sec \u003d 1;\n\n\ttsp \u003d ts;\n\n\tif (utimensat(AT_FDCWD, argv[1],tsp,0) \u003d\u003d -1)\n\t\tperror(\"utimensat\");\n\telse\n\t\tfprintf(stdout, \"utimensat success\\n\");\n\treturn 0;\n}\nmjs22lp5:~ # cc -m64 utimensat-test.c -o utimensat_test64\nmjs22lp5:~ # cc -m32 utimensat-test.c -o utimensat_test32\nmjs22lp5:~ # ./utimensat_test32 /tmp/utimensat_test\nutimensat: Invalid argument\nmjs22lp5:~ # ./utimensat_test64 /tmp/utimensat_test\nutimensat success\nmjs22lp5:~ # uname -r\n2.6.31-rc8\n\nWith the patch :\n\nmjs22lp5:~ # ./utimensat_test64 /tmp/utimensat_test\nutimensat success\nmjs22lp5:~ # ./utimensat_test32 /tmp/utimensat_test\nutimensat success\nmjs22lp5:~ # uname -r\n2.6.31-rc8utimensat\n\nSigned-off-by: Suzuki K P \u003csuzuki@in.ibm.com\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2a8474c3fff88d8dd52d05cb450563fb26fd26c",
      "tree": "455415da039a77627f47ed19318bb9c8aa17de4d",
      "parents": [
        "dd5d241ea955006122d76af88af87de73fec25b4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 05 11:17:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "exec: do not sleep in TASK_TRACED under -\u003ecred_guard_mutex\n\nTom Horsley reports that his debugger hangs when it tries to read\n/proc/pid_of_tracee/maps, this happens since\n\n\t\"mm_for_maps: take -\u003ecred_guard_mutex to fix the race with exec\"\n\t04b836cbf19e885f8366bccb2e4b0474346c02d\n\ncommit in 2.6.31.\n\nBut the root of the problem lies in the fact that do_execve() path calls\ntracehook_report_exec() which can stop if the tracer sets PT_TRACE_EXEC.\n\nThe tracee must not sleep in TASK_TRACED holding this mutex.  Even if we\nremove -\u003ecred_guard_mutex from mm_for_maps() and proc_pid_attr_write(),\nanother task doing PTRACE_ATTACH should not hang until it is killed or the\ntracee resumes.\n\nWith this patch do_execve() does not use -\u003ecred_guard_mutex directly and\nwe do not hold it throughout, instead:\n\n\t- introduce prepare_bprm_creds() helper, it locks the mutex\n\t  and calls prepare_exec_creds() to initialize bprm-\u003ecred.\n\n\t- install_exec_creds() drops the mutex after commit_creds(),\n\t  and thus before tracehook_report_exec()-\u003eptrace_stop().\n\n\t  or, if exec fails,\n\n\t  free_bprm() drops this mutex when bprm-\u003ecred !\u003d NULL which\n\t  indicates install_exec_creds() was not called.\n\nReported-by: Tom Horsley \u003ctom.horsley@att.net\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "793285fcafce4719a05e0c99fa74b188157fe7fe",
      "tree": "3395530c1d4e604beac506c703b3093bb13f23ee",
      "parents": [
        "82e3310ace59794ecf0f531eca94647b2863dfda"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jul 05 12:08:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 06 13:57:04 2009 -0700"
      },
      "message": "cred_guard_mutex: do not return -EINTR to user-space\n\ndo_execve() and ptrace_attach() return -EINTR if\nmutex_lock_interruptible(-\u003ecred_guard_mutex) fails.\n\nThis is not right, change the code to return ERESTARTNOINTR.\n\nPerhaps we should also change proc_pid_attr_write().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff677f8d10a7b7dea6fbfc48d5ceeb3018cabb23",
      "tree": "38c1a36a4f6394b61289f402abdf8b33899a0e34",
      "parents": [
        "88164ff4fca75051315d73729ea5a014e8986234"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Wed Apr 01 14:40:51 2009 +0530"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Jun 12 18:01:44 2009 +0200"
      },
      "message": "trivial: fix comment typo in fs/compat.c\n\nFix a typo in fs/compat.c\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "6fac98dd218653c6aff8a0f56305c424930cea2a",
      "tree": "0c5bdca0092e5ec3b201bae958071a7e8385409d",
      "parents": [
        "bbd6851a3213a525128473e978b692ab6ac11aba"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 08 13:31:17 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:08 2009 -0400"
      },
      "message": "Push BKL into do_mount()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5e751e992f3fb08ba35e1ca8095ec8fbf9eda523",
      "tree": "711b1b47622dc9661f1d3d9c67d55c0b21456e8c",
      "parents": [
        "d254117099d711f215e62427f55dfb8ebd5ad011"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri May 08 13:55:22 2009 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon May 11 08:15:36 2009 +1000"
      },
      "message": "CRED: Rename cred_exec_mutex to reflect that it\u0027s a guard against ptrace\n\nRename cred_exec_mutex to reflect that it\u0027s a guard against foreign\nintervention on a process\u0027s credential state, such as is made by ptrace().  The\nattachment of a debugger to a process affects execve()\u0027s calculation of the new\ncredential state - _and_ also setprocattr()\u0027s calculation of that state.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "8c652f96d3852b97a49c331cd0bb02d22f3cb31b",
      "tree": "9752969f2ae7312026bb4037ecd950dafd403d9b",
      "parents": [
        "091069740304c979f957ceacec39c461d0192158"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Apr 24 01:01:56 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 07:39:45 2009 -0700"
      },
      "message": "do_execve() must not clear fs-\u003ein_exec if it was set by another thread\n\nIf do_execve() fails after check_unsafe_exec(), it clears fs-\u003ein_exec\nunconditionally. This is wrong if we race with our sub-thread which\nalso does do_execve:\n\n\tTwo threads T1 and T2 and another process P, all share the same\n\t-\u003efs.\n\n\tT1 starts do_execve(BAD_FILE). It calls check_unsafe_exec(), since\n\t-\u003efs is shared, we set LSM_UNSAFE but not -\u003ein_exec.\n\n\tP exits and decrements fs-\u003eusers.\n\n\tT2 starts do_execve(), calls check_unsafe_exec(), now -\u003efs is not\n\tshared, we set fs-\u003ein_exec.\n\n\tT1 continues, open_exec(BAD_FILE) fails, we clear -\u003ein_exec and\n\treturn to the user-space.\n\n\tT1 does clone(CLONE_FS /* without CLONE_THREAD */).\n\n\tT2 continues without LSM_UNSAFE_SHARE while -\u003efs is shared with\n\tanother process.\n\nChange check_unsafe_exec() to return res \u003d 1 if we set -\u003ein_exec, and change\ndo_execve() to clear -\u003ein_exec depending on res.\n\nWhen do_execve() suceeds, it is safe to clear -\u003ein_exec unconditionally.\nIt can be set only if we don\u0027t share -\u003efs with another process, and since\nwe already killed all sub-threads either -\u003ein_exec \u003d\u003d 0 or we are the\nonly user of this -\u003efs.\n\nAlso, we do not need fs-\u003elock to clear fs-\u003ein_exec.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2eae7a1874ca5be3232765d89e0250a449f1bc90",
      "tree": "571f62f170623b98ab7b673fb18ea1c2c2582604",
      "parents": [
        "0112fc2229847feb6c4eb011e6833d8f1742a375"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 08 16:34:03 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:02:52 2009 -0400"
      },
      "message": "kill vfs_stat_fd / vfs_lstat_fd\n\nThere\u0027s really no reason to keep vfs_stat_fd and vfs_lstat_fd with\nOleg\u0027s vfs_fstatat.  Use vfs_fstatat for the few cases having the\ndirectory fd, and switch all others to vfs_stat / vfs_lstat.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0112fc2229847feb6c4eb011e6833d8f1742a375",
      "tree": "c5bda0b4f5a5f942478faf2fb5961df7fbd15546",
      "parents": [
        "fd56d242b3b80b6f2ca174272b20029aae61df75"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "green@linuxhacker.ru",
        "time": "Wed Apr 08 20:05:42 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:02:51 2009 -0400"
      },
      "message": "Separate out common fstatat code into vfs_fstatat\n\nThis is a version incorporating Christoph\u0027s suggestion.\n\nSeparate out common *fstatat functionality into a single function\ninstead of duplicating it all over the code.\n\nSigned-off-by: Oleg Drokin \u003cgreen@linuxhacker.ru\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "601cc11d054ae4b5e9b5babec3d8e4667a2cb9b5",
      "tree": "725ec3422b4fe50267915c1d5b80c49712ffff75",
      "parents": [
        "6bb597507f9839b13498781e481f5458aea33620"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 08:03:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 04 14:20:34 2009 -0700"
      },
      "message": "Make non-compat preadv/pwritev use native register size\n\nInstead of always splitting the file offset into 32-bit \u0027high\u0027 and \u0027low\u0027\nparts, just split them into the largest natural word-size - which in C\nterms is \u0027unsigned long\u0027.\n\nThis allows 64-bit architectures to avoid the unnecessary 32-bit\nshifting and masking for native format (while the compat interfaces will\nobviously always have to do it).\n\nThis also changes the order of \u0027high\u0027 and \u0027low\u0027 to be \"low first\".  Why?\nBecause when we have it like this, the 64-bit system calls now don\u0027t use\nthe \"pos_high\" argument at all, and it makes more sense for the native\nsystem call to simply match the user-mode prototype.\n\nThis results in a much more natural calling convention, and allows the\ncompiler to generate much more straightforward code.  On x86-64, we now\ngenerate\n\n        testq   %rcx, %rcx      # pos_l\n        js      .L122   #,\n        movq    %rcx, -48(%rbp) # pos_l, pos\n\nfrom the C source\n\n        loff_t pos \u003d pos_from_hilo(pos_h, pos_l);\n\t...\n        if (pos \u003c 0)\n                return -EINVAL;\n\nand the \u0027pos_h\u0027 register isn\u0027t even touched.  It used to generate code\nlike\n\n        mov     %r8d, %r8d      # pos_low, pos_low\n        salq    $32, %rcx       #, tmp71\n        movq    %r8, %rax       # pos_low, pos.386\n        orq     %rcx, %rax      # tmp71, pos.386\n        js      .L122   #,\n        movq    %rax, -48(%rbp) # pos.386, pos\n\nwhich isn\u0027t _that_ horrible, but it does show how the natural word size\nis just a more sensible interface (same arguments will hold in the user\nlevel glibc wrapper function, of course, so the kernel side is just half\nof the equation!)\n\nNote: in all cases the user code wrapper can again be the same. You can\njust do\n\n\t#define HALF_BITS (sizeof(unsigned long)*4)\n\t__syscall(PWRITEV, fd, iov, count, offset, (offset \u003e\u003e HALF_BITS) \u003e\u003e HALF_BITS);\n\nor something like that.  That way the user mode wrapper will also be\nnicely passing in a zero (it won\u0027t actually have to do the shifts, the\ncompiler will understand what is going on) for the last argument.\n\nAnd that is a good idea, even if nobody will necessarily ever care: if\nwe ever do move to a 128-bit lloff_t, this particular system call might\nbe left alone.  Of course, that will be the least of our worries if we\nreally ever need to care, so this may not be worth really caring about.\n\n[ Fixed for lost \u0027loff_t\u0027 cast noticed by Andrew Morton ]\n\nAcked-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: linux-api@vger.kernel.org\nCc: linux-arch@vger.kernel.org\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "10c7db279218eda4b19d29ee17db8a815b18d564",
      "tree": "2ab1abd85e3f68a13d50f6c7f617d3999c138b54",
      "parents": [
        "ddd9e91b71072b8ebe89311c3a44b077defa1756"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "preadv/pwritev: switch compat readv/preadv/writev/pwritev from fget to fget_light\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3554f4bc69803ac2baaf7cf2aa4339e1f4b693e",
      "tree": "52505043de254dc3e34dad7110724fcc1f489eb9",
      "parents": [
        "6949a6318e60aeb9c755679ac7f978aefe8c1722"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "preadv/pwritev: Add preadv and pwritev system calls.\n\nThis patch adds preadv and pwritev system calls.  These syscalls are a\npretty straightforward combination of pread and readv (same for write).\nThey are quite useful for doing vectored I/O in threaded applications.\nUsing lseek+readv instead opens race windows you\u0027ll have to plug with\nlocking.\n\nOther systems have such system calls too, for example NetBSD, check\nhere: http://www.daemon-systems.org/man/preadv.2.html\n\nThe application-visible interface provided by glibc should look like\nthis to be compatible to the existing implementations in the *BSD family:\n\n  ssize_t preadv(int d, const struct iovec *iov, int iovcnt, off_t offset);\n  ssize_t pwritev(int d, const struct iovec *iov, int iovcnt, off_t offset);\n\nThis prototype has one problem though: On 32bit archs is the (64bit)\noffset argument unaligned, which the syscall ABI of several archs doesn\u0027t\nallow to do.  At least s390 needs a wrapper in glibc to handle this.  As\nwe\u0027ll need a wrappers in glibc anyway I\u0027ve decided to push problem to\nglibc entriely and use a syscall prototype which works without\narch-specific wrappers inside the kernel: The offset argument is\nexplicitly splitted into two 32bit values.\n\nThe patch sports the actual system call implementation and the windup in\nthe x86 system call tables.  Other archs follow as separate patches.\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\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": "6949a6318e60aeb9c755679ac7f978aefe8c1722",
      "tree": "97fdbd5d494c5bc99145d5caed28be4ad0e467db",
      "parents": [
        "dac1213842f5caf081804a11d87d2a39a21d6f55"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:07 2009 -0700"
      },
      "message": "preadv/pwritev: create compat_writev()\n\nFactor out some code from compat_sys_writev() which can be shared with the\nupcoming compat_sys_pwritev().\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dac1213842f5caf081804a11d87d2a39a21d6f55",
      "tree": "0b357e0a70fc872c400eb764ec7243969a5439d6",
      "parents": [
        "98310e581e098514867573031b2bfa4ba89c0d93"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:07 2009 -0700"
      },
      "message": "preadv/pwritev: create compat_readv()\n\nThis patch series:\n\nImplement the preadv() and pwritev() syscalls.  *BSD has this syscall for\nquite some time.\n\nTest code:\n\n#if 0\nset -x\ngcc -Wall -O2 -o preadv $0\nexit 0\n#endif\n/*\n * preadv demo / test\n *\n * (c) 2008 Gerd Hoffmann \u003ckraxel@redhat.com\u003e\n *\n * build with \"sh $thisfile\"\n */\n\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cinttypes.h\u003e\n#include \u003csys/uio.h\u003e\n\n/* ----------------------------------------------------------------- */\n/* syscall windup                                                    */\n\n#include \u003csys/syscall.h\u003e\n#if 0\n/* WARNING: Be sure you know what you are doing if you enable this.\n * linux syscall code isn\u0027t upstream yet, syscall numbers are subject\n * to change */\n# ifndef __NR_preadv\n#  ifdef __i386__\n#   define __NR_preadv  333\n#   define __NR_pwritev 334\n#  endif\n#  ifdef __x86_64__\n#   define __NR_preadv  295\n#   define __NR_pwritev 296\n#  endif\n# endif\n#endif\n#ifndef __NR_preadv\n# error preadv/pwritev syscall numbers are unknown\n#endif\n\nstatic ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)\n{\n    uint32_t pos_high \u003d (offset \u003e\u003e 32) \u0026 0xffffffff;\n    uint32_t pos_low  \u003d  offset        \u0026 0xffffffff;\n\n    return syscall(__NR_preadv, fd, iov, iovcnt, pos_high, pos_low);\n}\n\nstatic ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset)\n{\n    uint32_t pos_high \u003d (offset \u003e\u003e 32) \u0026 0xffffffff;\n    uint32_t pos_low  \u003d  offset        \u0026 0xffffffff;\n\n    return syscall(__NR_pwritev, fd, iov, iovcnt, pos_high, pos_low);\n}\n\n/* ----------------------------------------------------------------- */\n/* demo/test app                                                     */\n\nstatic char filename[] \u003d \"/tmp/preadv-XXXXXX\";\nstatic char outbuf[11] \u003d \"0123456789\";\nstatic char inbuf[11]  \u003d \"----------\";\n\nstatic struct iovec ovec[2] \u003d {{\n        .iov_base \u003d outbuf + 5,\n        .iov_len  \u003d 5,\n    },{\n        .iov_base \u003d outbuf + 0,\n        .iov_len  \u003d 5,\n    }};\n\nstatic struct iovec ivec[3] \u003d {{\n        .iov_base \u003d inbuf + 6,\n        .iov_len  \u003d 2,\n    },{\n        .iov_base \u003d inbuf + 4,\n        .iov_len  \u003d 2,\n    },{\n        .iov_base \u003d inbuf + 2,\n        .iov_len  \u003d 2,\n    }};\n\nvoid cleanup(void)\n{\n    unlink(filename);\n}\n\nint main(int argc, char **argv)\n{\n    int fd, rc;\n\n    fd \u003d mkstemp(filename);\n    if (-1 \u003d\u003d fd) {\n        perror(\"mkstemp\");\n        exit(1);\n    }\n    atexit(cleanup);\n\n    /* write to file: \"56789-01234\" */\n    rc \u003d pwritev(fd, ovec, 2, 0);\n    if (rc \u003c 0) {\n        perror(\"pwritev\");\n        exit(1);\n    }\n\n    /* read from file: \"78-90-12\" */\n    rc \u003d preadv(fd, ivec, 3, 2);\n    if (rc \u003c 0) {\n        perror(\"preadv\");\n        exit(1);\n    }\n\n    printf(\"result  : %s\\n\", inbuf);\n    printf(\"expected: %s\\n\", \"--129078--\");\n    exit(0);\n}\n\nThis patch:\n\nFactor out some code from compat_sys_readv() which can be shared with the\nupcoming compat_sys_preadv().\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "498052bba55ecaff58db6a1436b0e25bfd75a7ff",
      "tree": "bd3644ac60737e3733995a203acebd70cfd1b21b",
      "parents": [
        "3e93cd671813e204c258f1e6c797959920cf7772"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 30 07:20:30 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New locking/refcounting for fs_struct\n\n* all changes of current-\u003efs are done under task_lock and write_lock of\n  old fs-\u003elock\n* refcount is not atomic anymore (same protection)\n* its decrements are done when removing reference from current; at the\n  same time we decide whether to free it.\n* put_fs_struct() is gone\n* new field - -\u003ein_exec.  Set by check_unsafe_exec() if we are trying to do\n  execve() and only subthreads share fs_struct.  Cleared when finishing exec\n  (success and failure alike).  Makes CLONE_FS fail with -EAGAIN if set.\n* check_unsafe_exec() may fail with -EAGAIN if another execve() from subthread\n  is in progress.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e426b64c412aaa3e9eb3e4b261dc5be0d5a83e78",
      "tree": "c1528139b34fef3e4595576266c64068098fe211",
      "parents": [
        "53e9309e01277ec99c38e84e0ca16921287cf470"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:20:19 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "fix setuid sometimes doesn\u0027t\n\nJoe Malicki reports that setuid sometimes doesn\u0027t: very rarely,\na setuid root program does not get root euid; and, by the way,\nthey have a health check running lsof every few minutes.\n\nRight, check_unsafe_exec() notes whether the files_struct is being\nshared by more threads than will get killed by the exec, and if so\nsets LSM_UNSAFE_SHARE to make bprm_set_creds() careful about euid.\nBut /proc/\u003cpid\u003e/fd and /proc/\u003cpid\u003e/fdinfo lookups make transient\nuse of get_files_struct(), which also raises that sharing count.\n\nThere\u0027s a rather simple fix for this: exec\u0027s check on files-\u003ecount\nhas been redundant ever since 2.6.1 made it unshare_files() (except\nwhile compat_do_execve() omitted to do so) - just remove that check.\n\n[Note to -stable: this patch will not apply before 2.6.29: earlier\nreleases should just remove the files-\u003ecount line from unsafe_exec().]\n\nReported-by: Joe Malicki \u003cjmalicki@metacarta.com\u003e\nNarrowed-down-by: Michael Itz \u003cmitz@metacarta.com\u003e\nTested-by: Joe Malicki \u003cjmalicki@metacarta.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53e9309e01277ec99c38e84e0ca16921287cf470",
      "tree": "bc70d617e1898e5b0fdf161edafa1808ae8fa529",
      "parents": [
        "07d43ba98621f08e252a48c96b258b4d572b0257"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:16:03 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "compat_do_execve should unshare_files\n\n2.6.26\u0027s commit fd8328be874f4190a811c58cd4778ec2c74d2c05\n\"sanitize handling of shared descriptor tables in failing execve()\"\nmoved the unshare_files() from flush_old_exec() and several binfmts\nto the head of do_execve(); but forgot to make the same change to\ncompat_do_execve(), leaving a CLONE_FILES files_struct shared across\nexec from a 32-bit process on a 64-bit kernel.\n\nIt\u0027s arguable whether the files_struct really ought to be unshared\nacross exec; but 2.6.1 made that so to stop the loading binary\u0027s fd\nleaking into other threads, and a 32-bit process on a 64-bit kernel\nought to behave in the same way as 32 on 32 and 64 on 64.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ae5080f4c2e293229508dabe7c8a90af4e4c460",
      "tree": "9cb11f26905a82b7fac9d3b8f9d61d58bc5c94b0",
      "parents": [
        "2c9e15a011c55ff96b2b8d2b126d1b9a96abba20",
        "aabb8fdb41128705fd1627f56fdd571e45fdbcdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 27 16:23:12 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits)\n  fs: avoid I_NEW inodes\n  Merge code for single and multiple-instance mounts\n  Remove get_init_pts_sb()\n  Move common mknod_ptmx() calls into caller\n  Parse mount options just once and copy them to super block\n  Unroll essentials of do_remount_sb() into devpts\n  vfs: simple_set_mnt() should return void\n  fs: move bdev code out of buffer.c\n  constify dentry_operations: rest\n  constify dentry_operations: configfs\n  constify dentry_operations: sysfs\n  constify dentry_operations: JFS\n  constify dentry_operations: OCFS2\n  constify dentry_operations: GFS2\n  constify dentry_operations: FAT\n  constify dentry_operations: FUSE\n  constify dentry_operations: procfs\n  constify dentry_operations: ecryptfs\n  constify dentry_operations: CIFS\n  constify dentry_operations: AFS\n  ...\n"
    },
    {
      "commit": "2b1c6bd77d4e6a727ffac8630cd154b2144b751a",
      "tree": "ffc4237dbeed66492124ef2ccecf48db0767531a",
      "parents": [
        "ec1ab0abde0af586a59541ad71841f022dcac3e7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Nov 28 10:09:09 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:43:57 2009 -0400"
      },
      "message": "generic compat_sys_ustat\n\nDue to a different size of ino_t ustat needs a compat handler, but\ncurrently only x86 and mips provide one.  Add a generic compat_sys_ustat\nand switch all architectures over to it.  Instead of doing various\nuser copy hacks compat_sys_ustat just reimplements sys_ustat as\nit\u0027s trivial.  This was suggested by Arnd Bergmann.\n\nFound by Eric Sandeen when running xfstests/017 on ppc64, which causes\nstack smashing warnings on RHEL/Fedora due to the too large amount of\ndata writen by the syscall.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "703a3cd72817e99201cef84a8a7aecc60b2b3581",
      "tree": "3e943755178ff410694722bb031f523136fbc432",
      "parents": [
        "df7f54c012b92ec93d56b68547351dcdf8a163d3",
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 24 10:52:46 2009 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 24 10:52:46 2009 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n"
    },
    {
      "commit": "f9ce1f1cda8b73a36f47e424975a9dfa78b7840c",
      "tree": "66138b33dbf627f99f5ec67e0e39ce15ab830080",
      "parents": [
        "523979adfa0b79d4e3aa053220c37a9233294206"
      ],
      "author": {
        "name": "Kentaro Takeda",
        "email": "takedakn@nttdata.co.jp",
        "time": "Thu Feb 05 17:18:11 2009 +0900"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Feb 12 15:15:03 2009 +1100"
      },
      "message": "Add in_execve flag into task_struct.\n\nThis patch allows LSM modules to determine whether current process is in an\nexecve operation or not so that they can behave differently while an execve\noperation is in progress.\n\nThis patch is needed by TOMOYO. Please see another patch titled \"LSM adapter\nfunctions.\" for backgrounds.\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "0bf2f3aec5474da80a60e1baca629af87ecb67b6",
      "tree": "5c1a7733e24aaacbcf46e0434a11f033cfde43ca",
      "parents": [
        "6cec50838ed04a9833fb5549f698d3756bbe7e72"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Feb 06 11:45:46 2009 +0000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sat Feb 07 08:46:18 2009 +1100"
      },
      "message": "CRED: Fix SUID exec regression\n\nThe patch:\n\n\tcommit a6f76f23d297f70e2a6b3ec607f7aeeea9e37e8d\n\tCRED: Make execve() take advantage of copy-on-write credentials\n\nmoved the place in which the \u0027safeness\u0027 of a SUID/SGID exec was performed to\nbefore de_thread() was called.  This means that LSM_UNSAFE_SHARE is now\ncalculated incorrectly.  This flag is set if any of the usage counts for\nfs_struct, files_struct and sighand_struct are greater than 1 at the time the\ndetermination is made.  All of which are true for threads created by the\npthread library.\n\nHowever, since we wish to make the security calculation before irrevocably\ndamaging the process so that we can return it an error code in the case where\nwe decide we want to reject the exec request on this basis, we have to make the\ndetermination before calling de_thread().\n\nSo, instead, we count up the number of threads (CLONE_THREAD) that are sharing\nour fs_struct (CLONE_FS), files_struct (CLONE_FILES) and sighand_structs\n(CLONE_SIGHAND/CLONE_THREAD) with us.  These will be killed by de_thread() and\nso can be discounted by check_unsafe_exec().\n\nWe do have to be careful because CLONE_THREAD does not imply FS or FILES.\n\nWe _assume_ that there will be no extra references to these structs held by the\nthreads we\u0027re going to kill.\n\nThis can be tested with the attached pair of programs.  Build the two programs\nusing the Makefile supplied, and run ./test1 as a non-root user.  If\nsuccessful, you should see something like:\n\n\t[dhowells@andromeda tmp]$ ./test1\n\t--TEST1--\n\tuid\u003d4043, euid\u003d4043 suid\u003d4043\n\texec ./test2\n\t--TEST2--\n\tuid\u003d4043, euid\u003d0 suid\u003d0\n\tSUCCESS - Correct effective user ID\n\nand if unsuccessful, something like:\n\n\t[dhowells@andromeda tmp]$ ./test1\n\t--TEST1--\n\tuid\u003d4043, euid\u003d4043 suid\u003d4043\n\texec ./test2\n\t--TEST2--\n\tuid\u003d4043, euid\u003d4043 suid\u003d4043\n\tERROR - Incorrect effective user ID!\n\nThe non-root user ID you see will depend on the user you run as.\n\n[test1.c]\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cpthread.h\u003e\n\nstatic void *thread_func(void *arg)\n{\n\twhile (1) {}\n}\n\nint main(int argc, char **argv)\n{\n\tpthread_t tid;\n\tuid_t uid, euid, suid;\n\n\tprintf(\"--TEST1--\\n\");\n\tgetresuid(\u0026uid, \u0026euid, \u0026suid);\n\tprintf(\"uid\u003d%d, euid\u003d%d suid\u003d%d\\n\", uid, euid, suid);\n\n\tif (pthread_create(\u0026tid, NULL, thread_func, NULL) \u003c 0) {\n\t\tperror(\"pthread_create\");\n\t\texit(1);\n\t}\n\n\tprintf(\"exec ./test2\\n\");\n\texeclp(\"./test2\", \"test2\", NULL);\n\tperror(\"./test2\");\n\t_exit(1);\n}\n\n[test2.c]\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n\nint main(int argc, char **argv)\n{\n\tuid_t uid, euid, suid;\n\n\tgetresuid(\u0026uid, \u0026euid, \u0026suid);\n\tprintf(\"--TEST2--\\n\");\n\tprintf(\"uid\u003d%d, euid\u003d%d suid\u003d%d\\n\", uid, euid, suid);\n\n\tif (euid !\u003d 0) {\n\t\tfprintf(stderr, \"ERROR - Incorrect effective user ID!\\n\");\n\t\texit(1);\n\t}\n\tprintf(\"SUCCESS - Correct effective user ID\\n\");\n\texit(0);\n}\n\n[Makefile]\nCFLAGS \u003d -D_GNU_SOURCE -Wall -Werror -Wunused\nall: test1 test2\n\ntest1: test1.c\n\tgcc $(CFLAGS) -o test1 test1.c -lpthread\n\ntest2: test2.c\n\tgcc $(CFLAGS) -o test2 test2.c\n\tsudo chown root.root test2\n\tsudo chmod +s test2\n\nReported-by: David Smith \u003cdsmith@redhat.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: David Smith \u003cdsmith@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "c9da9f2129d6a421c32e334a83770a9e67f7feac",
      "tree": "389d3392e5d0508ce772c30a88006194baa1c5a6",
      "parents": [
        "1134723e96f6e2abcf8bfd7a2d1c96fcc323ef35"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:13:57 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:16 2009 +0100"
      },
      "message": "[CVE-2009-0029] Make sys_pselect7 static\n\nNot a single architecture has wired up sys_pselect7 plus it is the\nonly system call with seven parameters. Just make it static and\nrename it to do_pselect which will do the work for sys_pselect6.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "ca8a5bd28226d62c045e0e55b42b9d10b146c205",
      "tree": "ba770bf72dc0558c7009b7440a8c7a79abe45fa2",
      "parents": [
        "8c4018884a49eb2c6c7ca90804f331b12983561c"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Tue Jan 06 14:41:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:13 2009 -0800"
      },
      "message": "add missing accounting calls to compat_sys_{readv,writev}\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6f76f23d297f70e2a6b3ec607f7aeeea9e37e8d",
      "tree": "8f95617996d0974507f176163459212a7def8b9a",
      "parents": [
        "d84f4f992cbd76e8f39c488cf0c5d123843923b1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:24 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:24 2008 +1100"
      },
      "message": "CRED: Make execve() take advantage of copy-on-write credentials\n\nMake execve() take advantage of copy-on-write credentials, allowing it to set\nup the credentials in advance, and then commit the whole lot after the point\nof no return.\n\nThis patch and the preceding patches have been tested with the LTP SELinux\ntestsuite.\n\nThis patch makes several logical sets of alteration:\n\n (1) execve().\n\n     The credential bits from struct linux_binprm are, for the most part,\n     replaced with a single credentials pointer (bprm-\u003ecred).  This means that\n     all the creds can be calculated in advance and then applied at the point\n     of no return with no possibility of failure.\n\n     I would like to replace bprm-\u003ecap_effective with:\n\n\tcap_isclear(bprm-\u003ecap_effective)\n\n     but this seems impossible due to special behaviour for processes of pid 1\n     (they always retain their parent\u0027s capability masks where normally they\u0027d\n     be changed - see cap_bprm_set_creds()).\n\n     The following sequence of events now happens:\n\n     (a) At the start of do_execve, the current task\u0027s cred_exec_mutex is\n     \t locked to prevent PTRACE_ATTACH from obsoleting the calculation of\n     \t creds that we make.\n\n     (a) prepare_exec_creds() is then called to make a copy of the current\n     \t task\u0027s credentials and prepare it.  This copy is then assigned to\n     \t bprm-\u003ecred.\n\n  \t This renders security_bprm_alloc() and security_bprm_free()\n     \t unnecessary, and so they\u0027ve been removed.\n\n     (b) The determination of unsafe execution is now performed immediately\n     \t after (a) rather than later on in the code.  The result is stored in\n     \t bprm-\u003eunsafe for future reference.\n\n     (c) prepare_binprm() is called, possibly multiple times.\n\n     \t (i) This applies the result of set[ug]id binaries to the new creds\n     \t     attached to bprm-\u003ecred.  Personality bit clearance is recorded,\n     \t     but now deferred on the basis that the exec procedure may yet\n     \t     fail.\n\n         (ii) This then calls the new security_bprm_set_creds().  This should\n\t     calculate the new LSM and capability credentials into *bprm-\u003ecred.\n\n\t     This folds together security_bprm_set() and parts of\n\t     security_bprm_apply_creds() (these two have been removed).\n\t     Anything that might fail must be done at this point.\n\n         (iii) bprm-\u003ecred_prepared is set to 1.\n\n\t     bprm-\u003ecred_prepared is 0 on the first pass of the security\n\t     calculations, and 1 on all subsequent passes.  This allows SELinux\n\t     in (ii) to base its calculations only on the initial script and\n\t     not on the interpreter.\n\n     (d) flush_old_exec() is called to commit the task to execution.  This\n     \t performs the following steps with regard to credentials:\n\n\t (i) Clear pdeath_signal and set dumpable on certain circumstances that\n\t     may not be covered by commit_creds().\n\n         (ii) Clear any bits in current-\u003epersonality that were deferred from\n             (c.i).\n\n     (e) install_exec_creds() [compute_creds() as was] is called to install the\n     \t new credentials.  This performs the following steps with regard to\n     \t credentials:\n\n         (i) Calls security_bprm_committing_creds() to apply any security\n             requirements, such as flushing unauthorised files in SELinux, that\n             must be done before the credentials are changed.\n\n\t     This is made up of bits of security_bprm_apply_creds() and\n\t     security_bprm_post_apply_creds(), both of which have been removed.\n\t     This function is not allowed to fail; anything that might fail\n\t     must have been done in (c.ii).\n\n         (ii) Calls commit_creds() to apply the new credentials in a single\n             assignment (more or less).  Possibly pdeath_signal and dumpable\n             should be part of struct creds.\n\n\t (iii) Unlocks the task\u0027s cred_replace_mutex, thus allowing\n\t     PTRACE_ATTACH to take place.\n\n         (iv) Clears The bprm-\u003ecred pointer as the credentials it was holding\n             are now immutable.\n\n         (v) Calls security_bprm_committed_creds() to apply any security\n             alterations that must be done after the creds have been changed.\n             SELinux uses this to flush signals and signal handlers.\n\n     (f) If an error occurs before (d.i), bprm_free() will call abort_creds()\n     \t to destroy the proposed new credentials and will then unlock\n     \t cred_replace_mutex.  No changes to the credentials will have been\n     \t made.\n\n (2) LSM interface.\n\n     A number of functions have been changed, added or removed:\n\n     (*) security_bprm_alloc(), -\u003ebprm_alloc_security()\n     (*) security_bprm_free(), -\u003ebprm_free_security()\n\n     \t Removed in favour of preparing new credentials and modifying those.\n\n     (*) security_bprm_apply_creds(), -\u003ebprm_apply_creds()\n     (*) security_bprm_post_apply_creds(), -\u003ebprm_post_apply_creds()\n\n     \t Removed; split between security_bprm_set_creds(),\n     \t security_bprm_committing_creds() and security_bprm_committed_creds().\n\n     (*) security_bprm_set(), -\u003ebprm_set_security()\n\n     \t Removed; folded into security_bprm_set_creds().\n\n     (*) security_bprm_set_creds(), -\u003ebprm_set_creds()\n\n     \t New.  The new credentials in bprm-\u003ecreds should be checked and set up\n     \t as appropriate.  bprm-\u003ecred_prepared is 0 on the first call, 1 on the\n     \t second and subsequent calls.\n\n     (*) security_bprm_committing_creds(), -\u003ebprm_committing_creds()\n     (*) security_bprm_committed_creds(), -\u003ebprm_committed_creds()\n\n     \t New.  Apply the security effects of the new credentials.  This\n     \t includes closing unauthorised files in SELinux.  This function may not\n     \t fail.  When the former is called, the creds haven\u0027t yet been applied\n     \t to the process; when the latter is called, they have.\n\n \t The former may access bprm-\u003ecred, the latter may not.\n\n (3) SELinux.\n\n     SELinux has a number of changes, in addition to those to support the LSM\n     interface changes mentioned above:\n\n     (a) The bprm_security_struct struct has been removed in favour of using\n     \t the credentials-under-construction approach.\n\n     (c) flush_unauthorized_files() now takes a cred pointer and passes it on\n     \t to inode_has_perm(), file_has_perm() and dentry_open().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "4d36a9e65d4966b433b2f3424d9457468bc80e00",
      "tree": "8c7b8e64ae40769a3f9f948491987ba93698ee3a",
      "parents": [
        "44a504c405ae5c3a80e71acf71d6b1cb0db70715"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Oct 25 12:41:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 26 11:22:08 2008 -0700"
      },
      "message": "select: deal with math overflow from borderline valid userland data\n\nSome userland apps seem to pass in a \"0\" for the seconds, and several\nseconds worth of usecs to select().  The old kernels accepted this just\nfine, so the new kernels must too.\n\nHowever, due to the upscaling of the microseconds to nanoseconds we had\nsome cases where we got math overflow, and depending on the GCC version\n(due to inlining decisions) that actually resulted in an -EINVAL return.\n\nThis patch fixes this by adding the excess microseconds to the seconds\nfield.\n\nAlso with thanks to Marcin Slusarz for spotting some implementation bugs\nin the diagnostics patches.\n\nReported-by: Carlos R. Mafra \u003ccrmafra2@gmail.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f6d6e8ebe73ba9d9d4c693f7f6f50f661dbd6e4",
      "tree": "be7a2d20b1728da5a0d844a6f4cd382b2c2569fb",
      "parents": [
        "db563fc2e80534f98c7f9121a6f7dfe41f177a79",
        "268a3dcfea2077fca60d3715caa5c96f9b5e6ea7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:53:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:53:02 2008 -0700"
      },
      "message": "Merge branch \u0027v28-range-hrtimers-for-linus-v2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027v28-range-hrtimers-for-linus-v2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (37 commits)\n  hrtimers: add missing docbook comments to struct hrtimer\n  hrtimers: simplify hrtimer_peek_ahead_timers()\n  hrtimers: fix docbook comments\n  DECLARE_PER_CPU needs linux/percpu.h\n  hrtimers: fix typo\n  rangetimers: fix the bug reported by Ingo for real\n  rangetimer: fix BUG_ON reported by Ingo\n  rangetimer: fix x86 build failure for the !HRTIMERS case\n  select: fix alpha OSF wrapper\n  select: fix alpha OSF wrapper\n  hrtimer: peek at the timer queue just before going idle\n  hrtimer: make the futex() system call use the per process slack value\n  hrtimer: make the nanosleep() syscall use the per process slack\n  hrtimer: fix signed/unsigned bug in slack estimator\n  hrtimer: show the timer ranges in /proc/timer_list\n  hrtimer: incorporate feedback from Peter Zijlstra\n  hrtimer: add a hrtimer_start_range() function\n  hrtimer: another build fix\n  hrtimer: fix build bug found by Ingo\n  hrtimer: make select() and poll() use the hrtimer range feature\n  ...\n"
    },
    {
      "commit": "53c9c5c0e32c69f9df1822e47671c13e3402c82f",
      "tree": "76aae2cfde109c97451d40b5c6e5063e22690a03",
      "parents": [
        "a9885444f7ff6e9156adb1adf5558ded9a39ad0a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 24 07:29:52 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:10 2008 -0400"
      },
      "message": "[PATCH] prepare vfs_readdir() callers to returning filldir result\n\nIt\u0027s not the final state, but it allows moving -\u003ereaddir() instances\nto passing filldir return value to caller of vfs_readdir().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "651dab4264e4ba0e563f5ff56f748127246e9065",
      "tree": "016630974bdcb00fe529b673f96d389e0fd6dc94",
      "parents": [
        "40b8606253552109815786e5d4b0de98782d31f5",
        "2e532d68a2b3e2aa6b19731501222069735c741c"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Oct 17 09:20:26 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Oct 17 09:20:26 2008 -0700"
      },
      "message": "Merge commit \u0027linus/master\u0027 into merge-linus\n\nConflicts:\n\n\tarch/x86/kvm/i8254.c\n"
    },
    {
      "commit": "f7a5000f7a8924e9c5fad1801616601d6dc65a17",
      "tree": "82bd7f554378b26fe23707a3755359787b252574",
      "parents": [
        "f7ad160b49c49dc9cd383b9184c6fa4a9b4f7ebb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 15 22:02:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:33 2008 -0700"
      },
      "message": "compat: move cp_compat_stat to common code\n\nstruct stat / compat_stat is the same on all architectures, so\ncp_compat_stat should be, too.\n\nTurns out it is, except that various architectures have slightly and some\nhigh2lowuid/high2lowgid or the direct assignment instead of the\nSET_UID/SET_GID that expands to the correct one anyway.\n\nThis patch replaces the arch-specific cp_compat_stat implementations with\na common one based on the x86-64 one.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e [ sparc bits ]\nAcked-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e [ parisc bits ]\nCc: \u003clinux-arch@vger.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": "362e6663ef2369d77251496d865ad02a2376f962",
      "tree": "48155cf15d85a303623a3f672f719652b0585178",
      "parents": [
        "9679e4dd628743b9ef4375d60ae69923c3766173"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Wed Oct 15 22:01:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:32 2008 -0700"
      },
      "message": "exec.c, compat.c: fix count(), compat_count() bounds checking\n\nWith MAX_ARG_STRINGS set to 0x7FFFFFFF, and being passed to \u0027count()\u0027 and\ncompat_count(), it would appear that the current max bounds check of\nfs/exec.c:394:\n\n\tif(++i \u003e max)\n\t\treturn -E2BIG;\n\nwould never trigger. Since \u0027i\u0027 is of type int, so values would wrap and the\nfunction would continue looping.\n\nSimple fix seems to be chaning ++i to i++ and checking for \u0027\u003e\u003d\u0027.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Ollie Wild\" \u003caaw@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ff3e8e85fa6c312051134b3953e397feb639f51",
      "tree": "526886377ca92a62f030c25bc8f91f13a6f991eb",
      "parents": [
        "be5dad20a55e054a35dac7f6f5f184dc72b379b4"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Aug 31 08:26:40 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:35:03 2008 -0700"
      },
      "message": "select: switch select() and poll() over to hrtimers\n\nWith lots of help, input and cleanups from Thomas Gleixner\n\nThis patch switches select() and poll() over to hrtimers.\n\nThe core of the patch is replacing the \"s64 timeout\" with a\n\"struct timespec end_time\" in all the plumbing.\n\nBut most of the diffstat comes from using the just introduced helpers:\n\tpoll_select_set_timeout\n\tpoll_select_copy_remaining\n\ttimespec_add_safe\nwhich make manipulating the timespec easier and less error-prone.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b773ad40aca5bd755ba886620842f16e8fef6d75",
      "tree": "7065661f6559aff70244f2805ced48f894c9b38c",
      "parents": [
        "df0cc0539b4127bd02f64de2c335b4af1fdb3845"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Aug 31 08:16:57 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:34:59 2008 -0700"
      },
      "message": "select: add poll_select_set_timeout() and poll_select_copy_remaining() helpers\n\nThis patch adds 2 helpers that will be used for the hrtimer based select/poll:\n\npoll_select_set_timeout() is a helper that takes a timeout (as a second, nanosecond\npair) and turns that into a \"struct timespec\" that represents the absolute end time.\nThis is a common operation in the many select() and poll() variants and needs various,\ncommon, sanity checks.\n\npoll_select_copy_remaining() is a helper that takes care of copying the remaining\ntime to userspace, as select(), pselect() and ppoll() do. This function comes in\nboth a natural and a compat implementation (due to datastructure differences).\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "8f3f655da7288504c1013621090ecc940173ae1c",
      "tree": "add84c360aaf940d721166ff2685a27c094cf799",
      "parents": [
        "da574983de9f9283ba35662c8723627096e160de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 12 00:28:24 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 25 01:18:08 2008 -0400"
      },
      "message": "[PATCH] fix regular readdir() and friends\n\nHandling of -EOVERFLOW.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2d8f30380ab8c706f4e0a8f1aaa22b5886e9ac8a",
      "tree": "b798097fd831eab39f35c8c2e5a8ccfd7a850ef5",
      "parents": [
        "256984a83880ff7ac78055cb87baea48137f0b77"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 22 09:59:21 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:34 2008 -0400"
      },
      "message": "[PATCH] sanitize __user_walk_fd() et.al.\n\n* do not pass nameidata; struct path is all the callers want.\n* switch to new helpers:\n\tuser_path_at(dfd, pathname, flags, \u0026path)\n\tuser_path(pathname, \u0026path)\n\tuser_lpath(pathname, \u0026path)\n\tuser_path_dir(pathname, \u0026path)  (fail if not a directory)\n  The last 3 are trivial macro wrappers for the first one.\n* remove nameidata in callers.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9deb27baedb79759c3ab9435a7d8b841842d56e9",
      "tree": "1c88393ba30db851ca0bb93c4e656d4e5dbb22b9",
      "parents": [
        "7d9dbca34240ebb6ff88d8a29c6c7bffd098f0c1"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: signalfd\n\nThis patch adds the new signalfd4 syscall.  It extends the old signalfd\nsyscall by one parameter which is meant to hold a flag value.  In this\npatch the only flag support is SFD_CLOEXEC which causes the close-on-exec\nflag for the returned file descriptor to be set.\n\nA new name SFD_CLOEXEC is introduced which in this implementation must\nhave the same value as O_CLOEXEC.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003csignal.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_signalfd4\n# ifdef __x86_64__\n#  define __NR_signalfd4 289\n# elif defined __i386__\n#  define __NR_signalfd4 327\n# else\n#  error \"need __NR_signalfd4\"\n# endif\n#endif\n\n#define SFD_CLOEXEC O_CLOEXEC\n\nint\nmain (void)\n{\n  sigset_t ss;\n  sigemptyset (\u0026ss);\n  sigaddset (\u0026ss, SIGUSR1);\n  int fd \u003d syscall (__NR_signalfd4, -1, \u0026ss, 8, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"signalfd4(0) failed\");\n      return 1;\n    }\n  int coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (coe \u0026 FD_CLOEXEC)\n    {\n      puts (\"signalfd4(0) set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d syscall (__NR_signalfd4, -1, \u0026ss, 8, SFD_CLOEXEC);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"signalfd4(SFD_CLOEXEC) failed\");\n      return 1;\n    }\n  coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n    {\n      puts (\"signalfd4(SFD_CLOEXEC) does not set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n[akpm@linux-foundation.org: add sys_ni stub]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: \u003clinux-arch@vger.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": "f4a67cceee4a6f5ed38011a698c9e34747270ae5",
      "tree": "6da3eed51a938e1680a6212c56f9383bcf5670e0",
      "parents": [
        "91224346aa8c1cdaa660300a98e0b074a3a95030"
      ],
      "author": {
        "name": "Jon Tollefson",
        "email": "kniht@linux.vnet.ibm.com",
        "time": "Wed Jul 23 21:27:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:19 2008 -0700"
      },
      "message": "fs: check for statfs overflow\n\nAdds a check for an overflow in the filesystem size so if someone is\nchecking with statfs() on a 16G blocksize hugetlbfs in a 32bit binary that\nit will report back EOVERFLOW instead of a size of 0.\n\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08a6fac1c63233c87eec129938022f1a9a4d51f6",
      "tree": "4fd7a2a906cf5ca0a42b3b8cb30351465f0f6cee",
      "parents": [
        "5f719558edf9c84bfbb1f7ad37e84c483282d09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 10 16:38:25 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 16 17:23:05 2008 -0400"
      },
      "message": "[PATCH] get rid of leak in compat_execve()\n\nEven though copy_compat_strings() doesn\u0027t cache the pages,\ncopy_strings_kernel() and stuff indirectly called by e.g.\n-\u003eload_binary() is doing that, so we need to drop the\ncache contents in the end.\n\n[found by WANG Cong \u003cwangcong@zeuux.org\u003e]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "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": "52833e897fd8c6f62b3e5e27291fa9bc803f7460",
      "tree": "cfe90047ee6c7402674a29ec7258319142b96ff1",
      "parents": [
        "8d042218b075de3cdbe066198515b3521553746e",
        "4ee29f6a52158cea526b16a44ae38643946103ec"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 15 13:36:30 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Feb 15 13:36:30 2008 -0500"
      },
      "message": "Merge branch \u0027linus_origin\u0027 into hotfixes\n"
    },
    {
      "commit": "1d957f9bf87da74f420424d16ece005202bbebd3",
      "tree": "363d4770c0c74a536524c99ccd2762ce96ee9bbe",
      "parents": [
        "4ac9137858e08a19f29feac4e1f4df7c268b0ba5"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Introduce path_put()\n\n* Add path_put() functions for releasing a reference to the dentry and\n  vfsmount of a struct path in the right order\n\n* Switch from path_release(nd) to path_put(\u0026nd-\u003epath)\n\n* Rename dput_path() to path_put_conditional()\n\n[akpm@linux-foundation.org: fix cifs]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-fsdevel@vger.kernel.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4267c9561d9c3bb2abf45abed9c75a1c892d7d15",
      "tree": "cc2d15122ac06bebb25c87b53dc61e387c70f350",
      "parents": [
        "8e60029f403781b8a63b7ffdb7dc1faff6ca651e"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Wed Feb 13 14:55:17 2008 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 13 23:24:05 2008 -0500"
      },
      "message": "NFS: Allow text-based mounts via compat_sys_mount\n\nThe compat_sys_mount() system call throws EINVAL for text-based NFSv4\nmounts.\n\nThe text-based mount interface assumes that any mount option blob that\ndoesn\u0027t set the version field to \"1\" is a C string (ie not a legacy\nmount request).  The compat_sys_mount() call treats blobs that don\u0027t\nset the version field to \"1\" as an error.  We just relax the check in\ncompat_sys_mount() a bit to allow C strings to be passed down to the NFSv4\nclient.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0321155926b32cbc46f6603c6cc455e046b4d9b2",
      "tree": "01ca7e2709582dfd754bee427cf1959adbff52b2",
      "parents": [
        "de9330d13eac1f331e63ab1d18c506365b0151f3"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "olsajiri@gmail.com",
        "time": "Wed Feb 06 01:36:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:03 2008 -0800"
      },
      "message": "fs: remove dead config CONFIG_HAS_COMPAT_EPOLL_EVENT symbol\n\nRemove dead config CONFIG_HAS_COMPAT_EPOLL_EVENT symbol.\n\nSigned-off-by: Jiri Olsa \u003colsajiri@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": "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": "c43e259cc756ece387faae849af0058b56d78466",
      "tree": "1f1541560256b9fe2eeda5b07100baa14f39df59",
      "parents": [
        "bced95283e9434611cbad8f2ff903cd396eaea72"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sat Jan 12 22:05:48 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Jan 25 11:29:52 2008 +1100"
      },
      "message": "security: call security_file_permission from rw_verify_area\n\nAll instances of rw_verify_area() are followed by a call to\nsecurity_file_permission(), so just call the latter from the former.\n\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b6a2fea39318e43fee84fa7b0b90d68bed92d2ba",
      "tree": "c9c3619cb2730b5c10c7427b837146bce3d69156",
      "parents": [
        "bdf4c48af20a3b0f01671799ace345e3d49576da"
      ],
      "author": {
        "name": "Ollie Wild",
        "email": "aaw@google.com",
        "time": "Thu Jul 19 01:48:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:45 2007 -0700"
      },
      "message": "mm: variable length argument support\n\nRemove the arg+env limit of MAX_ARG_PAGES by copying the strings directly from\nthe old mm into the new mm.\n\nWe create the new mm before the binfmt code runs, and place the new stack at\nthe very top of the address space.  Once the binfmt code runs and figures out\nwhere the stack should be, we move it downwards.\n\nIt is a bit peculiar in that we have one task with two mm\u0027s, one of which is\ninactive.\n\n[a.p.zijlstra@chello.nl: limit stack size]\nSigned-off-by: Ollie Wild \u003caaw@google.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\n[bunk@stusta.de: unexport bprm_mm_init]\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6087b2dab2c914268b1a50882edbbad82bfefd29",
      "tree": "3f286422a61e7e3206b4a0dba6cb7c18a09e6463",
      "parents": [
        "7bb44adef39ad3bda2be40bb34686bc56bd563a5"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Wed May 23 13:57:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:12 2007 -0700"
      },
      "message": "optimize compat_core_sys_select() by a using stack space for small fd sets\n\nOptimize select by a using stack space for small fd sets.\ncore_sys_select() already has this optimization.  This is for compat\nversion.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8317f14b60c02c69cf7f594e2aabc8a3fdc9618d",
      "tree": "6888b4a803316916c2e4be3ff6c6228d45066831",
      "parents": [
        "d55e2ca87321b65387d3c52dd38128b3fe6723b0"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed May 16 22:11:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "simplify compat_sys_timerfd\n\nJust thought this is easier to read.\n\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83f5d1266926c75890f1bc4678e49d79483cb573",
      "tree": "ae97719503b7fe3688413655d89772bb8b644312",
      "parents": [
        "57ac8898508638ca6d15ecd8b911a431d673ff30"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:18 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 compat code\n\nThis patch implements the necessary compat code for the timerfd system call.\n\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"
    },
    {
      "commit": "6d18c9220965b437287c3a7e803725c24992ceac",
      "tree": "95b87523f134f10a25487b6fdc702a338fb0e911",
      "parents": [
        "2121e24bd8dd16b4e3f8d995428e2a748d5180cc"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:15 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: signalfd compat code\n\nThis patch implements the necessary compat code for the signalfd system call.\n\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"
    },
    {
      "commit": "1c710c896eb461895d3c399e15bb5f20b39c9073",
      "tree": "862e210cc6dad50abffd7640f01d50c3e9f3d375",
      "parents": [
        "ade5fb818fb1861fd5f84619c761920ade762b5d"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Tue May 08 00:33:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "utimensat implementation\n\nImplement utimensat(2) which is an extension to futimesat(2) in that it\n\na) supports nano-second resolution for the timestamps\nb) allows to selectively ignore the atime/mtime value\nc) allows to selectively use the current time for either atime or mtime\nd) supports changing the atime/mtime of a symlink itself along the lines\n   of the BSD lutimes(3) functions\n\nFor this change the internally used do_utimes() functions was changed to\naccept a timespec time value and an additional flags parameter.\n\nAdditionally the sys_utime function was changed to match compat_sys_utime\nwhich already use do_utimes instead of duplicating the work.\n\nAlso, the completely missing futimensat() functionality is added.  We have\nsuch a function in glibc but we have to resort to using /proc/self/fd/* which\nnot everybody likes (chroot etc).\n\nTest application (the syscall number will need per-arch editing):\n\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003ctime.h\u003e\n#include \u003csys/time.h\u003e\n#include \u003cstddef.h\u003e\n#include \u003csyscall.h\u003e\n\n#define __NR_utimensat 280\n\n#define UTIME_NOW       ((1l \u003c\u003c 30) - 1l)\n#define UTIME_OMIT      ((1l \u003c\u003c 30) - 2l)\n\nint\nmain(void)\n{\n  int status \u003d 0;\n\n  int fd \u003d open(\"ttt\", O_RDWR|O_CREAT|O_EXCL, 0666);\n  if (fd \u003d\u003d -1)\n    error (1, errno, \"failed to create test file \\\"ttt\\\"\");\n\n  struct stat64 st1;\n  if (fstat64 (fd, \u0026st1) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  struct timespec t[2];\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  struct stat64 st2;\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 0 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"atim not reset to zero\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim not reset to zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0] \u003d st1.st_atim;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d UTIME_OMIT;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_nsec !\u003d st1.st_atim.tv_nsec)\n    {\n      puts (\"atim not set\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim changed from zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d UTIME_OMIT;\n  t[1] \u003d st1.st_mtim;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_nsec !\u003d st1.st_atim.tv_nsec)\n    {\n      puts (\"mtim changed from original time\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d st1.st_mtim.tv_sec\n      || st2.st_mtim.tv_nsec !\u003d st1.st_mtim.tv_nsec)\n    {\n      puts (\"mtim not set\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  sleep (2);\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d UTIME_NOW;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d UTIME_NOW;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  struct timeval tv;\n  gettimeofday(\u0026tv,NULL);\n\n  if (st2.st_atim.tv_sec \u003c\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_sec \u003e tv.tv_sec)\n    {\n      puts (\"atim not set to NOW\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec \u003c\u003d st1.st_mtim.tv_sec\n      || st2.st_mtim.tv_sec \u003e tv.tv_sec)\n    {\n      puts (\"mtim not set to NOW\");\n      status \u003d 1;\n    }\n\n  if (symlink (\"ttt\", \"tttsym\") !\u003d 0)\n    error (1, errno, \"cannot create symlink\");\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"tttsym\", t, AT_SYMLINK_NOFOLLOW) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (lstat64 (\"tttsym\", \u0026st2) !\u003d 0)\n    error (1, errno, \"lstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 0 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"symlink atim not reset to zero\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"symlink mtim not reset to zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0].tv_sec \u003d 1;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 1;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, fd, NULL, t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 1 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"atim not reset to one\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 1 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim not reset to one\");\n      status \u003d 1;\n    }\n\n  if (status \u003d\u003d 0)\n     puts (\"all OK\");\n\n out:\n  close (fd);\n  unlink (\"ttt\");\n  unlink (\"tttsym\");\n\n  return status;\n}\n\n[akpm@linux-foundation.org: add missing i386 syscall table entry]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: \u003clinux-arch@vger.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": "6272e2667965dfb5b59199f462cd0f001fb304a6",
      "tree": "a14a4537dcd7af09863cc3a1c19a3efe386d67ab",
      "parents": [
        "039b6b3ed84e45a6f8316358dd2bfdc83d59fc45"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:29:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "cleanup compat ioctl handling\n\nMerge all compat ioctl handling into compat_ioctl.c instead of splitting it\nover compat.c and compat_ioctl.c.  This also allows to get rid of ioctl32.h\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nLooks-good-to: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "a106009bdfa12b6452b724cc0718ca8e1334745d",
      "tree": "f42d70dff689aec8d3c2494deb4dd3a438b7f03d",
      "parents": [
        "c812d6c198c5f39a6ea22a9a12d518cd3714af16"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "message": "[PATCH] x86-64: Print type and size correctly for unknown compat ioctls\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "f6dfb4fd7dd94429ef1d5233688aaed2a63f856b",
      "tree": "81c29bfad51e187830ca059855aa285e350c9481",
      "parents": [
        "b40df5743ee8aed8674edbbb77b8fd3c8c7a747f"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Wed Mar 07 20:41:21 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 08 07:38:22 2007 -0800"
      },
      "message": "[PATCH] Add epoll compat_ code to fs/compat.c\n\nIA64 and ARM-OABI are currently using their own version of epoll compat_\ncode.\n\nAn architecture needs epoll_event translation if alignof(u64) in 32 bit\nmode is different from alignof(u64) in 64 bit mode.  If an architecture\nneeds epoll_event translation, it must define struct compat_epoll_event in\nasm/compat.h and set CONFIG_HAVE_COMPAT_EPOLL_EVENT and use\ncompat_sys_epoll_ctl and compat_sys_epoll_wait.\n\nAll 64 bit architecture should use compat_sys_epoll_pwait.\n\n[sfr: restructure and move to fs/compat.c, remove MIPS version\nof compat_sys_epoll_pwait, use __put_user_unaligned]\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\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": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7116e994b47f3988389be4ceee67dac64b56e0d0",
      "tree": "f6b722a14cba117898456c3a9edbe7538310db2f",
      "parents": [
        "841d5fb7c75260f76ae682648b28a3dca724940d"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Dec 06 20:36:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:33 2006 -0800"
      },
      "message": "[PATCH] compat: fix uaccess handling\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "822191a2fa1584a29c3224ab328507adcaeac1ab",
      "tree": "833b6e7d88fc49bf430826db26f75b4877593a15",
      "parents": [
        "a1e85378ba50694cf8f27b190c7e16d7c8dad276"
      ],
      "author": {
        "name": "Andrey Mirkin",
        "email": "amirkin@openvz.org",
        "time": "Wed Dec 06 20:31:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] skip data conversion in compat_sys_mount when data_page is NULL\n\nOpenVZ Linux kernel team has found a problem with mounting in compat mode.\n\nSimple command \"mount -t smbfs ...\" on Fedora Core 5 distro in 32-bit mode\nleads to oops:\n\n  Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP: compat_sys_mount+0xd6/0x290\n  Process mount (pid: 14656, veid\u003d300, threadinfo ffff810034d30000, task ffff810034c86bc0)\n  Call Trace: ia32_sysret+0x0/0xa\n\nThe problem is that data_page pointer can be NULL, so we should skip data\nconversion in this case.\n\nSigned-off-by: Andrey Mirkin \u003camirkin@openvz.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bd01f843c3368dcee735c19603251669f23f4477",
      "tree": "3cb848f5577ff7c7cbb21982d81fa4baabc6a7b5",
      "parents": [
        "a1f8e7f7fb9d7e2cbcb53170edca7c0ac4680697"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 19 17:23:57 2006 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 04 02:00:31 2006 -0500"
      },
      "message": "[PATCH] severing skbuff.h -\u003e poll.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a1f8e7f7fb9d7e2cbcb53170edca7c0ac4680697",
      "tree": "2d1190c0099291d56a9c986f16bec17df2f6768b",
      "parents": [
        "b07e4ecd4d380ad697c54d729cb653d027077c99"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 19 16:08:53 2006 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 04 02:00:29 2006 -0500"
      },
      "message": "[PATCH] severing skbuff.h -\u003e highmem.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "87c2b7c045a44f6c1c7af23e64f2b286e6f7130a",
      "tree": "42c59705e0b04b8cd4770556f59f65228b62feaa",
      "parents": [
        "7870db4c7fa1b03fec133c4f4e67fdaa04c5ac15"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Nov 02 22:06:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Nov 03 12:27:55 2006 -0800"
      },
      "message": "[PATCH] sys_pselect7 vs compat_sys_pselect7 uaccess error handling\n\n758333458aa719bfc26ec16eafd4ad3a9e96014d fixes the not checked copy_to_user\nreturn value of compat_sys_pselect7.  I ran into this too because of an old\nsource tree, but my fix would look quite a bit different to Andi\u0027s fix.\n\nThe reason is that the compat function IMHO should behave the very same as\nthe non-compat function if possible.  Since sys_pselect7 does not return\n-EFAULT in this specific case, change the compat code so it behaves like\nsys_pselect7.\n\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90cbad65911b5952a03111423347a6ab38236e0b",
      "tree": "e4f554ef5370694ae0a1ae4d88327ad4df5d0e62",
      "parents": [
        "1e0dbafd30b2e1cd17fd141f4cfd633078524e8c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Tue Oct 10 22:44:17 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 10 15:37:20 2006 -0700"
      },
      "message": "[PATCH] more fs/compat.c __user annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "afefdbb28a0a2af689926c30b94a14aea6036719",
      "tree": "6ee500575cac928cd90045bcf5b691cf2b8daa09",
      "parents": [
        "1d32849b14bc8792e6f35ab27dd990d74b16126c"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Oct 03 01:13:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:03:40 2006 -0700"
      },
      "message": "[PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers\n\nThese patches make the kernel pass 64-bit inode numbers internally when\ncommunicating to userspace, even on a 32-bit system.  They are required\nbecause some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS\nfor example.  The 64-bit inode numbers are then propagated to userspace\nautomatically where the arch supports it.\n\nProblems have been seen with userspace (eg: ld.so) using the 64-bit inode\nnumber returned by stat64() or getdents64() to differentiate files, and\nfailing because the 64-bit inode number space was compressed to 32-bits, and\nso overlaps occur.\n\nThis patch:\n\nMake filldir_t take a 64-bit inode number and struct kstat carry a 64-bit\ninode number so that 64-bit inode numbers can be passed back to userspace.\n\nThe stat functions then returns the full 64-bit inode number where\navailable and where possible.  If it is not possible to represent the inode\nnumber supplied by the filesystem in the field provided by userspace, then\nerror EOVERFLOW will be issued.\n\nSimilarly, the getdents/readdir functions now pass the full 64-bit inode\nnumber to userspace where possible, returning EOVERFLOW instead when a\ndirectory entry is encountered that can\u0027t be properly represented.\n\nNote that this means that some inodes will not be stat\u0027able on a 32-bit\nsystem with old libraries where they were before - but it does mean that\nthere will be no ambiguity over what a 32-bit inode number refers to.\n\nNote similarly that directory scans may be cut short with an error on a\n32-bit system with old libraries where the scan would work before for the\nsame reasons.\n\nIt is judged unlikely that this situation will occur because modern glibc\nuses 64-bit capable versions of stat and getdents class functions\nexclusively, and that older systems are unlikely to encounter\nunrepresentable inode numbers anyway.\n\n[akpm: alpha build fix]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3f2e05e90e0846c42626e3d272454f26be34a1bc",
      "tree": "8a1701fcb7cde32373b6d7ceca09376416bf94eb",
      "parents": [
        "9ec52099e4b8678a60e9f93e41ad87885d64f3e6"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Oct 02 14:12:31 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 08:03:31 2006 -0700"
      },
      "message": "[PATCH] BLOCK: Revert patch to hack around undeclared sigset_t in linux/compat.h\n\nRevert Andrew Morton\u0027s patch to temporarily hack around the lack of a\ndeclaration of sigset_t in linux/compat.h to make the block-disablement\npatches build on IA64.  This got accidentally pushed to Linus and should\nbe fixed in a different manner.\n\nAlso make linux/compat.h #include asm/signal.h to gain a definition of\nsigset_t so that it can externally declare sigset_from_compat().\n\nThis has been compile-tested for i386, x86_64, ia64, mips, mips64, frv, ppc and\nppc64 and run-tested on frv.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8f0ab5147951267134612570604cf8341901a80c",
      "tree": "d394edb3ab69396128e7971136f05fd71d863ece",
      "parents": [
        "9acc1853519a0473620d424105f9d49ea5b4e62e"
      ],
      "author": {
        "name": "Jay Lan",
        "email": "jlan@engr.sgi.com",
        "time": "Sat Sep 30 23:28:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:29 2006 -0700"
      },
      "message": "[PATCH] csa: convert CONFIG tag for extended accounting routines\n\nThere were a few accounting data/macros that are used in CSA but are #ifdef\u0027ed\ninside CONFIG_BSD_PROCESS_ACCT.  This patch is to change those ifdef\u0027s from\nCONFIG_BSD_PROCESS_ACCT to CONFIG_TASK_XACCT.  A few defines are moved from\nkernel/acct.c and include/linux/acct.h to kernel/tsacct.c and\ninclude/linux/tsacct_kern.h.\n\nSigned-off-by: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ee0b3e671baff681d69fbf0db33b47603c0a8280",
      "tree": "3202ff815b2196c6c353bc5b28d7a2800df273ec",
      "parents": [
        "027445c37282bc1ed26add45e573ad2d3e4860a5"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Sep 30 23:28:47 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:28 2006 -0700"
      },
      "message": "[PATCH] Remove readv/writev methods and use aio_read/aio_write instead\n\nThis patch removes readv() and writev() methods and replaces them with\naio_read()/aio_write() methods.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "07f3f05c1e3052b8656129b2a5aca9f888241a34",
      "tree": "3338b004d518a0d2189efdc3fb88e94e1c02c0ce",
      "parents": [
        "65e6f5bc8149165efb9d7bdbd142bb837d5edfeb"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:52:18 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Sep 30 20:52:18 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move extern declarations out of fs/*.c into header files [try #6]\n\nCreate a new header file, fs/internal.h, for common definitions local to the\nsources in the fs/ directory.\n\nMove extern definitions that should be in header files from fs/*.c to\nfs/internal.h or other main header files where they span directories.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "758333458aa719bfc26ec16eafd4ad3a9e96014d",
      "tree": "84e4995b4e61b73ac1e235ea1554c75907ab08c4",
      "parents": [
        "95912008ba1fb9d0677c1ce5930aeb0e85ba5710"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Sep 26 10:52:39 2006 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Tue Sep 26 10:52:39 2006 +0200"
      },
      "message": "[PATCH] Check return value of copy_to_user in compat_sys_pselect7\n\nFix\n\nlinux/fs/compat.c: In function compat_sys_pselect7\nlinux/fs/compat.c:1869: warning: ignoring return value of copy_to_user, declared with attribute warn_unused_result\n\nTo make it easier to handle I changed to semantics to not try to\nwrite out a timespec if an error occurred. I hope that\u0027s ok.\n\nCc: dwmw2@infradead.org\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "bebfa1013eee1d91b3242e5801cc8fbdfaf148ec",
      "tree": "d1abf916c29bbb5c312717f57798987268aff9a9",
      "parents": [
        "f201611fcecdfa825471dc425ee007997228fae4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon Jun 26 13:56:52 2006 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 10:48:16 2006 -0700"
      },
      "message": "[PATCH] x86_64: Add compat_printk and sysctl to turn off compat layer warnings\n\nSometimes e.g. with crashme the compat layer warnings can be noisy.\nAdd a way to turn them off by gating all output through compat_printk\nthat checks a global sysctl. The default is not changed.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "726c334223180e3c0197cc980a432681370d4baf",
      "tree": "8327b354bb3dc959a6606051ae6f8d4d035e38a2",
      "parents": [
        "454e2398be9b9fa30433fccc548db34d19aa9958"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to perform statfs with a known root dentry\n\nGive the statfs superblock operation a dentry pointer rather than a superblock\npointer.\n\nThis complements the get_sb() patch.  That reduced the significance of\nsb-\u003es_root, allowing NFS to place a fake root there.  However, NFS does\nrequire a dentry to use as a target for the statfs operation.  This permits\nthe root in the vfsmount to be used instead.\n\nlinux/mount.h has been added where necessary to make allyesconfig build\nsuccessfully.\n\nInterest has also been expressed for use with the FUSE and XFS filesystems.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d64b1c878fc1e384ae53d1d40034239bc33848f4",
      "tree": "fe31b26f2db18d021cf04181bd39e08b2beb17f1",
      "parents": [
        "84b3932bf0fd8cdc8c75a5be77e1dded1e6479c6"
      ],
      "author": {
        "name": "Lin Feng Shen",
        "email": "shenlinf@cn.ibm.com",
        "time": "Sat May 20 14:59:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun May 21 12:59:16 2006 -0700"
      },
      "message": "[PATCH] NFS: fix error handling on access_ok in compat_sys_nfsservctl\n\nFunctions compat_nfs_svc_trans, compat_nfs_clnt_trans,\ncompat_nfs_exp_trans, compat_nfs_getfd_trans and compat_nfs_getfs_trans,\nwhich are called by compat_sys_nfsservctl(fs/compat.c), don\u0027t handle the\nreturn value of access_ok properly.  access_ok return 1 when the addr is\nvalid, and 0 when it\u0027s not, but these functions have the reversed\nunderstanding.  When the address is valid, they always return -EFAULT to\ncompat_sys_nfsservctl.\n\nAn example is to run /usr/sbin/rpc.nfsd(32bit program on Power5).  It\ndoesn\u0027t function as expected.  strace showes that nfsservctl returns\n-EFAULT.\n\nThe patch fixes this by correcting the error handling on the return value\nof access_ok in the five functions.\n\nSigned-off-by: Lin Feng Shen \u003cshenlinf@cn.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3835a9bd07778d87dea37fbf190f70883515e8fc",
      "tree": "e094973e46552335bb1ecaa9eaee04788df45b16",
      "parents": [
        "bb53a76116a8af13ee2581c85c02fe40e0c1a599"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 15 09:44:27 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon May 15 11:20:57 2006 -0700"
      },
      "message": "[PATCH] fs/compat.c: fix \u0027if (a |\u003d b )\u0027 typo\n\nMentioned by Mark Armbrust somewhere on Usenet.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "98232d504db0a1f91ecaa93686ed3bf61963103b",
      "tree": "0034c6798c6463775da82e30561ef6a7e37c5a08",
      "parents": [
        "a0548871ed267ae12eb1c860c5aaebd9e466b34e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu May 04 09:13:49 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu May 04 09:13:49 2006 +0200"
      },
      "message": "[PATCH] compat_sys_vmsplice: one-off in UIO_MAXIOV check\n\nnr_segs may not be \u003e UIO_MAXIOV, however it may be equal to. This makes\nthe behaviour identical to the real sys_vmsplice(). The other foov\nsyscalls also agree that this is the way to go.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "d2610202290b4924b71747314a0f88f28807702e",
      "tree": "bdfde16e24caa597f66504d555b06ee2e480ef54",
      "parents": [
        "5e7dd2ab6b9bdfa60e19b8739e6b2a204fd4f477"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon May 01 12:15:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon May 01 18:17:43 2006 -0700"
      },
      "message": "[PATCH] x86_64: Add compat_sys_vmsplice and use it in x86-64\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e7edf9cdeddc0cff125e8e658216efb2ff2b2219",
      "tree": "4a7c5c915a5d44a14f32261ada050021d91e3e56",
      "parents": [
        "a090d9132c1e53e3517111123680c15afb25c0a4"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Apr 26 02:45:03 2006 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Apr 26 07:52:21 2006 -0700"
      },
      "message": "[PATCH] LSM: add missing hook to do_compat_readv_writev()\n\nThis patch addresses a flaw in LSM, where there is no mediation of readv()\nand writev() in for 32-bit compatible apps using a 64-bit kernel.\n\nThis bug was discovered and fixed initially in the native readv/writev\ncode [1], but was not fixed in the compat code.  Thanks to Al for spotting\nthis one.\n\n  [1] http://lwn.net/Articles/154282/\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "68c3431ae22912be580c68d3955ef46515582943",
      "tree": "e65917db1f37eca94d6cc11221d9b99b01e27f80",
      "parents": [
        "e4a1f129f9e43a5e5d28fe6d1b214246a398cdce"
      ],
      "author": {
        "name": "Vadim Lobanov",
        "email": "vlobanov@speakeasy.net",
        "time": "Tue Mar 28 01:56:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:04 2006 -0800"
      },
      "message": "[PATCH] Fold select_bits_alloc/free into caller code.\n\nRemove an unnecessary level of indirection in allocating and freeing select\nbits, as per the select_bits_alloc() and select_bits_free() functions.\nBoth select.c and compat.c are updated.\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": "11b0b5abb2097a63c1081d9b7e825b987b227972",
      "tree": "162c828c8d807a1b30869acbe11682dc9222dc16",
      "parents": [
        "656bde5728b824ca23fcab8bc5800b309ea48d64"
      ],
      "author": {
        "name": "Oliver Neukum",
        "email": "neukum@fachschaft.cup.uni-muenchen.de",
        "time": "Sat Mar 25 03:08:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] use kzalloc and kcalloc in core fs code\n\nSigned-off-by: Oliver Neukum \u003coliver@neukum.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "57070d012cd425c3a71663528c56a436abd2d9da"
}
