)]}'
{
  "log": [
    {
      "commit": "e2a29943e9a2ee2aa737a77f550f46ba72269db4",
      "tree": "cf0275eeed130433df241f115cbd2f9ebea96e7f",
      "parents": [
        "986ab09807ca9454c3f54aae4db7e1bb00daeed3"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Tue Jun 14 17:29:51 2011 +0200"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 11 13:44:36 2012 -0500"
      },
      "message": "fsnotify: pass group to fsnotify_destroy_mark()\n\nIn fsnotify_destroy_mark() dont get the group from the passed mark anymore,\nbut pass the group itself as an additional parameter to the function.\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b3e8692b4dde5cf5fc60e4b95385229a72623182",
      "tree": "5145a92e403b7faa54ac47b24d0791ca9c6c01bc",
      "parents": [
        "a2140fc0cb0325bb6384e788edd27b9a568714e2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 15 12:55:22 2012 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 15 12:55:22 2012 +0200"
      },
      "message": "audit: clean up refcounting in audit-tree\n\nDrop the initial reference by fsnotify_init_mark early instead of\naudit_tree_freeing_mark() at destroy time.\n\nIn the cases we destroy the mark before we drop the initial reference we need to\nget rid of the get_mark that balances the put_mark in audit_tree_freeing_mark().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "a2140fc0cb0325bb6384e788edd27b9a568714e2",
      "tree": "2dfe6d8a064d478f1bd376241ecee42af10d6cf1",
      "parents": [
        "0fe33aae0e94b4097dd433c9399e16e17d638cd8"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 15 12:55:22 2012 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 15 12:55:22 2012 +0200"
      },
      "message": "audit: fix refcounting in audit-tree\n\nRefcounting of fsnotify_mark in audit tree is broken.  E.g:\n\n                              refcount\ncreate_chunk\n  alloc_chunk                 1\n  fsnotify_add_mark           2\n\nuntag_chunk\n  fsnotify_get_mark           3\n  fsnotify_destroy_mark\n    audit_tree_freeing_mark   2\n  fsnotify_put_mark           1\n  fsnotify_put_mark           0\n  via destroy_list\n    fsnotify_mark_destroy    -1\n\nThis was reported by various people as triggering Oops when stopping auditd.\n\nWe could just remove the put_mark from audit_tree_freeing_mark() but that would\nbreak freeing via inode destruction.  So this patch simply omits a put_mark\nafter calling destroy_mark or adds a get_mark before.\n\nThe additional get_mark is necessary where there\u0027s no other put_mark after\nfsnotify_destroy_mark() since it assumes that the caller is holding a reference\n(or the inode is keeping the mark pinned, not the case here AFAICS).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReported-by: Valentin Avram \u003caval13@gmail.com\u003e\nReported-by: Peter Moody \u003cpmoody@google.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nCC: stable@vger.kernel.org\n"
    },
    {
      "commit": "0fe33aae0e94b4097dd433c9399e16e17d638cd8",
      "tree": "799d8107cc7b000c1fba87f87b59cb6d467dc9a2",
      "parents": [
        "ddf343f635fe4440cad528e12f96f28bd50aa099"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 15 12:55:22 2012 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 15 12:55:22 2012 +0200"
      },
      "message": "audit: don\u0027t free_chunk() after fsnotify_add_mark()\n\nDon\u0027t do free_chunk() after fsnotify_add_mark().  That one does a delayed unref\nvia the destroy list and this results in use-after-free.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nCC: stable@vger.kernel.org\n"
    },
    {
      "commit": "be34d1a3bc4b6f357a49acb55ae870c81337e4f0",
      "tree": "39caaf1b4965d47be64ce45491477fce555b2d17",
      "parents": [
        "55e4def0a6e79e7eb53017c4935adfed76510cd7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:18 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:37:27 2012 +0400"
      },
      "message": "VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors\n\ncopy_tree() can theoretically fail in a case other than ENOMEM, but always\nreturns NULL which is interpreted by callers as -ENOMEM.  Change it to return\nan explicit error.\n\nAlso change clone_mnt() for consistency and because union mounts will add new\nerror cases.\n\nThanks to Andreas Gruenbacher \u003cagruen@suse.de\u003e for a bug fix.\n[AV: folded braino fix by Dan Carpenter]\n\nOriginal-author: Valerie Aurora \u003cvaurora@redhat.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Valerie Aurora \u003cvalerie.aurora@gmail.com\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3b097c46964b07479855b01056c61540b8cadd50",
      "tree": "67df2b10ea2692000e7e5df18499e6ba51e1952c",
      "parents": [
        "6034f7e603cd2dae8ed9a1d8d2ccfeb6b5c48d73"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Mar 15 18:03:53 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 20 14:10:11 2011 -0700"
      },
      "message": "audit_tree,rcu: Convert call_rcu(__put_tree) to kfree_rcu()\n\nThe rcu callback __put_tree() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(__put_tree).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\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": "f7a998a9491f2da1d3e44d150aa611d10093da4f",
      "tree": "5d7c32eff458aeab7bcfeafd2d27e377b1f2b970",
      "parents": [
        "b8800aa5d9c7e4e2869321c77b80f322a0d9663a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 30 02:18:32 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 30 02:18:32 2010 -0400"
      },
      "message": "in untag_chunk() we need to do alloc_chunk() a bit earlier\n\n... while we are not holding spinlocks.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1968f5eed54ce47bde488fd9a450912e4a2d7138",
      "tree": "bcf13b98fda519c240e89cae3de95fc7d9ece715",
      "parents": [
        "ce8f76fb7320297ccbe7c950fd9a2d727dd6a5a0"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:55 2010 -0400"
      },
      "message": "fanotify: use both marks when possible\n\nfanotify currently, when given a vfsmount_mark will look up (if it exists)\nthe corresponding inode mark.  This patch drops that lookup and uses the\nmark provided.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ce8f76fb7320297ccbe7c950fd9a2d727dd6a5a0",
      "tree": "fb870e9564bfef438e46ba3c39be2999e246b179",
      "parents": [
        "613a807fe7c793ceb7d6f059773527a5a6c84a96"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: pass both the vfsmount mark and inode mark\n\nshould_send_event() and handle_event() will both need to look up the inode\nevent if they get a vfsmount event.  Lets just pass both at the same time\nsince we have them both after walking the lists in lockstep.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2612abb51b11ffd2d75c472b11178115f5808909",
      "tree": "5657a07a347984cc1f34117d7ef88af73ea12b60",
      "parents": [
        "0215054f377ce5ac4ffc27b26b13b3f10e6410e6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:53 2010 -0400"
      },
      "message": "fsnotify: cleanup should_send_event\n\nThe change to use srcu and walk the object list rather than the global\nfsnotify_group list means that should_send_event is no longer needed for a\nnumber of groups and can be simplified for others.  Do that.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "3a9b16b407f10b2a771bcae13fb5791e527d6bcf",
      "tree": "0d88cac61bd6d3f5028eb0c9a45e7af9fbd24311",
      "parents": [
        "8778abb9a88fc4a74d8776ffaadf7214cf33c61e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:52 2010 -0400"
      },
      "message": "fsnotify: send fsnotify_mark to groups in event handling functions\n\nWith the change of fsnotify to use srcu walking the marks list instead of\nwalking the global groups list we now know the mark in question.  The code can\nsend the mark to the group\u0027s handling functions and the groups won\u0027t have to\nfind those marks themselves.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5444e2981c31d0ed7465475e451b8437084337e5",
      "tree": "66b6d84b7aab886b44a3467a139d258d9aba09df",
      "parents": [
        "32c3263221bd63316815286dccacdc7abfd7f3c4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fsnotify: split generic and inode specific mark code\n\ncurrently all marking is done by functions in inode-mark.c.  Some of this\nis pretty generic and should be instead done in a generic function and we\nshould only put the inode specific code in inode-mark.c\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "35566087099c3ff8901d65ee98af56347ee66e5a",
      "tree": "e4e56bcf787e5f100fa1ea0138c417e1203b10ae",
      "parents": [
        "ef5e2b785fb3216269e6d0656d38ec286b98dbe5"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:54 2010 -0400"
      },
      "message": "fsnotify: take inode-\u003ei_lock inside fsnotify_find_mark_entry()\n\nAll callers to fsnotify_find_mark_entry() except one take and\nrelease inode-\u003ei_lock around the call.  Take the lock inside\nfsnotify_find_mark_entry() instead.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "d07754412f9cdc2f4a99318d5ee81ace6715ea99",
      "tree": "f62902ad420de023c0fad931d9508903a9f42e3b",
      "parents": [
        "e61ce86737b4d60521e4e71f9892fe4bdcfb688b"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: rename fsnotify_find_mark_entry to fsnotify_find_mark\n\nthe _entry portion of fsnotify functions is useless.  Drop it.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e61ce86737b4d60521e4e71f9892fe4bdcfb688b",
      "tree": "a1aba411504ac028d4ead6f28ca05bd024c74142",
      "parents": [
        "72acc854427948efed7a83da27f7dc3239ac9afc"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: rename fsnotify_mark_entry to just fsnotify_mark\n\nThe name is long and it serves no real purpose.  So rename\nfsnotify_mark_entry to just fsnotify_mark.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2823e04de4f1a49087b58ff2bb8f61361ffd9321",
      "tree": "0467ddf513cfb9ec76f3fe498bdc9b5084008c84",
      "parents": [
        "3a9fb89f4cd04c23e16397befba92efb5d989b74"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:23 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:52 2010 -0400"
      },
      "message": "fsnotify: put inode specific fields in an fsnotify_mark in a union\n\nThe addition of marks on vfs mounts will be simplified if the inode\nspecific parts of a mark and the vfsmnt specific parts of a mark are\nactually in a union so naming can be easy.  This patch just implements the\ninode struct and the union.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "3a9fb89f4cd04c23e16397befba92efb5d989b74",
      "tree": "f60b48c8cf488ad8952601ccbc6192b5f86ec900",
      "parents": [
        "7131485a93679ff9a543b74df280cfd119eb03ca"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:23 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:52 2010 -0400"
      },
      "message": "fsnotify: include vfsmount in should_send_event when appropriate\n\nTo ensure that a group will not duplicate events when it receives it based\non the vfsmount and the inode should_send_event test we should distinguish\nthose two cases.  We pass a vfsmount to this function so groups can make\ntheir own determinations.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0d2e2a1d00d7d23e5bd9bb0935cde7c3d5835c56",
      "tree": "1c6bbbcbb143a364838d6749aa086af3c019f965",
      "parents": [
        "220d14df0dc587c06b97762829a41157c9375b94"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:51 2010 -0400"
      },
      "message": "fsnotify: drop mask argument from fsnotify_alloc_group\n\nNothing uses the mask argument to fsnotify_alloc_group.  This patch drops\nthat argument.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ffab83402f01555a5fa32efb48a4dd0ce8d12ef5",
      "tree": "4e02fa7422becb56e6ed4b8721f8b0fb3a867d44",
      "parents": [
        "cd7752ce7cac5184ca35aecebffafae9662570bc"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:50 2010 -0400"
      },
      "message": "fsnotify: fsnotify_obtain_group should be fsnotify_alloc_group\n\nfsnotify_obtain_group was intended to be able to find an already existing\ngroup.  Nothing uses that functionality.  This just renames it to\nfsnotify_alloc_group so it is clear what it is doing.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "74be0cc82835aecad332a29896b0f212ba893403",
      "tree": "eaae59c73ba52ff8cab8ee845e989d9877603f4c",
      "parents": [
        "cac69dad32899c6f4c66bb4f9baf69b0d3c7d3d1"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:50 2010 -0400"
      },
      "message": "fsnotify: remove group_num altogether\n\nThe original fsnotify interface has a group-num which was intended to be\nable to find a group after it was added.  I no longer think this is a\nnecessary thing to do and so we remove the group_num.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8112e2d6a7356e8c3ff1f7f3c86f375ed0305705",
      "tree": "953926dd3596c0ac87d7407960d0987b765a8239",
      "parents": [
        "7b0a04fbfb35650941af87728d4891515b4fc179"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:21 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:31 2010 -0400"
      },
      "message": "fsnotify: include data in should_send calls\n\nfanotify is going to need to look at file-\u003eprivate_data to know if an event\nshould be sent or not.  This passes the data (which might be a file,\ndentry, inode, or none) to the should_send function calls so fanotify can\nget that information when available\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "7b0a04fbfb35650941af87728d4891515b4fc179",
      "tree": "48d85a11a8d3c283db3eb9f91ac4fb97bb2beafe",
      "parents": [
        "d7f0ce4e436b6109527c51b0efe0deff53d215f7"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:21 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:31 2010 -0400"
      },
      "message": "fsnotify: provide the data type to should_send_event\n\nfanotify is only interested in event types which contain enough information\nto open the original file in the context of the fanotify listener.  Since\nfanotify may not want to send events if that data isn\u0027t present we pass\nthe data type to the should_send_event function call so fanotify can express\nits lack of interest.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "28a3a7eb3b1f3e7d834e19f06e794e429058a4dd",
      "tree": "c025ce90e250786784e18cde38d6c9c89e7b31f9",
      "parents": [
        "40554c3dae83bd892b7fbfaa2ea9de739cbcf065"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 20:12:05 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:17 2010 -0400"
      },
      "message": "audit: reimplement audit_trees using fsnotify rather than inotify\n\nSimply switch audit_trees from using inotify to using fsnotify for it\u0027s\ninode pinning and disappearing act information.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "1f707137b55764740981d022d29c622832a61880",
      "tree": "af5f72ea7df1afbc1f3b5bb53a3ab3d8ebaae1e0",
      "parents": [
        "462d60577a997aa87c935ae4521bd303733a9f2b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 22:51:25 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:57 2010 -0500"
      },
      "message": "new helper: iterate_mounts()\n\napply function to vfsmounts in set returned by collect_mounts(),\nstop if it returns non-zero.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2096f759abcb42200a81d776f597362fd9265024",
      "tree": "f0784653a50713f9f91f39e24c40abacbfbb6427",
      "parents": [
        "495d6c9c6595ec7b37910dfd42634839431d21fd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 13:16:21 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:55 2010 -0500"
      },
      "message": "New helper: path_is_under(path1, path2)\n\nAnalog of is_subdir for vfsmount,dentry pairs, moved from audit_tree.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4c30aad39805902cf5b855aa8a8b22d728ad057",
      "tree": "77aade9b02f1c7b0d2e92cdee9ce2403121f4a23",
      "parents": [
        "6f5d51148921c242680a7a1d9913384a30ab3cbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sat Dec 19 16:03:30 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:27:43 2009 -0800"
      },
      "message": "fix more leaks in audit_tree.c tag_chunk()\n\nSeveral leaks in audit_tree didn\u0027t get caught by commit\n318b6d3d7ddbcad3d6867e630711b8a705d873d7, including the leak on normal\nexit in case of multiple rules refering to the same chunk.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f5d51148921c242680a7a1d9913384a30ab3cbe",
      "tree": "fdd33c4390dbd93ca8a77f6427b244937b9cddba",
      "parents": [
        "9b0fd1149747b117e7c3e9917fdea03b774ae3d0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sat Dec 19 15:59:45 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:27:43 2009 -0800"
      },
      "message": "fix braindamage in audit_tree.c untag_chunk()\n\n... aka \"Al had badly fscked up when writing that thing and nobody\nnoticed until Eric had fixed leaks that used to mask the breakage\".\n\nThe function essentially creates a copy of old array sans one element\nand replaces the references to elements of original (they are on cyclic\nlists) with those to corresponding elements of new one.  After that the\nold one is fair game for freeing.\n\nFirst of all, there\u0027s a dumb braino: when we get to list_replace_init we\nuse indices for wrong arrays - position in new one with the old array\nand vice versa.\n\nAnother bug is more subtle - termination condition is wrong if the\nelement to be excluded happens to be the last one.  We shouldn\u0027t go\nuntil we fill the new array, we should go until we\u0027d finished the old\none.  Otherwise the element we are trying to kill will remain on the\ncyclic lists...\n\nThat crap used to be masked by several leaks, so it was not quite\ntrivial to hit.  Eric had fixed some of those leaks a while ago and the\nshit had hit the fan...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "916d75761c971b6e630a26bd4ba472e90ac9a4b9",
      "tree": "3a4b18d0d29c1d12f64fefbb2bc5559813a686f7",
      "parents": [
        "9d9609851003ebed15957f0f2ce18492739ee124"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 00:02:38 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 00:02:38 2009 -0400"
      },
      "message": "Fix rule eviction order for AUDIT_DIR\n\nIf syscall removes the root of subtree being watched, we\ndefinitely do not want the rules refering that subtree\nto be destroyed without the syscall in question having\na chance to match them.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d9609851003ebed15957f0f2ce18492739ee124",
      "tree": "2c116865d2f239b5596b22a3a79eecc82f5e1299",
      "parents": [
        "35fe4d0b1b12286a81938e9c5fdfaf639ac0ce5b"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:31:37 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 00:00:52 2009 -0400"
      },
      "message": "Audit: clean up all op\u003d output to include string quoting\n\nA number of places in the audit system we send an op\u003d followed by a string\nthat includes spaces.  Somehow this works but it\u0027s just wrong.  This patch\nmoves all of those that I could find to be quoted.\n\nExample:\n\nChange From: type\u003dCONFIG_CHANGE msg\u003daudit(1244666690.117:31): auid\u003d0 ses\u003d1\nsubj\u003dunconfined_u:unconfined_r:auditctl_t:s0-s0:c0.c1023 op\u003dremove rule\nkey\u003d\"number2\" list\u003d4 res\u003d0\n\nChange To: type\u003dCONFIG_CHANGE msg\u003daudit(1244666690.117:31): auid\u003d0 ses\u003d1\nsubj\u003dunconfined_u:unconfined_r:auditctl_t:s0-s0:c0.c1023 op\u003d\"remove rule\"\nkey\u003d\"number2\" list\u003d4 res\u003d0\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "589ff870ed60a9ebdd5ec99ec3f5afe1282fe151",
      "tree": "a628f8db3bd587df6e2a918216aa64946b506e6f",
      "parents": [
        "bab77ebf51e3902f608ecf08c9d34a0a52ac35a9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 18 03:28:19 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:01 2009 -0400"
      },
      "message": "Switch collect_mounts() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "24b6f16ecf37f918a1934d590e9e71c100d6388f",
      "tree": "14ea0e7f399c1608d0401e87655cc9332a3b9f33",
      "parents": [
        "1644ccc8a99ae73859c39372f96afdbf03c9f80d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 18 03:25:41 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:01:15 2009 -0400"
      },
      "message": "No need for crossing to mountpoint in audit_tag_tree()\n\nis_under() will DTRT anyway.  And yes, is_subdir() behaviour\nis intentional.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "318b6d3d7ddbcad3d6867e630711b8a705d873d7",
      "tree": "bdf1d75e26b1dc5ea4db67c6061f444c26eb9799",
      "parents": [
        "6d208da89aabee8502debe842832ca0ab298d16d"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Jan 13 17:32:40 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Apr 05 13:48:26 2009 -0400"
      },
      "message": "audit: incorrect ref counting in audit tree tag_chunk\n\ntag_chunk has bad exit paths in which the inotify ref counting is wrong.\nAt the top of the function we found \u0026old_watch using  inotify_find_watch().\ninotify_find_watch takes a reference to the watch.  This is never dropped\non an error path.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5af75d8d58d0f9f7b7c0515b35786b22892d5f12",
      "tree": "65707c5309133a33140c39145ae91b7c1679a877",
      "parents": [
        "36c4f1b18c8a7d0adb4085e7f531860b837bb6b0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 16 05:59:26 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:42 2009 -0500"
      },
      "message": "audit: validate comparison operations, store them in sane form\n\nDon\u0027t store the field-\u003eop in the messy (and very inconvenient for e.g.\naudit_comparator()) form; translate to dense set of values and do full\nvalidation of userland-submitted value while we are at it.\n\n-\u003eaudit_init_rule() and -\u003eaudit_match_rule() get new values now; in-tree\ninstances updated.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e45aa212ea81d39b38ba158df344dc3a500153e5",
      "tree": "c4d55cda9e8f976d15b6b01a775a3437f932db27",
      "parents": [
        "0590b9335a1c72a3f0defcc6231287f7817e07c8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 15 01:17:50 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 04 15:14:42 2009 -0500"
      },
      "message": "audit rules ordering, part 2\n\nFix the actual rule listing; add per-type lists _not_ used for matching,\nwith all exit,... sitting on one such list.  Simplifies \"do something\nfor all rules\" logics, while we are at it...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8f7b0ba1c853919b85b54774775f567f30006107",
      "tree": "1acd2b7ed5ed0de3eecfff9da5da4e779731f8a8",
      "parents": [
        "0d3b71009737511ea937ac405205fd8214b898bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sat Nov 15 01:15:43 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 12:26:44 2008 -0800"
      },
      "message": "Fix inotify watch removal/umount races\n\nInotify watch removals suck violently.\n\nTo kick the watch out we need (in this order) inode-\u003einotify_mutex and\nih-\u003emutex.  That\u0027s fine if we have a hold on inode; however, for all\nother cases we need to make damn sure we don\u0027t race with umount.  We can\n*NOT* just grab a reference to a watch - inotify_unmount_inodes() will\nhappily sail past it and we\u0027ll end with reference to inode potentially\noutliving its superblock.\n\nIdeally we just want to grab an active reference to superblock if we\ncan; that will make sure we won\u0027t go into inotify_umount_inodes() until\nwe are done.  Cleanup is just deactivate_super().\n\nHowever, that leaves a messy case - what if we *are* racing with\numount() and active references to superblock can\u0027t be acquired anymore?\nWe can bump -\u003es_count, grab -\u003es_umount, which will almost certainly wait\nuntil the superblock is shut down and the watch in question is pining\nfor fjords.  That\u0027s fine, but there is a problem - we might have hit the\nwindow between -\u003es_active getting to 0 / -\u003es_count - below S_BIAS (i.e.\nthe moment when superblock is past the point of no return and is heading\nfor shutdown) and the moment when deactivate_super() acquires\n-\u003es_umount.\n\nWe could just do drop_super() yield() and retry, but that\u0027s rather\nantisocial and this stuff is luser-triggerable.  OTOH, having grabbed\n-\u003es_umount and having found that we\u0027d got there first (i.e.  that\n-\u003es_root is non-NULL) we know that we won\u0027t race with\ninotify_umount_inodes().\n\nSo we could grab a reference to watch and do the rest as above, just\nwith drop_super() instead of deactivate_super(), right? Wrong.  We had\nto drop ih-\u003emutex before we could grab -\u003es_umount.  So the watch\ncould\u0027ve been gone already.\n\nThat still can be dealt with - we need to save watch-\u003ewd, do idr_find()\nand compare its result with our pointer.  If they match, we either have\nthe damn thing still alive or we\u0027d lost not one but two races at once,\nthe watch had been killed and a new one got created with the same -\u003ewd\nat the same address.  That couldn\u0027t have happened in inotify_destroy(),\nbut inotify_rm_wd() could run into that.  Still, \"new one got created\"\nis not a problem - we have every right to kill it or leave it alone,\nwhatever\u0027s more convenient.\n\nSo we can use idr_find(...) \u003d\u003d watch \u0026\u0026 watch-\u003einode-\u003ei_sb \u003d\u003d sb as\n\"grab it and kill it\" check.  If it\u0027s been our original watch, we are\nfine, if it\u0027s a newcomer - nevermind, just pretend that we\u0027d won the\nrace and kill the fscker anyway; we are safe since we know that its\nsuperblock won\u0027t be going away.\n\nAnd yes, this is far beyond mere \"not very pretty\"; so\u0027s the entire\nconcept of inotify to start with.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98bc993f99e51467057ef699e47fec020f24d233",
      "tree": "9d1d1dd5b1116b1cff0b32884ca6165ae29d236c",
      "parents": [
        "421748ecde8e69a6364e5ae66eb3bf87e1f995c0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 02 01:06:21 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:53 2008 -0400"
      },
      "message": "[PATCH] get rid of nameidata in audit_tree\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6793a051fb9311f0f1ab7eafc5a9e69b8a1bd8d4",
      "tree": "e0732f3bf37440015e86ccfd6a0cb5ca79703c5e",
      "parents": [
        "fcaf1eb8685a00a99259e138e403841e984385b0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 14 17:10:12 2008 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 17 03:30:23 2008 -0400"
      },
      "message": "[PATCH] list_for_each_rcu must die: audit\n\nAll uses of list_for_each_rcu() can be profitably replaced by the\neasier-to-use list_for_each_entry_rcu().  This patch makes this change\nfor the Audit system, in preparation for removing the list_for_each_rcu()\nAPI entirely.  This time with well-formed SOB.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d957f9bf87da74f420424d16ece005202bbebd3",
      "tree": "363d4770c0c74a536524c99ccd2762ce96ee9bbe",
      "parents": [
        "4ac9137858e08a19f29feac4e1f4df7c268b0ba5"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Introduce path_put()\n\n* Add path_put() functions for releasing a reference to the dentry and\n  vfsmount of a struct path in the right order\n\n* Switch from path_release(nd) to path_put(\u0026nd-\u003epath)\n\n* Rename dput_path() to path_put_conditional()\n\n[akpm@linux-foundation.org: fix cifs]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-fsdevel@vger.kernel.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74c3cbe33bc077ac1159cadfea608b501e100344",
      "tree": "4c4023caa4e15d19780255fa5880df3d36eb292c",
      "parents": [
        "455434d450a358ac5bcf3fc58f8913d13c544622"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 22 08:04:18 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 21 02:37:45 2007 -0400"
      },
      "message": "[PATCH] audit: watching subtrees\n\nNew kind of audit rule predicates: \"object is visible in given subtree\".\nThe part that can be sanely implemented, that is.  Limitations:\n\t* if you have hardlink from outside of tree, you\u0027d better watch\nit too (or just watch the object itself, obviously)\n\t* if you mount something under a watched tree, tell audit\nthat new chunk should be added to watched subtrees\n\t* if you umount something in a watched tree and it\u0027s still mounted\nelsewhere, you will get matches on events happening there.  New command\ntells audit to recalculate the trees, trimming such sources of false\npositives.\n\nNote that it\u0027s _not_ about path - if something mounted in several places\n(multiple mount, bindings, different namespaces, etc.), the match does\n_not_ depend on which one we are using for access.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ]
}
