)]}'
{
  "log": [
    {
      "commit": "adb5c2473d3f91526c79db972aafb20a56d3fbb3",
      "tree": "f0427a11a91af2f5a5d0037ce52c32633019120b",
      "parents": [
        "669abf4e5539c8aa48bf28c965be05c0a7b58a27"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "audit: make audit_inode take struct filename\n\nKeep a pointer to the audit_names \"slot\" in struct filename.\n\nHave all of the audit_inode callers pass a struct filename ponter to\naudit_inode instead of a string pointer. If the aname field is already\npopulated, then we can skip walking the list altogether and just use it\ndirectly.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "91a27b2a756784714e924e5e854b919273082d26",
      "tree": "3913246b7d6e62703ec915f481e3a7159393f0f0",
      "parents": [
        "8e377d15078a501c4da98471f56396343c407d92"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:14:55 2012 -0400"
      },
      "message": "vfs: define struct filename and have getname() return it\n\ngetname() is intended to copy pathname strings from userspace into a\nkernel buffer. The result is just a string in kernel space. It would\nhowever be quite helpful to be able to attach some ancillary info to\nthe string.\n\nFor instance, we could attach some audit-related info to reduce the\namount of audit-related processing needed. When auditing is enabled,\nwe could also call getname() on the string more than once and not\nneed to recopy it from userspace.\n\nThis patchset converts the getname()/putname() interfaces to return\na struct instead of a string. For now, the struct just tracks the\nstring in kernel space and the original userland pointer for it.\n\nLater, we\u0027ll add other information to the struct as it becomes\nconvenient.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bfcec7087458812f575d9022b2d151641f34ee84",
      "tree": "6c0f7dd3b016992da8d113ceeaae404c6abc03a1",
      "parents": [
        "78e2e802a8519031e5858595070b39713e26340d"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:23 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:01 2012 -0400"
      },
      "message": "audit: set the name_len in audit_inode for parent lookups\n\nCurrently, this gets set mostly by happenstance when we call into\naudit_inode_child. While that might be a little more efficient, it seems\nwrong. If the syscall ends up failing before audit_inode_child ever gets\ncalled, then you\u0027ll have an audit_names record that shows the full path\nbut has the parent inode info attached.\n\nFix this by passing in a parent flag when we call audit_inode that gets\nset to the value of LOOKUP_PARENT. We can then fix up the pathname for\nthe audit entry correctly from the get-go.\n\nWhile we\u0027re at it, clean up the no-op macro for audit_inode in the\n!CONFIG_AUDITSYSCALL case.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1638113d9d8b7e04c1eeae9014d43f6381a74040",
      "tree": "6eccf05889ebd3ebf916a602b4c8dc74b2f8105f",
      "parents": [
        "1ae1c1d09f220ded48ee9a7d91a65e94f95c4af1"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Mon Oct 08 16:30:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:31 2012 +0900"
      },
      "message": "ipc/mqueue: remove unnecessary rb_init_node() calls\n\nCommit d6629859b36d (\"ipc/mqueue: improve performance of send/recv\") and\nce2d52cc (\"ipc/mqueue: add rbtree node caching support\") introduced an\nrbtree of message priorities, and usage of rb_init_node() to initialize\nthe corresponding nodes.  As it turns out, rb_init_node() is unnecessary\nhere, as the nodes are fully initialized on insertion by rb_link_node()\nand the code doesn\u0027t access nodes that aren\u0027t inserted on the rbtree.\n\nRemoving the rb_init_node() calls as I removed that function during\nrbtree API cleanups (the only other use of it was in a place that\nsimilarly didn\u0027t require it).\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nAcked-by: Doug Ledford \u003cdledford@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": "aab174f0df5d72d31caccf281af5f614fa254578",
      "tree": "2a172c5009c4ac8755e858593154c258ce7709a0",
      "parents": [
        "ca41cc96b2813221b05af57d0355157924de5a07",
        "2bd2c1941f141ad780135ccc1cd08ca71a24f10a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 20:25:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 20:25:04 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs update from Al Viro:\n\n - big one - consolidation of descriptor-related logics; almost all of\n   that is moved to fs/file.c\n\n   (BTW, I\u0027m seriously tempted to rename the result to fd.c.  As it is,\n   we have a situation when file_table.c is about handling of struct\n   file and file.c is about handling of descriptor tables; the reasons\n   are historical - file_table.c used to be about a static array of\n   struct file we used to have way back).\n\n   A lot of stray ends got cleaned up and converted to saner primitives,\n   disgusting mess in android/binder.c is still disgusting, but at least\n   doesn\u0027t poke so much in descriptor table guts anymore.  A bunch of\n   relatively minor races got fixed in process, plus an ext4 struct file\n   leak.\n\n - related thing - fget_light() partially unuglified; see fdget() in\n   there (and yes, it generates the code as good as we used to have).\n\n - also related - bits of Cyrill\u0027s procfs stuff that got entangled into\n   that work; _not_ all of it, just the initial move to fs/proc/fd.c and\n   switch of fdinfo to seq_file.\n\n - Alex\u0027s fs/coredump.c spiltoff - the same story, had been easier to\n   take that commit than mess with conflicts.  The rest is a separate\n   pile, this was just a mechanical code movement.\n\n - a few misc patches all over the place.  Not all for this cycle,\n   there\u0027ll be more (and quite a few currently sit in akpm\u0027s tree).\"\n\nFix up trivial conflicts in the android binder driver, and some fairly\nsimple conflicts due to two different changes to the sock_alloc_file()\ninterface (\"take descriptor handling from sock_alloc_file() to callers\"\nvs \"net: Providing protocol type via system.sockprotoname xattr of\n/proc/PID/fd entries\" adding a dentry name to the socket)\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (72 commits)\n  MAX_LFS_FILESIZE should be a loff_t\n  compat: fs: Generic compat_sys_sendfile implementation\n  fs: push rcu_barrier() from deactivate_locked_super() to filesystems\n  btrfs: reada_extent doesn\u0027t need kref for refcount\n  coredump: move core dump functionality into its own file\n  coredump: prevent double-free on an error path in core dumper\n  usb/gadget: fix misannotations\n  fcntl: fix misannotations\n  ceph: don\u0027t abuse d_delete() on failure exits\n  hypfs: -\u003ed_parent is never NULL or negative\n  vfs: delete surplus inode NULL check\n  switch simple cases of fget_light to fdget\n  new helpers: fdget()/fdput()\n  switch o2hb_region_dev_write() to fget_light()\n  proc_map_files_readdir(): don\u0027t bother with grabbing files\n  make get_file() return its argument\n  vhost_set_vring(): turn pollstart/pollstop into bool\n  switch prctl_set_mm_exe_file() to fget_light()\n  switch xfs_find_handle() to fget_light()\n  switch xfs_swapext() to fget_light()\n  ...\n"
    },
    {
      "commit": "437589a74b6a590d175f86cf9f7b2efcee7765e7",
      "tree": "37bf8635b1356d80ef002b00e84f3faf3d555a63",
      "parents": [
        "68d47a137c3bef754923bccf73fb639c9b0bbd5e",
        "72235465864d84cedb2d9f26f8e1de824ee20339"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 11:11:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 11:11:09 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace changes from Eric Biederman:\n \"This is a mostly modest set of changes to enable basic user namespace\n  support.  This allows the code to code to compile with user namespaces\n  enabled and removes the assumption there is only the initial user\n  namespace.  Everything is converted except for the most complex of the\n  filesystems: autofs4, 9p, afs, ceph, cifs, coda, fuse, gfs2, ncpfs,\n  nfs, ocfs2 and xfs as those patches need a bit more review.\n\n  The strategy is to push kuid_t and kgid_t values are far down into\n  subsystems and filesystems as reasonable.  Leaving the make_kuid and\n  from_kuid operations to happen at the edge of userspace, as the values\n  come off the disk, and as the values come in from the network.\n  Letting compile type incompatible compile errors (present when user\n  namespaces are enabled) guide me to find the issues.\n\n  The most tricky areas have been the places where we had an implicit\n  union of uid and gid values and were storing them in an unsigned int.\n  Those places were converted into explicit unions.  I made certain to\n  handle those places with simple trivial patches.\n\n  Out of that work I discovered we have generic interfaces for storing\n  quota by projid.  I had never heard of the project identifiers before.\n  Adding full user namespace support for project identifiers accounts\n  for most of the code size growth in my git tree.\n\n  Ultimately there will be work to relax privlige checks from\n  \"capable(FOO)\" to \"ns_capable(user_ns, FOO)\" where it is safe allowing\n  root in a user names to do those things that today we only forbid to\n  non-root users because it will confuse suid root applications.\n\n  While I was pushing kuid_t and kgid_t changes deep into the audit code\n  I made a few other cleanups.  I capitalized on the fact we process\n  netlink messages in the context of the message sender.  I removed\n  usage of NETLINK_CRED, and started directly using current-\u003etty.\n\n  Some of these patches have also made it into maintainer trees, with no\n  problems from identical code from different trees showing up in\n  linux-next.\n\n  After reading through all of this code I feel like I might be able to\n  win a game of kernel trivial pursuit.\"\n\nFix up some fairly trivial conflicts in netfilter uid/git logging code.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (107 commits)\n  userns: Convert the ufs filesystem to use kuid/kgid where appropriate\n  userns: Convert the udf filesystem to use kuid/kgid where appropriate\n  userns: Convert ubifs to use kuid/kgid\n  userns: Convert squashfs to use kuid/kgid where appropriate\n  userns: Convert reiserfs to use kuid and kgid where appropriate\n  userns: Convert jfs to use kuid/kgid where appropriate\n  userns: Convert jffs2 to use kuid and kgid where appropriate\n  userns: Convert hpfs to use kuid and kgid where appropriate\n  userns: Convert btrfs to use kuid/kgid where appropriate\n  userns: Convert bfs to use kuid/kgid where appropriate\n  userns: Convert affs to use kuid/kgid wherwe appropriate\n  userns: On alpha modify linux_to_osf_stat to use convert from kuids and kgids\n  userns: On ia64 deal with current_uid and current_gid being kuid and kgid\n  userns: On ppc convert current_uid from a kuid before printing.\n  userns: Convert s390 getting uid and gid system calls to use kuid and kgid\n  userns: Convert s390 hypfs to use kuid and kgid where appropriate\n  userns: Convert binder ipc to use kuids\n  userns: Teach security_path_chown to take kuids and kgids\n  userns: Add user namespace support to IMA\n  userns: Convert EVM to deal with kuids and kgids in it\u0027s hmac computation\n  ...\n"
    },
    {
      "commit": "2903ff019b346ab8d36ebbf54853c3aaf6590608",
      "tree": "962d94054765bb37bc00e977c3036e65c5fd91fe",
      "parents": [
        "a5b470ba06aa3f96999ede5feba178df6bdb134a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 28 12:52:22 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 22:20:08 2012 -0400"
      },
      "message": "switch simple cases of fget_light to fdget\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "515e0d6634086d61ae846f0e8785b6f0220f3422",
      "tree": "b099c7ec3b4c075851a70e56c4683e412ca3492e",
      "parents": [
        "bdbf69437a5ae6f820a6d3aa8c6e3c3ce7e6e05f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 27 03:11:34 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:10:09 2012 -0400"
      },
      "message": "switch mqueue syscalls to fget_light()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1efdb69b0bb41dec8ee3e2cac0a0f167837d0919",
      "tree": "a9eb64c44d773e7b4fead20a7bfa9a354abf3bfa",
      "parents": [
        "9582d90196aa879e6acf866f02a1adead08707b5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Feb 07 16:54:11 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Sep 06 22:17:20 2012 -0700"
      },
      "message": "userns: Convert ipc to use kuid and kgid where appropriate\n\n- Store the ipc owner and creator with a kuid\n- Store the ipc group and the crators group with a kgid.\n- Add error handling to ipc_update_perms, allowing it to\n  fail if the uids and gids can not be converted to kuids\n  or kgids.\n- Modify the proc files to display the ipc creator and\n  owner in the user namespace of the opener of the proc file.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "312b90fbed0e07f61d2f060789440a83df6bba23",
      "tree": "ced839730a44af0cd472b08cb5e0ca46894188d5",
      "parents": [
        "20fb1936dee63fe397236d4ff3fd253a62b7b0b8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 06 10:18:17 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 18 16:51:26 2012 -0400"
      },
      "message": "mqueue: lift mnt_want_write() outside -\u003ei_mutex, clean up a bit\n\nthe way it abuses -\u003ed_fsdata still needs to be killed, but that\u0027s\na separate story.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c1d7e01d7877a397655277a920aeaa3830ed9461",
      "tree": "26ba70159355ba60d835cef1a417f03eaec0148c",
      "parents": [
        "05ba3f1aa1b04e921068249dd52a80bc84c2aeb4"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jul 30 14:42:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:21 2012 -0700"
      },
      "message": "ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION\n\nRather than #define the options manually in the architecture code, add\nKconfig options for them and select them there instead.  This also allows\nus to select the compat IPC version parsing automatically for platforms\nusing the old compat IPC interface.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05ba3f1aa1b04e921068249dd52a80bc84c2aeb4",
      "tree": "1176cbea1c1272e7f9567d8f2e71c56510f6efcf",
      "parents": [
        "b610c04c667f3c056243fd64041c7f152a512ee4"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jul 30 14:42:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:21 2012 -0700"
      },
      "message": "ipc: compat: use signed size_t types for msgsnd and msgrcv\n\nThe msgsnd and msgrcv system calls use size_t to represent the size of the\nmessage being transferred.  POSIX states that values of msgsz greater than\nSSIZE_MAX cause the result to be implementation-defined.  On Linux, this\nequates to returning -EINVAL if (long) msgsz \u003c 0.\n\nFor compat tasks where !CONFIG_ARCH_WANT_OLD_COMPAT_IPC and compat_size_t\nis smaller than size_t, negative size values passed from userspace will be\ninterpreted as positive values by do_msg{rcv,snd} and will fail to exit\nearly with -EINVAL.\n\nThis patch changes the compat prototypes for msg{rcv,snd} so that the\nmessage size is represented as a compat_ssize_t, which we cast to the\nnative ssize_t type for the core IPC code.\n\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nAcked-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b610c04c667f3c056243fd64041c7f152a512ee4",
      "tree": "786aef5a19de67d3b0480695703dd044a433f8bb",
      "parents": [
        "079a96ae3871f0ed9083aac2218136ccec5b9877"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jul 30 14:42:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:21 2012 -0700"
      },
      "message": "ipc: allow compat IPC version field parsing if !ARCH_WANT_OLD_COMPAT_IPC\n\nCommit 48b25c43e6ee (\"ipc: provide generic compat versions of IPC\nsyscalls\") added a new ARCH_WANT_OLD_COMPAT_IPC config option for\narchitectures to select if their compat target requires the old IPC\nsyscall interface.\n\nFor architectures (such as AArch64) that do not require the internal\ncalling conventions provided by this option, but have a compat target\nwhere the C library passes the IPC_64 flag explicitly,\ncompat_ipc_parse_version no longer strips out the flag before calling\nthe native system call implementation, resulting in unknown SHM/IPC\ncommands and -EINVAL being returned to userspace.\n\nThis patch separates the selection of the internal calling conventions\nfor the IPC syscalls from the version parsing, allowing architectures to\nselect __ARCH_WANT_COMPAT_IPC_PARSE_VERSION if they want to use version\nparsing whilst retaining the newer syscall calling conventions.\n\nAcked-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "079a96ae3871f0ed9083aac2218136ccec5b9877",
      "tree": "52acdeda67006d3d85eee0a17d6241657ba270dc",
      "parents": [
        "63dca8d5b5ef7effb58b8d6892a024125c0fab0b"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Mon Jul 30 14:42:38 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 30 17:25:20 2012 -0700"
      },
      "message": "ipc: add COMPAT_SHMLBA support\n\nIf the SHMLBA definition for a native task differs from the definition for\na compat task, the do_shmat() function would need to handle both.\n\nThis patch introduces COMPAT_SHMLBA, which is used by the compat shmat\nsyscall when calling the ipc code and allows architectures such as AArch64\n(where the native SHMLBA is 64k but the compat (AArch32) definition is\n16k) to provide the correct semantics for compat IPC system calls.\n\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "765927b2d508712d320c8934db963bbe14c3fcec",
      "tree": "97acdb14fae285764def396c4ed01d4d5c93e76a",
      "parents": [
        "bf349a447059656ebe63fb4fd1ccb27ac1da22ad"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 26 21:58:53 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 23 00:01:29 2012 +0400"
      },
      "message": "switch dentry_open() to struct path, make it grab references itself\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "312b63fba9e88a0dcf800834b8ede8716bcc1e17",
      "tree": "a069e3b9ff142912fd09f09a22466707d31c6812",
      "parents": [
        "ebfc3b49a7ac25920cb5be5445f602e51d2ea559"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:09:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:50 2012 +0400"
      },
      "message": "don\u0027t pass nameidata * to vfs_create()\n\nall we want is a boolean flag, same as the method gets now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebfc3b49a7ac25920cb5be5445f602e51d2ea559",
      "tree": "c3241f875dd04ab9f63b4e7ded7ed206e4df1b9f",
      "parents": [
        "72bd866a01fc62ccbc466f3eb7599b14c937e96b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:05:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:47 2012 +0400"
      },
      "message": "don\u0027t pass nameidata to -\u003ecreate()\n\nboolean \"does it have to be exclusive?\" flag is passed instead;\nLocal filesystem should just ignore it - the object is guaranteed\nnot to be there yet.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7d8a45695cc8f9fcdf4121fcbd897ecb63f758e4",
      "tree": "ba315d40c8b0457d132ea155d0db651275af6822",
      "parents": [
        "4e791c98ae7ff889121ca93b7bd97206e4a8d793"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Thu Jun 07 14:21:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 07 14:43:55 2012 -0700"
      },
      "message": "ipc: shm: restore MADV_REMOVE functionality on shared memory segments\n\nCommit 17cf28afea2a (\"mm/fs: remove truncate_range\") removed the\ntruncate_range inode operation in favour of the fallocate file\noperation.\n\nWhen using SYSV IPC shared memory segments, calling madvise with the\nMADV_REMOVE advice on an area of shared memory will attempt to invoke\nthe .fallocate function for the shm_file_operations, which is NULL and\ntherefore returns -EOPNOTSUPP to userspace.  The previous behaviour\nwould inherit the inode_operations from the underlying tmpfs file and\ninvoke truncate_range there.\n\nThis patch restores the previous behaviour by wrapping the underlying\nfallocate function in shm_fallocate, as we do for fsync.\n\n[hughd@google.com: use -ENOTSUPP in shm_fallocate()]\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@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": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "e3fc629d7bb70848fbf479688a66d4e76dff46ac",
      "tree": "96b6d5ffdb1c643fb28807a635e6ca4e24964034",
      "parents": [
        "98de59bfe4b2ff6344d9ad8e5296f80de5dcc5b6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:08:42 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:17 2012 -0400"
      },
      "message": "switch aio and shm to do_mmap_pgoff(), make do_mmap() static\n\nafter all, 0 bytes and 0 pages is the same thing...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8b3ec6814c83d76b85bd13badc48552836c24839",
      "tree": "2430a4511c7ea41f67b0d841f4c42eac43828db3",
      "parents": [
        "e5467859f7f79b69fc49004403009dfdba3bec53"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 17:11:23 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:01 2012 -0400"
      },
      "message": "take security_mmap_file() outside of -\u003emmap_sem\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ce2d52cc1364a22fc1a161781e60ee3cbb499a6d",
      "tree": "f21a7a5ddfdfc0a470304268928c047399e71c7a",
      "parents": [
        "7820b0715b6fb1378fab41b27fb7aa3950852cb7"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:38 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:31 2012 -0700"
      },
      "message": "ipc/mqueue: add rbtree node caching support\n\nWhen I wrote the first patch that added the rbtree support for message\nqueue insertion, it sped up the case where the queue was very full\ndrastically from the original code.  It, however, slowed down the case\nwhere the queue was empty (not drastically though).\n\nThis patch caches the last freed rbtree node struct so we can quickly\nreuse it when we get a new message.  This is the common path for any queue\nthat very frequently goes from 0 to 1 then back to 0 messages in queue.\n\nAndrew Morton didn\u0027t like that we were doing a GFP_ATOMIC allocation in\nmsg_insert, so this patch attempts to speculatively allocate a new node\nstruct outside of the spin lock when we know we need it, but will still\nfall back to a GFP_ATOMIC allocation if it has to.\n\nOnce I added the caching, the necessary various ret \u003d ; spin_unlock\ngyrations in mq_timedsend were getting pretty ugly, so this also slightly\nrefactors that function to streamline the flow of the code and the\nfunction exit.\n\nFinally, while working on getting performance back I made sure that all of\nthe node structs were always fully initialized when they were first used,\nrendering the use of kzalloc unnecessary and a waste of CPU cycles.\n\nThe net result of all of this is:\n\n1) We will avoid a GFP_ATOMIC allocation when possible, but fall back\n   on it when necessary.\n\n2) We will speculatively allocate a node struct using GFP_KERNEL if our\n   cache is empty (and save the struct to our cache if it\u0027s still empty\n   after we have obtained the spin lock).\n\n3) The performance of the common queue empty case has significantly\n   improved and is now much more in line with the older performance for\n   this case.\n\nThe performance changes are:\n\n            Old mqueue      new mqueue      new mqueue + caching\nqueue empty\nsend/recv   305/288ns       349/318ns       310/322ns\n\nI don\u0027t think we\u0027ll ever be able to get the recv performance back, but\nthat\u0027s because the old recv performance was a direct result and\nconsequence of the old methods abysmal send performance.  The recv path\nsimply must do more so that the send path does not incur such a penalty\nunder higher queue depths.\n\nAs it turns out, the new caching code also sped up the various queue full\ncases relative to my last patch.  That could be because of the difference\nbetween the syscall path in 3.3.4-rc5 and 3.3.4-rc6, or because of the\nchange in code flow in the mq_timedsend routine.  Regardless, I\u0027ll take\nit.  It wasn\u0027t huge, and I *would* say it was within the margin for error,\nbut after many repeated runs what I\u0027m seeing is that the old numbers trend\nslightly higher (about 10 to 20ns depending on which test is the one\nrunning).\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "113289cc086f80f28acd06f160a7c6423cdd4191",
      "tree": "4a50ff35f9cc0b320985a76b5f2e8313635b0f81",
      "parents": [
        "2c12ea498f349207c28840c0ed9654321aab7720"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:36 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:31 2012 -0700"
      },
      "message": "ipc/mqueue: strengthen checks on mqueue creation\n\nWe already check the mq attr struct if it\u0027s passed in, but now that the\nadmin can set system wide defaults separate from maximums, it\u0027s actually\npossible to set the defaults to something that would overflow.  So, if\nthere is no attr struct passed in to the open call, check the default\nvalues.\n\nWhile we are at it, simplify mq_attr_ok() by making it return 0 or an\nerror condition, so that way if we add more tests to it later, we have the\noption of what error should be returned instead of the calling location\nhaving to pick a possibly inaccurate error code.\n\n[akpm@linux-foundation.org: s/ENOMEM/EOVERFLOW/]\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c12ea498f349207c28840c0ed9654321aab7720",
      "tree": "ef0f938e66a8a8b038e5c6be29e7f27294023c7e",
      "parents": [
        "d6629859b36d953a4b1369b749f178736911bf10"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:36 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:31 2012 -0700"
      },
      "message": "ipc/mqueue: correct mq_attr_ok test\n\nWhile working on the other parts of the mqueue stuff, I noticed that the\ncalculation for overflow in mq_attr_ok didn\u0027t actually match reality (this\nis especially true since my last patch which changed how we account memory\nslightly).\n\nIn particular, we used to test for overflow using:\n  msgs * msgsize + msgs * sizeof(struct msg_msg *)\n\nThat was never really correct because each message we allocate via\nload_msg() is actually a struct msg_msg followed by the data for the\nmessage (and if struct msg_msg + data exceeds PAGE_SIZE we end up\nallocating struct msg_msgseg structs too, but accounting for them would\nget really tedious, so let\u0027s ignore those...they\u0027re only a pointer in size\nanyway).  This patch updates the calculation to be more accurate in\nregards to maximum possible memory consumption by the mqueue.\n\n[akpm@linux-foundation.org: add a local to simplify overflow-checking expression]\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d6629859b36d953a4b1369b749f178736911bf10",
      "tree": "154cfc0d8ff3b65f59b9052bcc41edaabf974063",
      "parents": [
        "50069a5851323ba5def0e414a21e234345016870"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:31 2012 -0700"
      },
      "message": "ipc/mqueue: improve performance of send/recv\n\nThe existing implementation of the POSIX message queue send and recv\nfunctions is, well, abysmal.  Even worse than abysmal.  I submitted a\npatch to increase the maximum POSIX message queue limit to 65536 due to\ncustomer needs, however, upon looking over the send/recv implementation, I\nrealized that my customer needs help with that too even if they don\u0027t know\nit.  The basic problem is that, given the fairly typical use case scenario\nfor a large queue of queueing lots of messages all at the same priority (I\nverified with my customer that this is indeed what their app does), the\nmsg_insert routine is basically a frikkin\u0027 bubble sort.  I mean, whoa,\nthat\u0027s *so* middle school.\n\nOK, OK, to not slam the original author too much, I\u0027m sure they didn\u0027t\nenvision a queue depth of 50,000+ messages.  No one would think that\nmoving elements in an array, one at a time, and dereferencing each pointer\nin that array to check priority of the message being pointed too, again\none at a time, for 50,000+ times would be good.  So let\u0027s assume that, as\nis typical, the users have found a way to break our code simply by using\nit in a way we didn\u0027t envision.  Fair enough.\n\n\"So, just how broken is it?\", you ask.  I wondered the same thing, so I\nwrote an app to let me know.  It\u0027s my next patch.  It gave me some\ninteresting results.  Here\u0027s what it tested:\n\nInterference with other apps - In continuous mode, the app just sits there\nand hits a message queue forever, while you go do something productive on\nanother terminal using other CPUs.  You then measure how long it takes you\nto do that something productive.  Then you restart the app in fake\ncontinuous mode, and it sits in a tight loop on a CPU while you repeat\nyour tests.  The whole point of this is to keep one CPU tied up (so it\ncan\u0027t be used in your other work) but in one case tied up hitting the\nmqueue code so we can see the effect of walking that 65,528 element array\none pointer at a time on the global CPU cache.  If it\u0027s bad, then it will\nslow down your app on the other CPUs just by polluting cache mercilessly.\nIn the fake case, it will be in a tight loop, but not polluting cache.\nTesting the mqueue subsystem directly - Here we just run a number of tests\nto see how the mqueue subsystem performs under different conditions.  A\ncouple conditions are known to be worst case for the old system, and some\nroutines, so this tests all of them.\n\nSo, on to the results already:\n\nSubsystem/Test                  Old                         New\n\nTime to compile linux\nkernel (make -j12 on a\n6 core CPU)\n  Running mqueue test     user 49m10.744s             user 45m26.294s\n\t\t\t   sys  5m51.924s              sys  4m59.894s\n\t\t\t total 55m02.668s            total 50m26.188s\n\n  Running fake test       user 45m32.686s             user 45m18.552s\n                           sys  5m12.465s              sys  4m56.468s\n                         total 50m45.151s            total 50m15.020s\n\n  % slowdown from mqueue\n    cache thrashing            ~8%                         ~.5%\n\nAvg time to send/recv (in nanoseconds per message)\n  when queue empty            305/288                    349/318\n  when queue full (65528 messages)\n    constant priority      526589/823                    362/314\n    increasing priority    403105/916                    495/445\n    decreasing priority     73420/594                    482/409\n    random priority        280147/920                    546/436\n\nTime to fill/drain queue (65528 messages, in seconds)\n  constant priority         17.37/.12                    .13/.12\n  increasing priority        4.14/.14                    .21/.18\n  decreasing priority       12.93/.13                    .21/.18\n  random priority            8.88/.16                    .22/.17\n\nSo, I think the results speak for themselves.  It\u0027s possible this\nimplementation could be improved by cacheing at least one priority level\nin the node tree (that would bring the queue empty performance more in\nline with the old implementation), but this works and is *so* much better\nthan what we had, especially for the common case of a single priority in\nuse, that further refinements can be in follow on patches.\n\n[akpm@linux-foundation.org: fix typo in comment, remove stray semicolon]\n[levinsasha928@gmail.com: use correct gfp flags in msg_insert]\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Sasha Levin \u003clevinsasha928@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": "cef0184c115e5e4e10498f6548d9526465e72478",
      "tree": "752c4116e0f93328239db9ff2c2ed730fef3ce0e",
      "parents": [
        "fd1f87d24d492fda464bedf10a5dd5174ff9b065"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 31 16:26:33 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:31 2012 -0700"
      },
      "message": "mqueue: separate mqueue default value from maximum value\n\nCommit b231cca4381e (\"message queues: increase range limits\") changed\nmqueue default value when attr parameter is specified NULL from hard\ncoded value to fs.mqueue.{msg,msgsize}_max sysctl value.\n\nThis made large side effect.  When user need to use two mqueue\napplications 1) using !NULL attr parameter and it require big message\nsize and 2) using NULL attr parameter and only need small size message,\napp (1) require to raise fs.mqueue.msgsize_max and app (2) consume large\nmemory size even though it doesn\u0027t need.\n\nDoug Ledford propsed to switch back it to static hard coded value.\nHowever it also has a compatibility problem.  Some applications might\nstarted depend on the default value is tunable.\n\nThe solution is to separate default value from maximum value.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nAcked-by: Doug Ledford \u003cdledford@redhat.com\u003e\nAcked-by: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fd1f87d24d492fda464bedf10a5dd5174ff9b065",
      "tree": "fe2de6c714277ee2ea739d1bfa81a0e539f0a46a",
      "parents": [
        "e6315bb154e778391ce64b194756bd3d108dadf6"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 31 16:26:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:31 2012 -0700"
      },
      "message": "mqueue: don\u0027t use kmalloc with KMALLOC_MAX_SIZE\n\nKMALLOC_MAX_SIZE is not a good threshold.  It is extremely high and\nproblematic.  Unfortunately, some silly drivers depend on this and we\ncan\u0027t change it.  But any new code needn\u0027t use such extreme ugly high\norder allocations.  It brings us awful fragmentation issues and system\nslowdown.\n\nSigned-off-by: KOSAKI Motohiro \u003cmkosaki@jp.fujitsu.com\u003e\nAcked-by: Doug Ledford \u003cdledford@redhat.com\u003e\nAcked-by: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b5c4d1a1440e94994c73dddbad7be0676cd8b9a",
      "tree": "fe00ef0f888fbfc40b7542fd8a66cf3368d3d2c7",
      "parents": [
        "02967ea08ede0f8cc7e0526aedffdae65a099b07"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:30 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:30 2012 -0700"
      },
      "message": "ipc/mqueue: update maximums for the mqueue subsystem\n\nCommit b231cca4381e (\"message queues: increase range limits\") changed the\nmaximum size of a message in a message queue from INT_MAX to 8192*128.\nUnfortunately, we had customers that relied on a size much larger than\n8192*128 on their production systems.  After reviewing POSIX, we found\nthat it is silent on the maximum message size.  We did find a couple other\nareas in which it was not silent.  Fix up the mqueue maximums so that the\ncustomer\u0027s system can continue to work, and document both the POSIX and\nreal world requirements in ipc_namespace.h so that we don\u0027t have this\nissue crop back up.\n\nAlso, commit 9cf18e1dd74cd0 (\"ipc: HARD_MSGMAX should be higher not lower\non 64bit\") fiddled with HARD_MSGMAX without realizing that the number was\nintentionally in place to limit the msg queue depth to one that was small\nenough to kmalloc an array of pointers (hence why we divided 128k by\nsizeof(long)).  If we wish to meet POSIX requirements, we have no choice\nbut to change our allocation to a vmalloc instead (at least for the large\nqueue size case).  With that, it\u0027s possible to increase our allowed\nmaximum to the POSIX requirements (or more if we choose).\n\n[sfr@canb.auug.org.au: using vmalloc requires including vmalloc.h]\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02967ea08ede0f8cc7e0526aedffdae65a099b07",
      "tree": "da66e39cf3023f437f43db1f58d510c99b8478fd",
      "parents": [
        "858ee3784e8105467f1f3017f4ece51cb51d4830"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:30 2012 -0700"
      },
      "message": "ipc/mqueue: enforce hard limits\n\nIn two places we don\u0027t enforce the hard limits for CAP_SYS_RESOURCE apps.\nIn preparation for making more reasonable hard limits, start enforcing\nthem even on CAP_SYS_RESOURCE.\n\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "858ee3784e8105467f1f3017f4ece51cb51d4830",
      "tree": "c95f55ff8bd29be3a8648acc21118a47b07d117b",
      "parents": [
        "93e6f119c0ce8a1bba6e81dc8dd97d67be360844"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:30 2012 -0700"
      },
      "message": "ipc/mqueue: switch back to using non-max values on create\n\nCommit b231cca4381e (\"message queues: increase range limits\") changed\nhow we create a queue that does not include an attr struct passed to\nopen so that it creates the queue with whatever the maximum values are.\nHowever, if the admin has set the maximums to allow flexibility in\ncreating a queue (aka, both a large size and large queue are allowed,\nbut combined they create a queue too large for the RLIMIT_MSGQUEUE of\nthe user), then attempts to create a queue without an attr struct will\nfail.  Switch back to using acceptable defaults regardless of what the\nmaximums are.\n\nNote: so far, we only know of a few applications that rely on this\nbehavior (specifically, set the maximums in /proc, then run the\napplication which calls mq_open() without passing in an attr struct, and\nthe application expects the newly created message queue to have the\nmaximum sizes that were set in /proc used on the mq_open() call, and all\nof those applications that we know of are actually part of regression\ntest suites that were coded to do something like this:\n\nfor size in 4096 65536 $((1024 * 1024)) $((16 * 1024 * 1024)); do\n\techo $size \u003e /proc/sys/fs/mqueue/msgsize_max\n\tmq_open || echo \"Error opening mq with size $size\"\ndone\n\nThese test suites that depend on any behavior like this are broken.  The\nconcept that programs should rely upon the system wide maximum in order\nto get their desired results instead of simply using a attr struct to\nspecify what they want is fundamentally unfriendly programming practice\nfor any multi-tasking OS.\n\nFixing this will break those few apps that we know of (and those app\nauthors recognize the brokenness of their code and the need to fix it).\nHowever, the following patch \"mqueue: separate mqueue default value\"\nallows a workaround in the form of new knobs for the default msg queue\ncreation parameters for any software out there that we don\u0027t already\nknow about that might rely on this behavior at the moment.\n\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "93e6f119c0ce8a1bba6e81dc8dd97d67be360844",
      "tree": "6d5131b4134d7aa6ba680a6a55f016bd6e03f319",
      "parents": [
        "29a5c67e7a78815fda0567a867adce467f6e6e5a"
      ],
      "author": {
        "name": "Doug Ledford",
        "email": "dledford@redhat.com",
        "time": "Thu May 31 16:26:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:30 2012 -0700"
      },
      "message": "ipc/mqueue: cleanup definition names and locations\n\nSince commit b231cca4381e (\"message queues: increase range limits\") on\nOct 18, 2008, calls to mq_open() that did not pass in an attribute\nstruct and expected to get default values for the size of the queue and\nthe max message size now get the system wide maximums instead of\nhardwired defaults like they used to get.\n\nThis was uncovered when one of the earlier patches in this patch set\nincreased the default system wide maximums at the same time it increased\nthe hard ceiling on the system wide maximums (a customer specifically\nneeded the hard ceiling brought back up, the new ceiling that commit\nb231cca4381e introduced was too low for their production systems).  By\nincreasing the default maximums and not realising they were tied to any\nattempt to create a message queue without an attribute struct, I had\ninadvertently made it such that all message queue creation attempts\nwithout an attribute struct were failing because the new default\nmaximums would create a queue that exceeded the default rlimit for\nmessage queue bytes.\n\nAs a result, the system wide defaults were brought back down to their\nprevious levels, and the system wide ceilings on the maximums were\nraised to meet the customer\u0027s needs.  However, the fact that the no\nattribute struct behavior of mq_open() could be broken by changing the\nsystem wide maximums for message queues was seen as fundamentally broken\nitself.  So we hardwired the no attribute case back like it used to be.\nBut, then we realized that on the very off chance that some piece of\nsoftware in the wild depended on that behavior, we could work around\nthat issue by adding two new knobs to /proc that allowed setting the\ndefaults for message queues created without an attr struct separately\nfrom the system wide maximums.\n\nWhat is not an option IMO is to leave the current behavior in place.  No\npiece of software should ever rely on setting the system wide maximums\nin order to get a desired message queue.  Such a reliance would be so\nfundamentally multitasking OS unfriendly as to not really be tolerable.\nFortunately, we don\u0027t know of any software in the wild that uses this\nexcept for a regression test program that caught the issue in the first\nplace.  If there is though, we have made accommodations with the two new\n/proc knobs (and that\u0027s all the accommodations such fundamentally broken\nsoftware can be allowed)..\n\nThis patch:\n\nThe various defines for minimums and maximums of the sysctl controllable\nmqueue values are scattered amongst different files and named\ninconsistently.  Move them all into ipc_namespace.h and make them have\nconsistent names.  Additionally, make the number of queues per namespace\nalso have a minimum and maximum and use the same sysctl function as the\nother two settable variables.\n\nSigned-off-by: Doug Ledford \u003cdledford@redhat.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\nCc: Joe Korty \u003cjoe.korty@ccur.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "76b6db010297d4928ab7b7e7c78dd982f413f0a4",
      "tree": "0d8fef729548a4f266684c0b7e56e4a9ed14780f",
      "parents": [
        "078de5f706ece36afd73bb4b8283314132d2dfdf"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Mar 14 15:24:19 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu May 03 03:28:39 2012 -0700"
      },
      "message": "userns: Replace user_ns_map_uid and user_ns_map_gid with from_kuid and from_kgid\n\nThese function are no longer needed replace them with their more useful equivalents.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "6f9ac6d93a0916de09d11b0a247ade8f4347728b",
      "tree": "93e47420422e8e99befd2c14aaab75fa167cbb59",
      "parents": [
        "aeb3ae9da9b50a386b22af786d19b623e8d9f0fa"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 16 22:57:55 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Apr 07 16:55:53 2012 -0700"
      },
      "message": "mqueue: Explicitly capture the user namespace to send the notification to.\n\nStop relying on user-\u003euser_ns which is going away and instead capture\nthe user_namespace of the process we are supposed to notify.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "c4a4d603796c727b9555867571f89483be9c565e",
      "tree": "ae3b47a7b8b35c866df53cb4b4a051d49a28904a",
      "parents": [
        "7e6bd8fadd1216f50468f965d0308f45e5109ced"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 16 23:15:31 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Apr 07 16:55:51 2012 -0700"
      },
      "message": "userns: Use cred-\u003euser_ns instead of cred-\u003euser-\u003euser_ns\n\nOptimize performance and prepare for the removal of the user_ns reference\nfrom user_struct.  Remove the slow long walk through cred-\u003euser-\u003euser_ns and\ninstead go straight to cred-\u003euser_ns.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "50483c3268918ee51a56d1baa39b9149d2d0d521",
      "tree": "2fb9c927c319628ebddfd118c10df3e626bdd1c4",
      "parents": [
        "7fda0412c5f7afdd1a5ff518f98dee5157266d8a",
        "1631fcea8399da5e80a80084b3b8c5bfd99d21e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:49:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:49:45 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile\n\nPull arch/tile (really asm-generic) update from Chris Metcalf:\n \"These are a couple of asm-generic changes that apply to tile.\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:\n  compat: use sys_sendfile64() implementation for sendfile syscall\n  [PATCH v3] ipc: provide generic compat versions of IPC syscalls\n"
    },
    {
      "commit": "95211279c5ad00a317c98221d7e4365e02f20836",
      "tree": "2ddc8625378d2915b8c96392f3cf6663b705ed55",
      "parents": [
        "5375871d432ae9fc581014ac117b96aaee3cd0c7",
        "12724850e8064f64b6223d26d78c0597c742c65a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge first batch of patches from Andrew Morton:\n \"A few misc things and all the MM queue\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (92 commits)\n  memcg: avoid THP split in task migration\n  thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE\n  memcg: clean up existing move charge code\n  mm/memcontrol.c: remove unnecessary \u0027break\u0027 in mem_cgroup_read()\n  mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()\n  mm/memcontrol.c: s/stealed/stolen/\n  memcg: fix performance of mem_cgroup_begin_update_page_stat()\n  memcg: remove PCG_FILE_MAPPED\n  memcg: use new logic for page stat accounting\n  memcg: remove PCG_MOVE_LOCK flag from page_cgroup\n  memcg: simplify move_account() check\n  memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)\n  memcg: kill dead prev_priority stubs\n  memcg: remove PCG_CACHE page_cgroup flag\n  memcg: let css_get_next() rely upon rcu_read_lock()\n  cgroup: revert ss_id_lock to spinlock\n  idr: make idr_get_next() good for rcu_read_lock()\n  memcg: remove unnecessary thp check in page stat accounting\n  memcg: remove redundant returns\n  memcg: enum lru_list lru\n  ...\n"
    },
    {
      "commit": "40716e29243de46720e5773797791466c28904ec",
      "tree": "19616ad05cbead73d0643b002a7ced8baa292ee2",
      "parents": [
        "21a3c273f88c9cbbaf7e14505df0131d95c8f262"
      ],
      "author": {
        "name": "Steven Truelove",
        "email": "steven.truelove@utoronto.ca",
        "time": "Wed Mar 21 16:34:14 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "hugetlbfs: fix alignment of huge page requests\n\nWhen calling shmget() with SHM_HUGETLB, shmget aligns the request size to\nPAGE_SIZE, but this is not sufficient.\n\nModify hugetlb_file_setup() to align requests to the huge page size, and\nto accept an address argument so that all alignment checks can be\nperformed in hugetlb_file_setup(), rather than in its callers.  Change\nnewseg() and mmap_pgoff() to match the new prototype and eliminate a now\nredundant alignment check.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Steven Truelove \u003csteven.truelove@utoronto.ca\u003e\nCc: Hugh Dickins \u003chughd@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": "e2a0883e4071237d09b604a342c28b96b44a04b3",
      "tree": "aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd",
      "parents": [
        "3a990a52f9f25f45469e272017a31e7a3fda60ed",
        "07c0c5d8b8c122b2f2df9ee574ac3083daefc981"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 1 from Al Viro:\n \"This is _not_ all; in particular, Miklos\u0027 and Jan\u0027s stuff is not there\n  yet.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)\n  ext4: initialization of ext4_li_mtx needs to be done earlier\n  debugfs-related mode_t whack-a-mole\n  hfsplus: add an ioctl to bless files\n  hfsplus: change finder_info to u32\n  hfsplus: initialise userflags\n  qnx4: new helper - try_extent()\n  qnx4: get rid of qnx4_bread/qnx4_getblk\n  take removal of PF_FORKNOEXEC to flush_old_exec()\n  trim includes in inode.c\n  um: uml_dup_mmap() relies on -\u003emmap_sem being held, but activate_mm() doesn\u0027t hold it\n  um: embed -\u003estub_pages[] into mmu_context\n  gadgetfs: list_for_each_safe() misuse\n  ocfs2: fix leaks on failure exits in module_init\n  ecryptfs: make register_filesystem() the last potential failure exit\n  ntfs: forgets to unregister sysctls on register_filesystem() failure\n  logfs: missing cleanup on register_filesystem() failure\n  jfs: mising cleanup on register_filesystem() failure\n  make configfs_pin_fs() return root dentry on success\n  configfs: configfs_create_dir() has parent dentry in dentry-\u003ed_parent\n  configfs: sanitize configfs_create()\n  ...\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48b25c43e6eebb6c0edf72935e8720385beca76b",
      "tree": "d1c774a79ef5a8373b093479c3dabe9bf16aec07",
      "parents": [
        "fde7d9049e55ab85a390be7f415d74c9f62dd0f9"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Mar 15 13:13:38 2012 -0400"
      },
      "committer": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Mar 15 13:13:38 2012 -0400"
      },
      "message": "[PATCH v3] ipc: provide generic compat versions of IPC syscalls\n\nWhen using the \"compat\" APIs, architectures will generally want to\nbe able to make direct syscalls to msgsnd(), shmctl(), etc., and\nin the kernel we would want them to be handled directly by\ncompat_sys_xxx() functions, as is true for other compat syscalls.\n\nHowever, for historical reasons, several of the existing compat IPC\nsyscalls do not do this.  semctl() expects a pointer to the fourth\nargument, instead of the fourth argument itself.  msgsnd(), msgrcv()\nand shmat() expect arguments in different order.\n\nThis change adds an ARCH_WANT_OLD_COMPAT_IPC config option that can be\nset to preserve this behavior for ports that use it (x86, sparc, powerpc,\ns390, and mips).  No actual semantics are changed for those architectures,\nand there is only a minimal amount of code refactoring in ipc/compat.c.\n\nNewer architectures like tile (and perhaps future architectures such\nas arm64 and unicore64) should not select this option, and thus can\navoid having any IPC-specific code at all in their architecture-specific\ncompat layer.  In the same vein, if this option is not selected, IPC_64\nmode is assumed, since that\u0027s what the \u003casm-generic\u003e headers expect.\n\nThe workaround code in \"tile\" for msgsnd() and msgrcv() is removed\nwith this change; it also fixes the bug that shmat() and semctl() were\nnot being properly handled.\n\nReviewed-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\n"
    },
    {
      "commit": "4040153087478993cbf0809f444400a3c808074c",
      "tree": "2dc7af85b0cf930f1656553bd38410b8c16601a6",
      "parents": [
        "191c542442fdf53cc3c496c00be13367fd9cd42d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Mon Feb 13 03:58:52 2012 +0000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Feb 14 10:45:42 2012 +1100"
      },
      "message": "security: trim security.h\n\nTrim security.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "245132643e1cfcd145bbc86a716c1818371fcb93",
      "tree": "e5bf3cb56efedb059b1a68fd8efd37482131783b",
      "parents": [
        "85046579bde15e532983438f86b36856e358f417"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Jan 20 14:34:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:48 2012 -0800"
      },
      "message": "SHM_UNLOCK: fix Unevictable pages stranded after swap\n\nCommit cc39c6a9bbde (\"mm: account skipped entries to avoid looping in\nfind_get_pages\") correctly fixed an infinite loop; but left a problem\nthat find_get_pages() on shmem would return 0 (appearing to callers to\nmean end of tree) when it meets a run of nr_pages swap entries.\n\nThe only uses of find_get_pages() on shmem are via pagevec_lookup(),\ncalled from invalidate_mapping_pages(), and from shmctl SHM_UNLOCK\u0027s\nscan_mapping_unevictable_pages().  The first is already commented, and\nnot worth worrying about; but the second can leave pages on the\nUnevictable list after an unusual sequence of swapping and locking.\n\nFix that by using shmem_find_get_pages_and_swap() (then ignoring the\nswap) instead of pagevec_lookup().\n\nBut I don\u0027t want to contaminate vmscan.c with shmem internals, nor\nshmem.c with LRU locking.  So move scan_mapping_unevictable_pages() into\nshmem.c, renaming it shmem_unlock_mapping(); and rename\ncheck_move_unevictable_page() to check_move_unevictable_pages(), looping\ndown an array of pages, oftentimes under the same lock.\n\nLeave out the \"rotate unevictable list\" block: that\u0027s a leftover from\nwhen this was used for /proc/sys/vm/scan_unevictable_pages, whose flawed\nhandling involved looking at pages at tail of LRU.\n\nWas there significance to the sequence first ClearPageUnevictable, then\ntest page_evictable, then SetPageUnevictable here? I think not, we\u0027re\nunder LRU lock, and have no barriers between those.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e [back to 3.1 but will need respins]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85046579bde15e532983438f86b36856e358f417",
      "tree": "9b80b31791e63520277617a5abe85692dc480cd0",
      "parents": [
        "cb78edfdcef5259ac9e9088bd63810d21299928d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Jan 20 14:34:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:48 2012 -0800"
      },
      "message": "SHM_UNLOCK: fix long unpreemptible section\n\nscan_mapping_unevictable_pages() is used to make SysV SHM_LOCKed pages\nevictable again once the shared memory is unlocked.  It does this with\npagevec_lookup()s across the whole object (which might occupy most of\nmemory), and takes 300ms to unlock 7GB here.  A cond_resched() every\nPAGEVEC_SIZE pages would be good.\n\nHowever, KOSAKI-san points out that this is called under shmem.c\u0027s\ninfo-\u003elock, and it\u0027s also under shm.c\u0027s shm_lock(), both spinlocks.\nThere is no strong reason for that: we need to take these pages off the\nunevictable list soonish, but those locks are not required for it.\n\nSo move the call to scan_mapping_unevictable_pages() from shmem.c\u0027s\nunlock handling up to shm.c\u0027s unlock handling.  Remove the recently\nadded barrier, not needed now we have spin_unlock() before the scan.\n\nUse get_file(), with subsequent fput(), to make sure we have a reference\nto mapping throughout scan_mapping_unevictable_pages(): that\u0027s something\nthat was previously guaranteed by the shm_lock().\n\nRemove shmctl\u0027s lru_add_drain_all(): we don\u0027t fault in pages at SHM_LOCK\ntime, and we lazily discover them to be Unevictable later, so it serves\nno purpose for SHM_LOCK; and serves no purpose for SHM_UNLOCK, since\npages still on pagevec are not marked Unevictable.\n\nThe original code avoided redundant rescans by checking VM_LOCKED flag\nat its level: now avoid them by checking shp\u0027s SHM_LOCKED.\n\nThe original code called scan_mapping_unevictable_pages() on a locked\narea at shm_destroy() time: perhaps we once had accounting cross-checks\nwhich required that, but not now, so skip the overhead and just let\ninode eviction deal with them.\n\nPut check_move_unevictable_page() and scan_mapping_unevictable_pages()\nunder CONFIG_SHMEM (with stub for the TINY case when ramfs is used),\nmore as comment than to save space; comment them used for SHM_UNLOCK.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michel Lespinasse \u003cwalken@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": "2a4e64b8f6bcbf23ddd375b78342051ae8862284",
      "tree": "90e753679ca8ff867dc42e84e5a33c90f813c244",
      "parents": [
        "e9a4593cc5e36c6d47c87b439cb41c2568e7395f"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "dave@gnu.org",
        "time": "Fri Jan 20 14:34:01 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:47 2012 -0800"
      },
      "message": "ipc/mqueue: simplify reading msgqueue limit\n\nBecause the current task is being used to get the limit, we can simply\nuse rlimit() instead of task_rlimit().\n\nSigned-off-by: Davidlohr Bueso \u003cdave@gnu.org\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b550f9495947fc279d12c38feaf98500e8d0646",
      "tree": "ab018bd7e2f8c2c594252f35ffa7c413f86519cf",
      "parents": [
        "b196be89cdc14a88cc637cdad845a75c5886c82d"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Tue Jan 10 15:11:37 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:54 2012 -0800"
      },
      "message": "user namespace: make signal.c respect user namespaces\n\nipc/mqueue.c: for __SI_MESQ, convert the uid being sent to recipient\u0027s\nuser namespace. (new, thanks Oleg)\n\n__send_signal: convert current\u0027s uid to the recipient\u0027s user namespace\nfor any siginfo which is not SI_FROMKERNEL (patch from Oleg, thanks\nagain :)\n\ndo_notify_parent and do_notify_parent_cldstop: map task\u0027s uid to parent\u0027s\nuser namespace\n\nptrace_signal maps parent\u0027s uid into current\u0027s user namespace before\nincluding in signal to current.  IIUC Oleg has argued that this shouldn\u0027t\nmatter as the debugger will play with it, but it seems like not converting\nthe value currently being set is misleading.\n\nChangelog:\nSep 20: Inspired by Oleg\u0027s suggestion, define map_cred_ns() helper to\n\tsimplify callers and help make clear what we are translating\n        (which uid into which namespace).  Passing the target task would\n\tmake callers even easier to read, but we pass in user_ns because\n\tcurrent_user_ns() !\u003d task_cred_xxx(current, user_ns).\nSep 20: As recommended by Oleg, also put task_pid_vnr() under rcu_read_lock\n\tin ptrace_signal().\nSep 23: In send_signal(), detect when (user) signal is coming from an\n\tancestor or unrelated user namespace.  Pass that on to __send_signal,\n\twhich sets si_uid to 0 or overflowuid if needed.\nOct 12: Base on Oleg\u0027s fixup_uid() patch.  On top of that, handle all\n\tSI_FROMKERNEL cases at callers, because we can\u0027t assume sender is\n\tcurrent in those cases.\nNov 10: (mhelsley) rename fixup_uid to more meaningful usern_fixup_signal_uid\nNov 10: (akpm) make the !CONFIG_USER_NS case clearer\n\nSigned-off-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nFrom: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSubject: __send_signal: pass q-\u003einfo, not info, to userns_fixup_signal_uid (v2)\n\nEric Biederman pointed out that passing info is a bug and could lead to a\nNULL pointer deref to boot.\n\nA collection of signal, securebits, filecaps, cap_bounds, and a few other\nltp tests passed with this kernel.\n\nChangelog:\n    Nov 18: previous patch missed a leading \u0027\u0026\u0027\n\nSigned-off-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nFrom: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSubject: ipc/mqueue: lock() \u003d\u003e unlock() typo\n\nThere was a double lock typo introduced in b085f4bd6b21 \"user namespace:\nmake signal.c respect user namespaces\"\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Serge Hallyn \u003cserge@hallyn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "df0a42837b86567a130c44515ab620d23e7f182b",
      "tree": "1ea38c71503fddfbeb353b05a6bd85d383b161fd",
      "parents": [
        "5706b27deae29ceee26d0c20112f087a9b841575"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 05:26:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:16 2012 -0500"
      },
      "message": "switch mq_open() to umode_t\n"
    },
    {
      "commit": "1b9d5ff7644ddf2723c9205f4726c95ec01bf033",
      "tree": "bf08448873111512f0a7fb8f7e880b26e4a23242",
      "parents": [
        "8d334acdd2c1f57c7a574c6f24d08e4c95582ff0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 24 14:18:20 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:11 2012 -0500"
      },
      "message": "mqueue: propagate umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6f686574cccc2ef66fb38e41f19cedd81e7b4504",
      "tree": "3ca07460f6dfc6f083ecdb8dbb96e2f525d97696",
      "parents": [
        "905ad269c55fc62bee3da29f7b1d1efeba8aa1e1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 09 00:38:50 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 09 00:40:21 2011 -0500"
      },
      "message": "... and the same kind of leak for mqueue\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e57940d719e9fc5223d133b631f8cb5232d6064e",
      "tree": "f4dfe100c571e245c7db90c446c548b9bf33b9e7",
      "parents": [
        "0b0577f6080c0645b079dcc03fdbaf40d928beb8"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed Nov 02 13:38:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:01 2011 -0700"
      },
      "message": "ipc/sem.c: remove private structures from public header file\n\ninclude/linux/sem.h contains several structures that are only used within\nipc/sem.c.\n\nThe patch moves them into ipc/sem.c - there is no need to expose the\nstructures to the whole kernel.\n\nNo functional changes, only whitespace cleanups and 80-char per line\nfixes.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b0577f6080c0645b079dcc03fdbaf40d928beb8",
      "tree": "0dcedf3f2e6c3aa9c363a4c6272225ebfa1c61c5",
      "parents": [
        "3c24783bb2deafaa106b7e69a97540071afc590c"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed Nov 02 13:38:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:01 2011 -0700"
      },
      "message": "ipc/sem.c: handle spurious wakeups\n\nsemtimedop() does not handle spurious wakeups, it returns -EINTR to user\nspace.  Most other schedule() users would just loop and not return to user\nspace.  The patch adds such a loop to semtimedop()\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nReported-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c24783bb2deafaa106b7e69a97540071afc590c",
      "tree": "904d59c7e197d59c472e20fc42057a5acb90f223",
      "parents": [
        "46cbc1d3981ee753518fbf9198a14f71a9f6841e"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed Nov 02 13:38:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:01 2011 -0700"
      },
      "message": "ipc/sem.c: fix return code race with semop vs. semop +semctl(IPC_RMID)\n\nsys_semtimedop() may return -EIDRM although the semaphore operation\ncompleted successfully:\n\nthread 1:\tthread 2:\n\t\tsemtimedop(), sleeps\nsemop():\n* acquires sem_lock()\n\t\tsemtimedop() woken up due to timeout\n\t\tsem_lock() loops\n* notices that thread 2 could be completed.\n* performs the operations that thread 2 is sleeping on.\n* marks the semaphore operation as IN_WAKEUP\n* drops sem_lock(), does wakeup, sets return code to 0\n\t\t* thread delayed due to interrupt, whatever\n* returns to user space\n\t\t* thread still delayed\nsemctl(IPC_RMID)\n* acquires sem_lock()\n* ipc_rmid(), ipcp-\u003edeleted\u003d1\n* drops sem_lock()\n\t\t* thread finally continues - but seem_lock()\n\t\t  now fails due to ipcp-\u003edeleted \u003d\u003d 1\n\t\t* returns -EIDRM instead of 0\n\nThe fix is trivial: Always use the return code in queue.status.\n\nIn real world, the race probably doesn\u0027t matter:\nIf the semaphore array is destroyed, the app is probably not interested\nif the last operation succeeded or was already cancelled.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32ea845d5bafc37b7406bea1aee3005407cb0900",
      "tree": "54cfdc8a8fce66a7371b3616fc18b4c676a6fbdd",
      "parents": [
        "fc360bd9cdcf875639a77f07fafec26699c546f3"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "gaowanlong@cn.fujitsu.com",
        "time": "Mon Oct 31 17:06:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "ipc/mqueue.c: fix wrong use of schedule_hrtimeout_range_clock()\n\nFix the wrong use of schedule_hrtimeout_range_clock() in wq_sleep(),\nalthough it is harmless for the syscall mq_timed* now.  It was introduced\nby 9ca7d8e (\"mqueue: Convert message queue timeout to use hrtimers\").\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nCc: Carsten Emde \u003cC.Emde@osadl.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "140d0b2108faebc77c6523296e211e509cb9f5f9",
      "tree": "ce8291a62b08810cffacf7a0d377fc06c477aa44",
      "parents": [
        "24f0eed2668b059e847ff145848ddacb75419acc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 04 19:35:59 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 04 19:35:59 2011 -1000"
      },
      "message": "Do \u0027shm_init_ns()\u0027 in an early pure_initcall\n\nThis isn\u0027t really critical any more, since other patches (commit\n298507d4d2cf: \"shm: optimize exit_shm()\") have caused us to not actually\nneed to touch the rw_mutex unless there are actual shm segments\nassociated with the namespace, but we really should do tne shm_init_ns()\nearlier than we do now.\n\nThis, together with commit 288d5abec831 (\"Boot up with usermodehelper\ndisabled\") will mean that we really do initialize the initial ipc\nnamespace data structure before we run any tasks.\n\nTested-by: Marc Zyngier \u003cmarc.zyngier@arm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "298507d4d2cff2248e84afcf646b697301294442",
      "tree": "15861e6610403c57cf4eca976dea4d59ac7a8e99",
      "parents": [
        "33a30ed4bdccd95ed84a1a20c1fef8ac89788ce5"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Wed Aug 03 22:28:26 2011 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:45:55 2011 -1000"
      },
      "message": "shm: optimize exit_shm()\n\nWe may optimistically check .in_use \u003d\u003d 0 without holding the rw_mutex:\nit\u0027s the common case, and if it\u0027s zero, there certainly won\u0027t be any\nsegments associated with us.\n\nAfter taking the lock, the idr_for_each() will do the right thing, so we\ncould now drop the re-check inside the lock without any real cost.  But\nit won\u0027t hurt.\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33a30ed4bdccd95ed84a1a20c1fef8ac89788ce5",
      "tree": "aa57f9f5b958cf90ab548fc4535b9fb750489829",
      "parents": [
        "206506ccf04b6790d11553a0c8595d1bf65790fe"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Wed Aug 03 22:26:55 2011 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:45:55 2011 -1000"
      },
      "message": "shm: fix wrong tests\n\nCommit 4c677e2eefdb (\"shm: optimize locking and ipc_namespace getting\")\nintroduced a copy-paste bug.  Due to the bug cycle optimizations were\ndisabled.\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c677e2eefdba9c5bfc4474e2e91b26ae8458a1d",
      "tree": "c3c81703d022e0c3c43ddffc3ae165eb25aa0b1d",
      "parents": [
        "5774ed014f02120db9a6945a1ecebeb97c2acccb"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Fri Jul 29 03:56:40 2011 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 30 08:44:20 2011 -1000"
      },
      "message": "shm: optimize locking and ipc_namespace getting\n\nshm_lock() does a lookup of shm segment in shm_ids(ns).ipcs_idr, which\nis redundant as we already know shmid_kernel address.  An actual lock is\nalso not required for reads until we really want to destroy the segment.\n\nexit_shm() and shm_destroy_orphaned() may avoid the loop by checking\nwhether there is at least one segment in current ipc_namespace.\n\nThe check of nsproxy and ipc_ns against NULL is redundant as exit_shm()\nis called from do_exit() before the call to exit_notify(), so the\ndereferencing current-\u003ensproxy-\u003eipc_ns is guaranteed to be safe.\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5774ed014f02120db9a6945a1ecebeb97c2acccb",
      "tree": "74174553e2729fd582dc73f9d61b2a54286b3ede",
      "parents": [
        "6c6e3b828b2a13b923b9465fc4316c5bdc92291f"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Fri Jul 29 03:55:31 2011 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 30 08:44:19 2011 -1000"
      },
      "message": "shm: handle separate PID namespaces case\n\nshm_try_destroy_orphaned() and shm_try_destroy_current() didn\u0027t handle\nthe case of separate PID namespaces, but a single IPC namespace.  If\nthere are tasks with the same PID values using the same shmem object,\nthe wrong destroy decision could be reached.\n\nOn shm segment creation store the pointer to the creator task in\nshmid_kernel-\u003eshm_creator field and zero it on task exit.  Then\nuse the -\u003eshm_creator insread of shm_cprid in both functions.  As\nshmid_kernel object is already locked at this stage, no additional\nlocking is needed.\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b34a6b1da371ed8af1221459a18c67970f7e3d53",
      "tree": "5addc850de13623b172395b9d0d7d670930fa6b3",
      "parents": [
        "d40dcdb0172a1ba853464983a059fb45e0aaf61a"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Tue Jul 26 16:08:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "ipc: introduce shm_rmid_forced sysctl\n\nAdd support for the shm_rmid_forced sysctl.  If set to 1, all shared\nmemory objects in current ipc namespace will be automatically forced to\nuse IPC_RMID.\n\nThe POSIX way of handling shmem allows one to create shm objects and\ncall shmdt(), leaving shm object associated with no process, thus\nconsuming memory not counted via rlimits.\n\nWith shm_rmid_forced\u003d1 the shared memory object is counted at least for\none process, so OOM killer may effectively kill the fat process holding\nthe shared memory.\n\nIt obviously breaks POSIX - some programs relying on the feature would\nstop working.  So set shm_rmid_forced\u003d1 only if you\u0027re sure nobody uses\n\"orphaned\" memory.  Use shm_rmid_forced\u003d0 by default for compatability\nreasons.\n\nThe feature was previously impemented in -ow as a configure option.\n\n[akpm@linux-foundation.org: fix documentation, per Randy]\n[akpm@linux-foundation.org: fix warning]\n[akpm@linux-foundation.org: readability/conventionality tweaks]\n[akpm@linux-foundation.org: fix shm_rmid_forced/shm_forced_rmid confusion, use standard comment layout]\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserge.hallyn@canonical.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Solar Designer \u003csolar@openwall.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d40dcdb0172a1ba853464983a059fb45e0aaf61a",
      "tree": "aa785c01ad6763c92191b86ec10f526fa772b808",
      "parents": [
        "04715206c0c2fd4ec5ca77fa51e3a5b41ce71492"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Tue Jul 26 16:08:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "ipc/mqueue.c: fix mq_open() return value\n\nWe return ENOMEM from mqueue_get_inode even when we have enough memory.\nNamely in case the system rlimit of mqueue was reached.  This error\npropagates to mq_queue and user sees the error unexpectedly.  So fix\nthis up to properly return EMFILE as described in the manpage:\n\n\tEMFILE The process already has the maximum number of files and\n\t       message queues open.\n\ninstead of:\n\n\tENOMEM Insufficient memory.\n\nWith the previous patch we just switch to ERR_PTR/PTR_ERR/IS_ERR error\nhandling here.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04715206c0c2fd4ec5ca77fa51e3a5b41ce71492",
      "tree": "fbead768d176d82e5e1ff6021c030b8cd6d26c9f",
      "parents": [
        "a64a26e822ddb739de464540dfd2cbb6abce47d5"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Tue Jul 26 16:08:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:44 2011 -0700"
      },
      "message": "ipc/mqueue.c: refactor failure handling\n\nIf new_inode fails to allocate an inode we need only to return with\nNULL.  But now we test the opposite and have all the work in a nested\nblock.  So do the opposite to save one indentation level (and remove\nunnecessary line breaks).\n\nThis is only a preparation/cleanup for the next patch where we fix up\nreturn values from mqueue_get_inode.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d694ad62bf539dbb20a0899ac2a954555f9e4a83",
      "tree": "fd3ddc3269b6ad40a448046e60560fec30fbb0c5",
      "parents": [
        "8405b044e5238afebd7248d927c1d261d2239767"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Mon Jul 25 17:11:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:07 2011 -0700"
      },
      "message": "ipc/sem.c: fix race with concurrent semtimedop() timeouts and IPC_RMID\n\nIf a semaphore array is removed and in parallel a sleeping task is woken\nup (signal or timeout, does not matter), then the woken up task does not\nwait until wake_up_sem_queue_do() is completed.  This will cause crashes,\nbecause wake_up_sem_queue_do() will read from a stale pointer.\n\nThe fix is simple: Regardless of anything, always call get_queue_result().\nThis function waits until wake_up_sem_queue_do() has finished it\u0027s task.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d27142\n\nReported-by: Yuriy Yevtukhov \u003cyuriy@ucoz.com\u003e\nReported-by: Harald Laabs \u003ckernel@dasr.de\u003e\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.35+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff",
      "tree": "12b2bb4202b05f6ae6a43c6ce830a0472043dbe5",
      "parents": [
        "8e204874db000928e37199c2db82b7eb8966cc3c",
        "5a9a43646cf709312d71eca71cef90ad802f28f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -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: (107 commits)\n  vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp\n  isofs: Remove global fs lock\n  jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory\n  fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.\n  mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n  fs:update the NOTE of the file_operations structure\n  Remove dead code in dget_parent()\n  AFS: Fix silly characters in a comment\n  switch d_add_ci() to d_splice_alias() in \"found negative\" case as well\n  simplify gfs2_lookup()\n  jfs_lookup(): don\u0027t bother with . or ..\n  get rid of useless dget_parent() in btrfs rename() and link()\n  get rid of useless dget_parent() in fs/btrfs/ioctl.c\n  fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n  drivers: fix up various -\u003ellseek() implementations\n  fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n  Ext4: handle SEEK_HOLE/SEEK_DATA generically\n  Btrfs: implement our own -\u003ellseek\n  fs: add SEEK_HOLE and SEEK_DATA flags\n  reiserfs: make reiserfs default to barrier\u003dflush\n  ...\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new\nshrinker callout for the inode cache, that clashed with the xfs code to\nstart the periodic workers later.\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4ee9aa33db94120532601a22566e989efc3e70c",
      "tree": "7e138ea977cc405ea188be5dd7bf98fee324114d",
      "parents": [
        "693a8b6eecce1a0cfe91a469e85c56016dc1cc53"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 12:11:44 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 20 14:10:16 2011 -0700"
      },
      "message": "ipc,rcu: Convert call_rcu(ipc_immediate_free) to kfree_rcu()\n\nThe rcu callback ipc_immediate_free() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(ipc_immediate_free).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "693a8b6eecce1a0cfe91a469e85c56016dc1cc53",
      "tree": "eb96b13432d0e8933b71ed84f5bd5ee4df6a5687",
      "parents": [
        "449a68cc656fddeda448e324c57062a19cf451b9"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 12:09:35 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 20 14:10:16 2011 -0700"
      },
      "message": "ipc,rcu: Convert call_rcu(free_un) to kfree_rcu()\n\nThe rcu callback free_un() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(free_un).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "ca16d140af91febe25daeb9e032bf8bd46b8c31f",
      "tree": "a093c3f244a1bdfc2a50e271a7e6df3324df0f05",
      "parents": [
        "4db70f73e56961b9bcdfd0c36c62847a18b7dbb5"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 26 19:16:19 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:20:31 2011 -0700"
      },
      "message": "mm: don\u0027t access vm_flags as \u0027int\u0027\n\nThe type of vma-\u003evm_flags is \u0027unsigned long\u0027. Neither \u0027int\u0027 nor\n\u0027unsigned int\u0027. This patch fixes such misuse.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n[ Changed to use a typedef - we\u0027ll extend it to cover more cases\n  later, since there has been discussion about making it a 64-bit\n  type..                      - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a00eaf11a223c63fbb212369d6db69ce4c55a2d1",
      "tree": "1c38d8591c229243cb09386a0f5b3737da421cf1",
      "parents": [
        "34482e89a5218f0f9317abf1cfba3bb38b5c29dd"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Mar 07 18:48:39 2010 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 10 14:35:47 2011 -0700"
      },
      "message": "ns proc: Add support for the ipc namespace\n\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "6213cfe82461e39219a3b06ecf1d0679b4c0657f",
      "tree": "4db887e11a001984bb9d084fb861debb2f319e9a",
      "parents": [
        "ae91dbfc9949cf042c45798557b48d3b83bc3635"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Mar 26 13:27:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:30:19 2011 -0700"
      },
      "message": "ipc: fix util.c kernel-doc warnings\n\nFix ipc/util.c kernel-doc warnings:\n\n  Warning(ipc/util.c:336): No description found for parameter \u0027ns\u0027\n  Warning(ipc/util.c:620): No description found for parameter \u0027ns\u0027\n  Warning(ipc/util.c:790): No description found for parameter \u0027ns\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nReviewed-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be4d250ab41e13f8f945be6896695e870b38ba31",
      "tree": "a4c47d13bbd91ba05870f457b8063829ca81134f",
      "parents": [
        "c03e3126e4f9535f4983d727f036440255c43c82"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Fri Mar 25 01:57:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:45:16 2011 -0700"
      },
      "message": "ipcns: fix use after free in free_ipc_ns()\n\ncommit b515498 (\"userns: add a user namespace owner of ipc ns\") added a\nuser namespace owner of ipc ns, but it also introduced a use after free in\nfree_ipc_ns().\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nAcked-by: \"Serge E. Hallyn\" \u003cserge.hallyn@canonical.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b0e77598f87107001a00b8a4ece9c95e4254ccc4",
      "tree": "2738276570e4faa7c92a64521c192f04dca93801",
      "parents": [
        "b515498f5bb5f38fc0e390b4ff7d00b6077de127"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:08 2011 -0700"
      },
      "message": "userns: user namespaces: convert several capable() calls\n\nCAP_IPC_OWNER and CAP_IPC_LOCK can be checked against current_user_ns(),\nbecause the resource comes from current\u0027s own ipc namespace.\n\nsetuid/setgid are to uids in own namespace, so again checks can be against\ncurrent_user_ns().\n\nChangelog:\n\tJan 11: Use task_ns_capable() in place of sched_capable().\n\tJan 11: Use nsown_capable() as suggested by Bastian Blank.\n\tJan 11: Clarify (hopefully) some logic in futex and sched.c\n\tFeb 15: use ns_capable for ipc, not nsown_capable\n\tFeb 23: let copy_ipcs handle setting ipc_ns-\u003euser_ns\n\tFeb 23: pass ns down rather than taking it from current\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@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": "b515498f5bb5f38fc0e390b4ff7d00b6077de127",
      "tree": "b76dfc56415adee9aec5d8619124059ed3ab02a5",
      "parents": [
        "fc832ad3645f0507f24d11752544525a50a83c71"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:07 2011 -0700"
      },
      "message": "userns: add a user namespace owner of ipc ns\n\nChangelog:\n\tFeb 15: Don\u0027t set new ipc-\u003euser_ns if we didn\u0027t create a new\n\t\tipc_ns.\n\tFeb 23: Move extern declaration to ipc_namespace.h, and group\n\t\tfwd declarations at top.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@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": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "3af54c9bd9e6f14f896aac1bb0e8405ae0bc7a44",
      "tree": "74eb7ea6396c3ad00fce944789071ded2e0b85e8",
      "parents": [
        "504b701bb1655747575095543c083267418e02ac"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segooon@gmail.com",
        "time": "Sat Oct 30 18:22:49 2010 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 08:25:51 2010 -0700"
      },
      "message": "ipc: shm: fix information leak to userland\n\nThe shmid_ds structure is copied to userland with shm_unused{,2,3}\nfields unitialized.  It leads to leaking of contents of kernel stack\nmemory.\n\nSigned-off-by: Vasiliy Kulikov \u003csegooon@gmail.com\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ceefda6931806972ecf550bd8231dce4a4178953",
      "tree": "46ed42a053f1ed43c3c110a21637a7b071657c8a",
      "parents": [
        "aed1d84f98738bcc1c605e1ff442de9890441315"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 13:16:50 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:03 2010 -0400"
      },
      "message": "switch get_sb_ns() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "03145beb455cf5c20a761e8451e30b8a74ba58d9",
      "tree": "a27b2221818b89039fc948d19780d52bb5c70789",
      "parents": [
        "b795218075a1e1183169abb66a90dcdcf30367f9"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Wed Oct 27 15:34:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:13 2010 -0700"
      },
      "message": "ipc: initialize structure memory to zero for compat functions\n\nThis takes care of leaking uninitialized kernel stack memory to\nuserspace from non-zeroed fields in structs in compat ipc functions.\n\nSigned-off-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\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": "b795218075a1e1183169abb66a90dcdcf30367f9",
      "tree": "2bed7b593dc8398d6c30815e4350577d5bd90474",
      "parents": [
        "98391cf4dcf893e9e74e1c14189851dbc9c5ad0d"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Oct 27 15:34:16 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:13 2010 -0700"
      },
      "message": "ipc/shm.c: add RSS and swap size information to /proc/sysvipc/shm\n\nThe kernel currently provides no functionality to analyze the RSS and swap\nspace usage of each individual sysvipc shared memory segment.\n\nThis patch adds this info for each existing shm segment by extending the\noutput of /proc/sysvipc/shm by two columns for RSS and swap.\n\nSince shmctl(SHM_INFO) already provides a similiar calculation (it\ncurrently sums up all RSS/swap info for all segments), I did split out a\nstatic function which is now used by the /proc/sysvipc/shm output and\nshmctl(SHM_INFO).\n\nSAP products (esp.  the SAP Netweaver ABAP Kernel) uses lots of big shared\nmemory segments (we often have Linux systems with \u003e\u003d 16GB shm usage).\nSometimes we get customer reports about \"slow\" system responses and while\nlooking into their configurations we often find massive swapping activity\non the system.  With this patch it\u0027s now easy to see from the command line\nif and which shm segments gets swapped out (and how much) and can more\neasily give recommendations for system tuning.  Without the patch it\u0027s\ncurrently not possible to do such shm analysis at all.\n\nAlso...\n\nAdd some spaces in front of the \"size\" field for 64bit kernels to get the\ncolumns correct if you cat the contents of the file.  In\nsysvipc_shm_proc_show() the kernel prints the size value in \"SPEC_SIZE\"\nformat, which is defined like this:\n\n#if BITS_PER_LONG \u003c\u003d 32\n#define SIZE_SPEC \"%10lu\"\n#else\n#define SIZE_SPEC \"%21lu\"\n#endif\n\nSo, if the header is not adjusted, the columns are not correctly aligned.\nI actually tested this on 32- and 64-bit and it seems correct now.\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nAcked-by: Hugh Dickins \u003chughd@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": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "982f7c2b2e6a28f8f266e075d92e19c0dd4c6e56",
      "tree": "a25ab8534b9f43cb90292ed125dfb9d72fee9858",
      "parents": [
        "64aab720bdf8771214a7c88872bd8e3194c2d279"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Thu Sep 30 15:15:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 01 10:50:58 2010 -0700"
      },
      "message": "sys_semctl: fix kernel stack leakage\n\nThe semctl syscall has several code paths that lead to the leakage of\nuninitialized kernel stack memory (namely the IPC_INFO, SEM_INFO,\nIPC_STAT, and SEM_STAT commands) during the use of the older, obsolete\nversion of the semid_ds struct.\n\nThe copy_semid_to_user() function declares a semid_ds struct on the stack\nand copies it back to the user without initializing or zeroing the\n\"sem_base\", \"sem_pending\", \"sem_pending_last\", and \"undo\" pointers,\nallowing the leakage of 16 bytes of kernel stack memory.\n\nThe code is still reachable on 32-bit systems - when calling semctl()\nnewer glibc\u0027s automatically OR the IPC command with the IPC_64 flag, but\ninvoking the syscall directly allows users to use the older versions of\nthe struct.\n\nSigned-off-by: Dan Rosenberg \u003cdan.j.rosenberg@gmail.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d8af64c1c5ad4fd119b371ae70c114ee1f443b1",
      "tree": "662cf5b2d557c26b38d9cc41fafd34e0af6044bb",
      "parents": [
        "72edc4d0873ba5165c0759264298bf5f55351c7a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 05 16:29:45 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:58 2010 -0400"
      },
      "message": "switch mqueue to -\u003eevict_inode()\n\n... and since the inodes are never hashed, we can use default -\u003edrop_inode()\njust fine.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c61284e99191b2284fb74dae6961d4d09e4e59e8",
      "tree": "6b49a9e2e5ade9f395c66f6453ff60b952a6df38",
      "parents": [
        "19f0f0af097ba3138ae2780b471180512763a78f"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Tue Jul 20 13:24:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 20 16:25:40 2010 -0700"
      },
      "message": "ipc/sem.c: bugfix for semop() not reporting successful operation\n\nThe last change to improve the scalability moved the actual wake-up out of\nthe section that is protected by spin_lock(sma-\u003esem_perm.lock).\n\nThis means that IN_WAKEUP can be in queue.status even when the spinlock is\nacquired by the current task.  Thus the same loop that is performed when\nqueue.status is read without the spinlock acquired must be performed when\nthe spinlock is acquired.\n\nThanks to kamezawa.hiroyu@jp.fujitsu.com for noticing lack of the memory\nbarrier.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d16255\n\n[akpm@linux-foundation.org: clean up kerneldoc, checkpatch warning and whitespace]\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nReported-by: Luca Tettamanti \u003ckronos.it@gmail.com\u003e\nTested-by: Luca Tettamanti \u003ckronos.it@gmail.com\u003e\nReported-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Maciej Rutecki \u003cmaciej.rutecki@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0abbb609ac511fc226b8b1082613193c8ecf8324",
      "tree": "dc70af8cdfae534b4538fae571525fc5282f224f",
      "parents": [
        "b8a3c6091a2337391ed878693604d712d6420241"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 28 19:06:15 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 17:16:27 2010 -0400"
      },
      "message": "mqueue doesn\u0027t need make_bad_inode()\n\nIt never hashes them anyway and does final iput() immediately\nafterwards.  With -\u003edrop_inode() being generic_delete_inode()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4de85cd6d6018825e19f76f1208775f23ecc393f",
      "tree": "117e765f4e24c4a67668ea96cfcc85a88793365c",
      "parents": [
        "c5cf6359ad1d322c16e159011247341849cc0d3a"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed May 26 14:43:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:49 2010 -0700"
      },
      "message": "ipc/sem.c: use ERR_CAST\n\nUse ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more\nclear what is the purpose of the operation, which otherwise looks like a\nno-op.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\nT x;\nidentifier f;\n@@\n\nT f (...) { \u003c+...\n- ERR_PTR(PTR_ERR(x))\n+ x\n ...+\u003e }\n\n@@\nexpression x;\n@@\n\n- ERR_PTR(PTR_ERR(x))\n+ ERR_CAST(x)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5cf6359ad1d322c16e159011247341849cc0d3a",
      "tree": "aefc0ff518c05d5fb386ab2103ec4dc25bffbe4d",
      "parents": [
        "31a7c4746e9925512afab30557dd445d677cc802"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed May 26 14:43:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:49 2010 -0700"
      },
      "message": "ipc/sem.c: update description of the implementation\n\nipc/sem.c begins with a 15 year old description about bugs in the initial\nimplementation in Linux-1.0.  The patch replaces that with a top level\ndescription of the current code.\n\nA TODO could be derived from this text:\n\nThe opengroup man page for semop() does not mandate FIFO.  Thus there is\nno need for a semaphore array list of pending operations.\n\nIf\n\n- this list is removed\n- the per-semaphore array spinlock is removed (possible if there is no\n  list to protect)\n- sem_otime is moved into the semaphores and calculated on demand during\n  semctl()\n\nthen the array would be read-mostly - which would significantly improve\nscaling for applications that use semaphore arrays with lots of entries.\n\nThe price would be expensive semctl() calls:\n\n\tfor(i\u003d0;i\u003csma-\u003esem_nsems;i++) spin_lock(sma-\u003esem_lock);\n\t\u003cdo stuff\u003e\n\tfor(i\u003d0;i\u003csma-\u003esem_nsems;i++) spin_unlock(sma-\u003esem_lock);\n\nI\u0027m not sure if the complexity is worth the effort, thus here is the\ndocumentation of the current behavior first.\n\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: 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": "0a2b9d4c79671b05956806ede5d054e03ae56280",
      "tree": "28431a1dc1e21528c0075c7f4ac345bda40ce21b",
      "parents": [
        "fd5db42254518fbf241dc454e918598fbe494fa2"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed May 26 14:43:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:49 2010 -0700"
      },
      "message": "ipc/sem.c: move wake_up_process out of the spinlock section\n\nThe wake-up part of semtimedop() consists out of two steps:\n\n- the right tasks must be identified.\n- they must be woken up.\n\nRight now, both steps run while the array spinlock is held.  This patch\nreorders the code and moves the actual wake_up_process() behind the point\nwhere the spinlock is dropped.\n\nThe code also moves setting sem-\u003esem_otime to one place: It does not make\nsense to set the last modify time multiple times.\n\n[akpm@linux-foundation.org: repair kerneldoc]\n[akpm@linux-foundation.org: fix uninitialised retval]\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: 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": "fd5db42254518fbf241dc454e918598fbe494fa2",
      "tree": "356c8098f7f706a0e0396476fb5ccb924568eea1",
      "parents": [
        "2dcb22b346be7b7b7e630a8970d69cf3f1111ec1"
      ],
      "author": {
        "name": "Manfred Spraul",
        "email": "manfred@colorfullife.com",
        "time": "Wed May 26 14:43:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:49 2010 -0700"
      },
      "message": "ipc/sem.c: optimize update_queue() for bulk wakeup calls\n\nThe following series of patches tries to fix the spinlock contention\nreported by Chris Mason - his benchmark exposes problems of the current\ncode:\n\n- In the worst case, the algorithm used by update_queue() is O(N^2).\n  Bulk wake-up calls can enter this worst case.  The patch series fix\n  that.\n\n  Note that the benchmark app doesn\u0027t expose the problem, it just should\n  be fixed: Real world apps might do the wake-ups in another order than\n  perfect FIFO.\n\n- The part of the code that runs within the semaphore array spinlock is\n  significantly larger than necessary.\n\n  The patch series fixes that.  This change is responsible for the main\n  improvement.\n\n- The cacheline with the spinlock is also used for a variable that is\n  read in the hot path (sem_base) and for a variable that is unnecessarily\n  written to multiple times (sem_otime).  The last step of the series\n  cacheline-aligns the spinlock.\n\nThis patch:\n\nThe SysV semaphore code allows to perform multiple operations on all\nsemaphores in the array as atomic operations.  After a modification,\nupdate_queue() checks which of the waiting tasks can complete.\n\nThe algorithm that is used to identify the tasks is O(N^2) in the worst\ncase.  For some cases, it is simple to avoid the O(N^2).\n\nThe patch adds a detection logic for some cases, especially for the case\nof an array where all sleeping tasks are single sembuf operations and a\nmulti-sembuf operation is used to wake up multiple tasks.\n\nA big database application uses that approach.\n\nThe patch fixes wakeup due to semctl(,,SETALL,) - the initial version of\nthe patch breaks that.\n\n[akpm@linux-foundation.org: make do_smart_update() static]\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: 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": "4be929be34f9bdeffa40d815d32d7d60d2c7f03b",
      "tree": "4d2c6e2b8ef766e565e2e050ee151de2e02081d3",
      "parents": [
        "940370fc86b920b51a34217a1facc3e9e97c2456"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 24 14:33:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN\n\n- C99 knows about USHRT_MAX/SHRT_MAX/SHRT_MIN, not\n  USHORT_MAX/SHORT_MAX/SHORT_MIN.\n\n- Make SHRT_MIN of type s16, not int, for consistency.\n\n[akpm@linux-foundation.org: fix drivers/dma/timb_dma.c]\n[akpm@linux-foundation.org: fix security/keys/keyring.c]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@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": "164d44fd92e79d5bce54d0d62df9f856f7b23925",
      "tree": "9f21607849b7e684b255578ffdf41951bc31787e",
      "parents": [
        "5bfec46baa3a752393433b8d89d3b2c70820f61d",
        "d7e81c269db899b800e0963dc4aceece1f82a680"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:11:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:11:10 2010 -0700"
      },
      "message": "Merge branch \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  clocksource: Add clocksource_register_hz/khz interface\n  posix-cpu-timers: Optimize run_posix_cpu_timers()\n  time: Remove xtime_cache\n  mqueue: Convert message queue timeout to use hrtimers\n  hrtimers: Provide schedule_hrtimeout for CLOCK_REALTIME\n  timers: Introduce the concept of timer slack for legacy timers\n  ntp: Remove tickadj\n  ntp: Make time_adjust static\n  time: Add xtime, wall_to_monotonic to feature-removal-schedule\n  timer: Try to survive timer callback preempt_count leak\n  timer: Split out timer function call\n  timer: Print function name for timer callbacks modifying preemption count\n  time: Clean up warp_clock()\n  cpu-timers: Avoid iterating over all threads in fastpath_timer_check()\n  cpu-timers: Change SIGEV_NONE timer implementation\n  cpu-timers: Return correct previous timer reload value\n  cpu-timers: Cleanup arm_timer()\n  cpu-timers: Simplify RLIMIT_CPU handling\n"
    },
    {
      "commit": "a3ed2a15719219769bb095b28009c1d654a419e8",
      "tree": "22039574b16ad79f9eba06317e8f1ad7cd9d53c3",
      "parents": [
        "de145b44b95b9d3212a82d1c0f29b09778ef33c5"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Tue May 11 14:07:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 11 17:33:42 2010 -0700"
      },
      "message": "mqueue: fix kernel BUG caused by double free() on mq_open()\n\nIn case of aborting because we reach the maximum amount of memory which\ncan be allocated to message queues per user (RLIMIT_MSGQUEUE), we would\ntry to free the message area twice when bailing out: first by the error\nhandling code itself, and then later when cleaning up the inode through\ndelete_inode().\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\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": "dbb6be6d5e974c42bbecd183effaa0df69e1dd8b",
      "tree": "5735cb47e70853d057a9881dd0ce44b83e88fa63",
      "parents": [
        "6a867a395558a7f882d041783e4cdea6744ca2bf",
        "b57f95a38233a2e73b679bea4a5453a1cc2a1cc9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 10 11:59:37 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 10 14:20:42 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into timers/core\n\nReason: Further posix_cpu_timer patches depend on mainline changes\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "9ca7d8e6834c40a99622bbe4a88aaf64313ae43c",
      "tree": "27c0e93e23c25a30aec38c1f79cfa3d194681d24",
      "parents": [
        "351b3f7a21e413a9b14d0393171497d2373bd702"
      ],
      "author": {
        "name": "Carsten Emde",
        "email": "C.Emde@osadl.org",
        "time": "Fri Apr 02 22:40:20 2010 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 06 21:50:03 2010 +0200"
      },
      "message": "mqueue: Convert message queue timeout to use hrtimers\n\nThe message queue functions mq_timedsend() and mq_timedreceive()\nhave not yet been converted to use the hrtimer interface.\n\nThis patch replaces the call to schedule_timeout() by a call to\nschedule_hrtimeout() and transforms the expiration time from\ntimespec to ktime as required.\n\n[ tglx: Fixed whitespace wreckage ]\n\nSigned-off-by: Carsten Emde \u003cC.Emde@osadl.org\u003e\nTested-by: Pradyumna Sampath \u003cpradysam@gmail.com\u003e\nCc: Arjan van de Veen \u003carjan@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLKML-Reference: \u003c20100402204331.715783034@osadl.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\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"
    }
  ],
  "next": "45575f5a426c01ec68cd33d998267ba2f6278fac"
}
