)]}'
{
  "log": [
    {
      "commit": "42933bac11e811f02200c944d8562a15f8ec4ff0",
      "tree": "fcdd9afe56eb0e746565ddd1f92f22d36678b843",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "25985edcedea6396277003854657b5f3cb31a628"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6\n\n* \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6:\n  Fix common misspellings\n"
    },
    {
      "commit": "d0de4dc584ec6aa3b26fffea320a8457827768fc",
      "tree": "6895419a694ba323c6b18cdb6aa2714892b6f481",
      "parents": [
        "623dda65b6f71e6474f3f156dbed2acf6ff43584"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Apr 05 17:20:50 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 15:27:14 2011 -0700"
      },
      "message": "inotify: fix double free/corruption of stuct user\n\nOn an error path in inotify_init1 a normal user can trigger a double\nfree of struct user.  This is a regression introduced by a2ae4cc9a16e\n(\"inotify: stop kernel memory leak on file creation failure\").\n\nWe fix this by making sure that if a group exists the user reference is\ndropped when the group is cleaned up.  We should not explictly drop the\nreference on error and also drop the reference when the group is cleaned\nup.\n\nThe new lifetime rules are that an inotify group lives from\ninotify_new_group to the last fsnotify_put_group.  Since the struct user\nand inotify_devs are directly tied to this lifetime they are only\nchanged/updated in those two locations.  We get rid of all special\ncasing of struct user or user-\u003einotify_devs.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nCc: stable@kernel.org (2.6.37 and up)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.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": "67a23c494621ff1d5431c3bc320947865b224625",
      "tree": "cce0868fc73031d8b0addc4dc7412d49ee9ec370",
      "parents": [
        "a66979abad090b2765a6c6790c9fdeab996833f2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:42 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:51 2011 -0400"
      },
      "message": "fs: rename inode_lock to inode_hash_lock\n\nAll that remains of the inode_lock is protecting the inode hash list\nmanipulation and traversals. Rename the inode_lock to\ninode_hash_lock to reflect it\u0027s actual function.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "55fa6091d83160ca772fc37cebae45d42695a708",
      "tree": "4df49f372032e30449e1a2dd64daf443e20b781c",
      "parents": [
        "f283c86afe6aa70b733d1ecebad5d9464943b774"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:40 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:32 2011 -0400"
      },
      "message": "fs: move i_sb_list out from under inode_lock\n\nProtect the per-sb inode list with a new global lock\ninode_sb_list_lock and use it to protect the list manipulations and\ntraversals. This lock replaces the inode_lock as the inodes on the\nlist can be validity checked while holding the inode-\u003ei_lock and\nhence the inode_lock is no longer needed to protect the list.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "250df6ed274d767da844a5d9f05720b804240197",
      "tree": "b74f49a86c4451d9e3e82f90e3f791163025be21",
      "parents": [
        "3dc8fe4dca9cd3e4aa828ed36451e2bcfd2350da"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:36 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: protect inode-\u003ei_state with inode-\u003ei_lock\n\nProtect inode state transitions and validity checks with the\ninode-\u003ei_lock. This enables us to make inode state transitions\nindependently of the inode_lock and is the first step to peeling\naway the inode_lock from the code.\n\nThis requires that __iget() is done atomically with i_state checks\nduring list traversals so that we don\u0027t race with another thread\nmarking the inode I_FREEING between the state check and grabbing the\nreference.\n\nAlso remove the unlock_new_inode() memory barrier optimisation\nrequired to avoid taking the inode_lock when clearing I_NEW.\nSimplify the code by simply taking the inode-\u003ei_lock around the\nstate change and wakeup. Because the wakeup is no longer tricky,\nremove the wake_up_inode() function and open code the wakeup where\nnecessary.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ae0e47f02aaedbfdd5e4bec73f79b714d758223d",
      "tree": "348f99385f42a2f698bddb4ced3e6c472e5d68cc",
      "parents": [
        "ddf12286951aee1e7763112cf26629de3fabe6ae"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Tue Mar 01 15:06:02 2011 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Mar 01 15:47:58 2011 +0100"
      },
      "message": "Remove one to many n\u0027s in a word\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "873feea09ebc980cbd3631b767356ce1eee65ec1",
      "tree": "59a8fce9b138086abee7cf845f62ff70a390cf81",
      "parents": [
        "ceb5bdc2d246f6d81cf61ed70f325308a11821d2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:06 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:31 2011 +1100"
      },
      "message": "fs: dcache per-inode inode alias locking\n\ndcache_inode_lock can be replaced with per-inode locking. Use existing\ninode-\u003ei_lock for this. This is slightly non-trivial because we sometimes\nneed to find the inode from the dentry, which requires d_inode to be\nstabilised (either with refcount or d_lock).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b23fb0a60379a95e10c671f646b259ea2558421e",
      "tree": "7c3644b91241d32fda502a7be0b78e4c225f8091",
      "parents": [
        "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:35 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:22 2011 +1100"
      },
      "message": "fs: scale inode alias list\n\nAdd a new lock, dcache_inode_lock, to protect the inode\u0027s i_dentry list\nfrom concurrent modification. d_alias is also protected by d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc",
      "tree": "ce33b94b34844c09103836cf4cfa4364b742f217",
      "parents": [
        "da5029563a0a026c64821b09e8e7b4fd81d3fe1b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:34 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale subdirs\n\nProtect d_subdirs and d_child with d_lock, except in filesystems that aren\u0027t\nusing dcache_lock for these anyway (eg. using i_mutex).\n\nNote: if we change the locking rule in future so that -\u003ed_child protection is\nprovided only with -\u003ed_parent-\u003ed_lock, it may allow us to reduce some locking.\nBut it would be an exception to an otherwise regular locking scheme, so we\u0027d\nhave to see some good results. Probably not worthwhile.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "4b7bd364700d9ac8372eff48832062b936d0793b",
      "tree": "0dbf78c95456a0b02d07fcd473281f04a87e266d",
      "parents": [
        "c0d8768af260e2cbb4bf659ae6094a262c86b085",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/mach-omap2/pm24xx.c\n\tdrivers/scsi/bfa/bfa_fcpim.c\n\nNeeded to update to apply fixes for which the old branch was too\noutdated.\n"
    },
    {
      "commit": "7d13162332f2b67a941d18cee20f1c0413e020de",
      "tree": "a9e40f802579e750fbf75e025e9cee7c760ca558",
      "parents": [
        "62731fa0c893515dc6cbc3e0a2879a92793c735f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 15:27:57 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Dec 15 13:58:18 2010 -0500"
      },
      "message": "fanotify: fill in the metadata_len field on struct fanotify_event_metadata\n\nThe fanotify_event_metadata now has a field which is supposed to\nindicate the length of the metadata portion of the event.  Fill in that\nfield as well.\n\nBased-in-part-on-patch-by: Alexey Zaytsev \u003calexey.zaytsev@gmail.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "fdbf3ceeb659f0b3c0e8dd79b331b7ac05910f1e",
      "tree": "72ed0abad8e550cfa54d83c677d3a9baba28f110",
      "parents": [
        "e9a3854fd4ff3907e6c200a3980e19365ee695e9"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Wed Nov 24 18:26:04 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:24 2010 -0500"
      },
      "message": "fanotify: Dont try to open a file descriptor for the overflow event\n\nWe should not try to open a file descriptor for the overflow event since this\nwill always fail.\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "26379198937fcc9bbe7be76be695d06df8334eaa",
      "tree": "47be9bc5b202f5f5e1a94a08966d362787bb06ea",
      "parents": [
        "a2ae4cc9a16e211c8a128ba10d22a85431f093ab"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Nov 23 23:48:26 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:23 2010 -0500"
      },
      "message": "fanotify: do not leak user reference on allocation failure\n\nIf fanotify_init is unable to allocate a new fsnotify group it will\nreturn but will not drop its reference on the associated user struct.\nDrop that reference on error.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a2ae4cc9a16e211c8a128ba10d22a85431f093ab",
      "tree": "9de9f2c95163bf53b44413de542f5be528ff302f",
      "parents": [
        "09e5f14e57c70f9d357862bb56e57026c51092a1"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Nov 23 18:18:37 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:22 2010 -0500"
      },
      "message": "inotify: stop kernel memory leak on file creation failure\n\nIf inotify_init is unable to allocate a new file for the new inotify\ngroup we leak the new group.  This patch drops the reference on the\ngroup on file allocation failure.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\ncc: stable@kernel.org\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "09e5f14e57c70f9d357862bb56e57026c51092a1",
      "tree": "e6e9c38a15e4ea562dcb0ac600ae37831dd16b49",
      "parents": [
        "1734dee4e3a296cb72b4819fc2e7ef2440737dff"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Fri Nov 19 10:58:07 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:22 2010 -0500"
      },
      "message": "fanotify: on group destroy allow all waiters to bypass permission check\n\nWhen fanotify_release() is called, there may still be processes waiting for\naccess permission. Currently only processes for which an event has already been\nqueued into the groups access list will be woken up.  Processes for which no\nevent has been queued will continue to sleep and thus cause a deadlock when\nfsnotify_put_group() is called.\nFurthermore there is a race allowing further processes to be waiting on the\naccess wait queue after wake_up (if they arrive before clear_marks_by_group()\nis called).\nThis patch corrects this by setting a flag to inform processes that the group\nis about to be destroyed and thus not to wait for access permission.\n\n[additional changelog from eparis]\nLets think about the 4 relevant code paths from the PoV of the\n\u0027operator\u0027 \u0027listener\u0027 \u0027responder\u0027 and \u0027closer\u0027.  Where operator is the\nprocess doing an action (like open/read) which could require permission.\nListener is the task (or in this case thread) slated with reading from\nthe fanotify file descriptor.  The \u0027responder\u0027 is the thread responsible\nfor responding to access requests.  \u0027Closer\u0027 is the thread attempting to\nclose the fanotify file descriptor.\n\nThe \u0027operator\u0027 is going to end up in:\nfanotify_handle_event()\n  get_response_from_access()\n    (THIS BLOCKS WAITING ON USERSPACE)\n\nThe \u0027listener\u0027 interesting code path\nfanotify_read()\n  copy_event_to_user()\n    prepare_for_access_response()\n      (THIS CREATES AN fanotify_response_event)\n\nThe \u0027responder\u0027 code path:\nfanotify_write()\n  process_access_response()\n    (REMOVE A fanotify_response_event, SET RESPONSE, WAKE UP \u0027operator\u0027)\n\nThe \u0027closer\u0027:\nfanotify_release()\n  (SUPPOSED TO CLEAN UP THE REST OF THIS MESS)\n\nWhat we have today is that in the closer we remove all of the\nfanotify_response_events and set a bit so no more response events are\never created in prepare_for_access_response().\n\nThe bug is that we never wake all of the operators up and tell them to\nmove along.  You fix that in fanotify_get_response_from_access().  You\nalso fix other operators which haven\u0027t gotten there yet.  So I agree\nthat\u0027s a good fix.\n[/additional changelog from eparis]\n\n[remove additional changes to minimize patch size]\n[move initialization so it was inside CONFIG_FANOTIFY_PERMISSION]\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "1734dee4e3a296cb72b4819fc2e7ef2440737dff",
      "tree": "1923b47c601a521ebe5989b1878cd4d1f17d2b20",
      "parents": [
        "fa218ab98c31eeacd12b89501e6b99d146ea56cc"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Mon Nov 22 18:46:33 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:21 2010 -0500"
      },
      "message": "fanotify: Dont allow a mask of 0 if setting or removing a mark\n\nIn mark_remove_from_mask() we destroy marks that have their event mask cleared.\nThus we should not allow the creation of those marks in the first place.\nWith this patch we check if the mask given from user is 0 in case of FAN_MARK_ADD.\nIf so we return an error. Same for FAN_MARK_REMOVE since this does not have any\neffect.\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "fa218ab98c31eeacd12b89501e6b99d146ea56cc",
      "tree": "789e0f922fbb30844a89a4aaf707c01991c74ea3",
      "parents": [
        "b1085ba80cd2784400a7beec3fda5099198ed01c"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Tue Nov 09 18:18:16 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:21 2010 -0500"
      },
      "message": "fanotify: correct broken ref counting in case adding a mark failed\n\nIf adding a mount or inode mark failed fanotify_free_mark() is called explicitly.\nBut at this time the mark has already been put into the destroy list of the\nfsnotify_mark kernel thread. If the thread is too slow it will try to decrease\nthe reference of a mark, that has already been freed by fanotify_free_mark().\n(If its fast enough it will only decrease the marks ref counter from 2 to 1 - note\nthat the counter has been increased to 2 in add_mark() - which has practically no\neffect.)\n\nThis patch fixes the ref counting by not calling free_mark() explicitly, but\ndecreasing the ref counter and rely on the fsnotify_mark thread to cleanup in\ncase adding the mark has failed.\n\nSigned-off-by: Lino Sanfilippo \u003cLinoSanfilippo@gmx.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ecf6f5e7d68471b08603f7c20143ac236602364f",
      "tree": "fb6fc404022d4674c2cb8e9a31f98a719a316e14",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Nov 08 18:08:14 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 16:14:17 2010 -0500"
      },
      "message": "fanotify: deny permissions when no event was sent\n\nIf no event was sent to userspace we cannot expect userspace to respond to\npermissions requests.  Today such requests just hang forever. This patch will\ndeny any permissions event which was unable to be sent to userspace.\n\nReported-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "6aaccece1c483f189f76f1282b3984ff4c7ecb0a",
      "tree": "ac90b7d0f4dcc22b7231330184fc9b4ca7222932",
      "parents": [
        "bf01ca1b35ff26a4c16c22b9ce7554f0d3a45ba7"
      ],
      "author": {
        "name": "Michael Witten",
        "email": "mfwitten@gmail.com",
        "time": "Mon Nov 01 17:50:12 2010 +0000"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 01 15:17:29 2010 -0400"
      },
      "message": "Kconfig: typo: and -\u003e an\n\nSigned-off-by: Michael Witten \u003cmfwitten@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1a5cea7215f7c6bd3c960d7b44e864f3a73d1ad4",
      "tree": "d8bdd846e5ef83c1707eaf9e9040705d80869260",
      "parents": [
        "d8c0fca68da25ca3df534dfb12ce628675c828e4"
      ],
      "author": {
        "name": "Lino Sanfilippo",
        "email": "LinoSanfilippo@gmx.de",
        "time": "Fri Oct 29 12:06:42 2010 +0200"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sat Oct 30 14:07:35 2010 -0400"
      },
      "message": "make fanotify_read() restartable across signals\n\n    In fanotify_read() return -ERESTARTSYS instead of -EINTR to\n    make read() restartable across signals (BSD semantic).\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "19ba54f4645f8c5edae4b08919a37a409b8793aa",
      "tree": "83328233533ef33861fcc0617dd9ca68a981c92f",
      "parents": [
        "50e4a98914de13c6f38f50fd1afa06e2c18b3cf7"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Oct 28 17:21:59 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:16 2010 -0400"
      },
      "message": "fs/notify/fanotify/fanotify_user.c: fix warnings\n\nfs/notify/fanotify/fanotify_user.c: In function \u0027fanotify_release\u0027:\nfs/notify/fanotify/fanotify_user.c:375: warning: unused variable \u0027lre\u0027\nfs/notify/fanotify/fanotify_user.c:375: warning: unused variable \u0027re\u0027\n\nthis is really ugly.\n\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "192ca4d1941228e69c1fbeebab317725407e6e65",
      "tree": "cff474f312a41b5ab4fbbf72a558675f377e1808",
      "parents": [
        "8fcd65280abc4699510f1853ede31f43e8a3783a"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:59 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:16 2010 -0400"
      },
      "message": "fanotify: do not recalculate the mask if the ignored mask changed\n\nIf fanotify sets a new bit in the ignored mask it will cause the generic\nfsnotify layer to recalculate the real mask.  This is stupid since we\ndidn\u0027t change that part.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8fcd65280abc4699510f1853ede31f43e8a3783a",
      "tree": "9ef20b7c3ee0a4130d88922d7d4115beaa0c9dc0",
      "parents": [
        "b29866aab8489487f11cc4506590ac31bdbae22a"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:59 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:16 2010 -0400"
      },
      "message": "fanotify: ignore events on directories unless specifically requested\n\nfanotify has a very limited number of events it sends on directories.  The\nusefulness of these events is yet to be seen and still we send them.  This\nis particularly painful for mount marks where one might receive many of\nthese useless events.  As such this patch will drop events on IS_DIR()\ninodes unless they were explictly requested with FAN_ON_DIR.\n\nThis means that a mark on a directory without FAN_EVENT_ON_CHILD or\nFAN_ON_DIR is meaningless and will result in no events ever (although it\nwill still be allowed since detecting it is hard)\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b29866aab8489487f11cc4506590ac31bdbae22a",
      "tree": "814ff82fd2067dfa75a69284a38f3ae26ee692fe",
      "parents": [
        "e1c048ba786789afdc66f32d8394bb5a0014bbba"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:58 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:15 2010 -0400"
      },
      "message": "fsnotify: rename FS_IN_ISDIR to FS_ISDIR\n\nThe _IN_ in the naming is reserved for flags only used by inotify.  Since I\nam about to use this flag for fanotify rename it to be generic like the\nrest.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e1c048ba786789afdc66f32d8394bb5a0014bbba",
      "tree": "03a8ca0e2ca11d40f175442338ab6c75d772940c",
      "parents": [
        "4afeff8505cb8a38e36c1ef2bd3447c4b8f87367"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:58 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:15 2010 -0400"
      },
      "message": "fanotify: do not send events for irregular files\n\nfanotify_should_send_event has a test to see if an object is a file or\ndirectory and does not send an event otherwise.  The problem is that the\ntest is actually checking if the object with a mark is a file or directory,\nnot if the object the event happened on is a file or directory.  We should\ncheck the latter.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "4afeff8505cb8a38e36c1ef2bd3447c4b8f87367",
      "tree": "50a80d8773698813e4e9d9f9112079c09d493c48",
      "parents": [
        "ac7e22dcfafd04c842a02057afd6541c1d613ef9"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:58 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:15 2010 -0400"
      },
      "message": "fanotify: limit number of listeners per user\n\nfanotify currently has no limit on the number of listeners a given user can\nhave open.  This patch limits the total number of listeners per user to\n128.  This is the same as the inotify default limit.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ac7e22dcfafd04c842a02057afd6541c1d613ef9",
      "tree": "54e84b0596d9915f29e56e6b6a8d8370771202c5",
      "parents": [
        "e7099d8a5a34d2876908a9fab4952dabdcfc5909"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:58 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:15 2010 -0400"
      },
      "message": "fanotify: allow userspace to override max marks\n\nSome fanotify groups, especially those like AV scanners, will need to place\nlots of marks, particularly ignore marks.  Since ignore marks do not pin\ninodes in cache and are cleared if the inode is removed from core (usually\nunder memory pressure) we expose an interface for listeners, with\nCAP_SYS_ADMIN, to override the maximum number of marks and be allowed to\nset and \u0027unlimited\u0027 number of marks.  Programs which make use of this\nfeature will be able to OOM a machine.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e7099d8a5a34d2876908a9fab4952dabdcfc5909",
      "tree": "34f62d8ae23c4c115a0b615cd13e9ae7ddd28b42",
      "parents": [
        "5dd03f55fd2f21916ce248bb2e68bbfb39d94fe5"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:57 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:14 2010 -0400"
      },
      "message": "fanotify: limit the number of marks in a single fanotify group\n\nThere is currently no limit on the number of marks a given fanotify group\ncan have.  Since fanotify is gated on CAP_SYS_ADMIN this was not seen as\na serious DoS threat.  This patch implements a default of 8192, the same as\ninotify to work towards removing the CAP_SYS_ADMIN gating and eliminating\nthe default DoS\u0027able status.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5dd03f55fd2f21916ce248bb2e68bbfb39d94fe5",
      "tree": "3d4446ce07126b9983849a41670542c69bb400bd",
      "parents": [
        "2529a0df0f64dab1f60ae08e038b89c53a6b4c02"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:57 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:14 2010 -0400"
      },
      "message": "fanotify: allow userspace to override max queue depth\n\nfanotify has a defualt max queue depth.  This patch allows processes which\nexplicitly request it to have an \u0027unlimited\u0027 queue depth.  These processes\nneed to be very careful to make sure they cannot fall far enough behind\nthat they OOM the box.  Thus this flag is gated on CAP_SYS_ADMIN.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2529a0df0f64dab1f60ae08e038b89c53a6b4c02",
      "tree": "59f73938d84b78b535c91282677054d1f3dd1697",
      "parents": [
        "5322a59f14e4cae5f878b9c0c5612d403c230d7f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:57 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:14 2010 -0400"
      },
      "message": "fsnotify: implement a default maximum queue depth\n\nCurrently fanotify has no maximum queue depth.  Since fanotify is\nCAP_SYS_ADMIN only this does not pose a normal user DoS issue, but it\ncertianly is possible that an fanotify listener which can\u0027t keep up could\nOOM the box.  This patch implements a default 16k depth.  This is the same\ndefault depth used by inotify, but given fanotify\u0027s better queue merging in\nmany situations this queue will contain many additional useful events by\ncomparison.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5322a59f14e4cae5f878b9c0c5612d403c230d7f",
      "tree": "5090861d8e7df0b69f342c527390007e8c3f68e9",
      "parents": [
        "bbf2aba50f6ed7c8dd53623fa1437b539928ac39"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:57 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:14 2010 -0400"
      },
      "message": "fanotify: ignore fanotify ignore marks if open writers\n\nfanotify will clear ignore marks if a task changes the contents of an\ninode.  The problem is with the races around when userspace finishes\nchecking a file and when that result is actually attached to the inode.\nThis race was described as such:\n\nConsider the following scenario with hostile processes A and B, and\nvictim process C:\n1. Process A opens new file for writing. File check request is generated.\n2. File check is performed in userspace. Check result is \"file has no malware\".\n3. The \"permit\" response is delivered to kernel space.\n4. File ignored mark set.\n5. Process A writes dummy bytes to the file. File ignored flags are cleared.\n6. Process B opens the same file for reading. File check request is generated.\n7. File check is performed in userspace. Check result is \"file has no malware\".\n8. Process A writes malware bytes to the file. There is no cached response yet.\n9. The \"permit\" response is delivered to kernel space and is cached in fanotify.\n10. File ignored mark set.\n11. Now any process C will be permitted to open the malware file.\nThere is a race between steps 8 and 10\n\nWhile fanotify makes no strong guarantees about systems with hostile\nprocesses there is no reason we cannot harden against this race.  We do\nthat by simply ignoring any ignore marks if the inode has open writers (aka\ni_writecount \u003e 0).  (We actually do not ignore ignore marks if the\nFAN_MARK_SURV_MODIFY flag is set)\n\nReported-by: Vasily Novikov \u003cvasily.novikov@kaspersky.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "52420392c81c8712f555e6bcd116d8bd214ce43a",
      "tree": "372d23bba71ee687ff5adf5b83d3fd0706e19927",
      "parents": [
        "ff8bcbd03da881bf1171910c6c07d44bd3c0a234"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:56 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:13 2010 -0400"
      },
      "message": "fsnotify: call fsnotify_parent in perm events\n\nfsnotify perm events do not call fsnotify parent.  That means you cannot\nregister a perm event on a directory and enforce permissions on all inodes in\nthat directory.  This patch fixes that situation.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ff8bcbd03da881bf1171910c6c07d44bd3c0a234",
      "tree": "ec7ad24bf2923bc19c48f1160a05328299193a8d",
      "parents": [
        "2868201965419b9011f3f07fd80e765181343cb1"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:56 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:13 2010 -0400"
      },
      "message": "fsnotify: correctly handle return codes from listeners\n\nWhen fsnotify groups return errors they are ignored.  For permissions\nevents these should be passed back up the stack, but for most events these\nshould continue to be ignored.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "4231a23530a30e86eb32fbe869bbef1b3e54d5aa",
      "tree": "bb268ea2e6cb50e8ea46e1f5a536ae0f0afb4e06",
      "parents": [
        "6ad2d4e3e97ee4bfde0b45e8dfe37911330fc4aa"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:56 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:13 2010 -0400"
      },
      "message": "fanotify: implement fanotify listener ordering\n\nThe fanotify listeners needs to be able to specify what types of operations\nthey are going to perform so they can be ordered appropriately between other\nlisteners doing other types of operations.  They need this to be able to make\nsure that things like hierarchichal storage managers will get access to inodes\nbefore processes which need the data.  This patch defines 3 possible uses\nwhich groups must indicate in the fanotify_init() flags.\n\nFAN_CLASS_PRE_CONTENT\nFAN_CLASS_CONTENT\nFAN_CLASS_NOTIF\n\nGroups will receive notification in that order.  The order between 2 groups in\nthe same class is undeterministic.\n\nFAN_CLASS_PRE_CONTENT is intended to be used by listeners which need access to\nthe inode before they are certain that the inode contains it\u0027s final data.  A\nhierarchical storage manager should choose to use this class.\n\nFAN_CLASS_CONTENT is intended to be used by listeners which need access to the\ninode after it contains its intended contents.  This would be the appropriate\nlevel for an AV solution or document control system.\n\nFAN_CLASS_NOTIF is intended for normal async notification about access, much the\nsame as inotify and dnotify.  Syncronous permissions events are not permitted\nat this class.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "6ad2d4e3e97ee4bfde0b45e8dfe37911330fc4aa",
      "tree": "6a4b98f659a886147088a983170fa75e5113f017",
      "parents": [
        "9343919c1495b085a4a1cf4cbada8d7888daf099"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:56 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:13 2010 -0400"
      },
      "message": "fsnotify: implement ordering between notifiers\n\nfanotify needs to be able to specify that some groups get events before\nothers.  They use this idea to make sure that a hierarchical storage\nmanager gets access to files before programs which actually use them.  This\nis purely infrastructure.  Everything will have a priority of 0, but the\ninfrastructure will exist for it to be non-zero.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "9343919c1495b085a4a1cf4cbada8d7888daf099",
      "tree": "df865fc17ad2db52caad4392f04bc6cc779d2036",
      "parents": [
        "2d3b07c07b39c4b7d9b6641052a02d996cd5d87c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:21:56 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Oct 28 17:22:13 2010 -0400"
      },
      "message": "fanotify: allow fanotify to be built\n\nWe disabled the ability to build fanotify in commit 7c5347733dcc4ba0ba.\nThis reverts that commit and allows people to build fanotify.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "63997e98a3be68d7cec806d22bf9b02b2e1daabb",
      "tree": "acd366273dc459d6b34e7f67216c06eb56117a4a",
      "parents": [
        "9843b76aae80293f5b5a0e275360627508595ce5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 20:49:35 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:27:18 2010 -0400"
      },
      "message": "split invalidate_inodes()\n\nPull removal of fsnotify marks into generic_shutdown_super().\nSplit umount-time work into a new function - evict_inodes().\nMake sure that invalidate_inodes() will be able to cope with\nI_FREEING once we change locking in iput().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4d4eb36679adbdd75495e1bbfe7ac40e4ae41dea",
      "tree": "f5cef4647a54e8a65ab518db8edeeea6b7a8652d",
      "parents": [
        "be9eee2e8b87e335531a3ae13abb8d26e834c438"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Oct 10 05:36:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:14 2010 -0400"
      },
      "message": "fsnotify: use dget_parent\n\nUse dget_parent instead of opencoding it.  This simplifies the code, but\nmore importanly prepares for the more complicated locking for a parent\ndget in the dcache scale patch series.\n\nIt means we do grab a reference to the parent now if need to be watched,\nbut not with the specified mask.  If this turns out to be a problem\nwe\u0027ll have to revisit it, but for now let\u0027s keep as much as possible\ndcache internals inside dcache.[ch].\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\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": "7c5347733dcc4ba0bac0baf86d99fae0561f33b7",
      "tree": "06dece5b51e31cd59128c1dddd5bbb16fd99e4e8",
      "parents": [
        "29979aa8bd69becd94cbad59093807a417ce2a9e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Oct 11 18:13:31 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 11 18:15:28 2010 -0700"
      },
      "message": "fanotify: disable fanotify syscalls\n\nThis patch disables the fanotify syscalls by just not building them and\nletting the cond_syscall() statements in kernel/sys_ni.c redirect them\nto sys_ni_syscall().\n\nIt was pointed out by Tvrtko Ursulin that the fanotify interface did not\ninclude an explicit prioritization between groups.  This is necessary\nfor fanotify to be usable for hierarchical storage management software,\nas they must get first access to the file, before inotify-like notifiers\nsee the file.\n\nThis feature can be added in an ABI compatible way in the next release\n(by using a number of bits in the flags field to carry the info) but it\nwas suggested by Alan that maybe we should just hold off and do it in\nthe next cycle, likely with an (new) explicit argument to the syscall.\nI don\u0027t like this approach best as I know people are already starting to\nuse the current interface, but Alan is all wise and noone on list backed\nme up with just using what we have.  I feel this is needlessly ripping\nthe rug out from under people at the last minute, but if others think it\nneeds to be a new argument it might be the best way forward.\n\nThree choices:\nGo with what we got (and implement the new feature next cycle).  Add a\nnew field right now (and implement the new feature next cycle).  Wait\ntill next cycle to release the ABI (and implement the new feature next\ncycle).  This is number 3.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "92b4678efa8ce0de9b1e01a74e3d13c4002a4136",
      "tree": "97febbafb1798324802325c22c3693902a47323d",
      "parents": [
        "f72adfd540bacc4f6ff57a7d708b1a6c8906bdb4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:42:11 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:42:11 2010 -0400"
      },
      "message": "fsnotify: drop two useless bools in the fnsotify main loop\n\nThe fsnotify main loop has 2 bools which indicated if we processed the\ninode or vfsmount mark in that particular pass through the loop.  These\nbool can we replaced with the inode_group and vfsmount_group variables\nand actually make the code a little easier to understand.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f72adfd540bacc4f6ff57a7d708b1a6c8906bdb4",
      "tree": "dffd43e47284095e98f2a2ab60f965fc68792008",
      "parents": [
        "a2f13ad0ba5d94b9768c28469b45ca1e81a2b895"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:24:24 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:41:26 2010 -0400"
      },
      "message": "fsnotify: fix list walk order\n\nMarks were stored on the inode and vfsmonut mark list in order from\nhighest memory address to lowest memory address.  The code to walk those\nlists thought they were in order from lowest to highest with\nunpredictable results when trying to match up marks from each.  It was\npossible that extra events would be sent to userspace when inode\nmarks ignoring events wouldn\u0027t get matched with the vfsmount marks.\n\nThis problem only affected fanotify when using both vfsmount and inode\nmarks simultaneously.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a2f13ad0ba5d94b9768c28469b45ca1e81a2b895",
      "tree": "3c9bd63cb165bbb4427399b3e87deb74911cd97d",
      "parents": [
        "0fb85621df4f9f7c663c6c77c302e821a832c95e"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Tue Aug 24 12:58:54 2010 +0200"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 19:59:42 2010 -0400"
      },
      "message": "fanotify: Return EPERM when a process is not privileged\n\nThe appropriate error code when privileged operations are denied is\nEPERM, not EACCES.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003cparis@paris.rdu.redhat.com\u003e\n"
    },
    {
      "commit": "ff8d6e983185ce19fa92bb836eb52b589957be65",
      "tree": "6b5a8514376d16a7fa1636d0469b47a13086adf7",
      "parents": [
        "2eebf582c9b3106abb9c33f4fc0a347fb9391037"
      ],
      "author": {
        "name": "Tvrtko Ursulin",
        "email": "tvrtko.ursulin@sophos.com",
        "time": "Fri Aug 20 10:24:18 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:30:12 2010 -0400"
      },
      "message": "fanotify: drop duplicate pr_debug statement\n\nThis reminded me... you have two pr_debugs in fanotify_should_send_event\nwhich output redundant information. Maybe you intended it like that so\nit is selectable how much log spam you want, or if not you may want to\napply this patch.\n\nSigned-off-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2eebf582c9b3106abb9c33f4fc0a347fb9391037",
      "tree": "0fab23d7e456713815890fc01a148132b9b857f8",
      "parents": [
        "84e1ab4d875922c034db7f4f814ac445a20a14bd"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:50 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:28:16 2010 -0400"
      },
      "message": "fanotify: flush outstanding perm requests on group destroy\n\nWhen an fanotify listener is closing it may cause a deadlock between the\nlistener and the original task doing an fs operation.  If the original task\nis waiting for a permissions response it will be holding the srcu lock.  The\nlistener cannot clean up and exit until after that srcu lock is syncronized.\nThus deadlock.  The fix introduced here is to stop accepting new permissions\nevents when a listener is shutting down and to grant permission for all\noutstanding events.  Thus the original task will eventually release the srcu\nlock and the listener can complete shutdown.\n\nReported-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "84e1ab4d875922c034db7f4f814ac445a20a14bd",
      "tree": "79c5755b8293f69c81e9942eeb54a62a81c9dc4b",
      "parents": [
        "88b2dbdbed551e4e21fdc8c56a15e198c52274e2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:50 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:09:41 2010 -0400"
      },
      "message": "fsnotify: fix ignored mask handling between inode and vfsmount marks\n\nThe interesting 2 list lockstep walking didn\u0027t quite work out if the inode\nmarks only had ignores and the vfsmount list requested events.  The code to\nshortcut list traversal would not run the inode list since it didn\u0027t have real\nevent requests.  This code forces inode list traversal when a vfsmount mark\nmatches the event type.  Maybe we could add an i_fsnotify_ignored_mask field\nto struct inode to get the shortcut back, but it doesn\u0027t seem worth it to grow\nstruct inode again.\n\nI bet with the recent changes to lock the way we do now it would actually not\nbe a major perf hit to just drop i_fsnotify_mark_mask altogether.  But that is\nfor another day.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5f3f259fa8f1d7969360acfad5307d03c2f53d63",
      "tree": "f1f781b5ebae2c03d27bd1a36bbd808eab8c7402",
      "parents": [
        "faa9560ae76ef50a3cbfb1a6afc0343fd8172374"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:49 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:09:41 2010 -0400"
      },
      "message": "fsnotify: reset used_inode and used_vfsmount on each pass\n\nThe fsnotify main loop has 2 booleans which tell if a particular mark was\nsent to the listeners or if it should be processed in the next pass.  The\nproblem is that the booleans were not reset on each traversal of the loop.\nSo marks could get skipped even when they were not sent to the notifiers.\n\nReported-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "faa9560ae76ef50a3cbfb1a6afc0343fd8172374",
      "tree": "b62dcdece22b214d0e0c75848b4d02b8e9923d0c",
      "parents": [
        "3dc8d7f07e7496c0c6702e7e4b1acc179fa94019"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:49 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:09:41 2010 -0400"
      },
      "message": "fanotify: do not dereference inode_mark when it is unset\n\nThe fanotify code is supposed to get the group from the mark.  It accidentally\nonly used the inode_mark.  If the vfsmount_mark was set but not the inode_mark\nit would deref the NULL inode_mark.  Get the group from the correct place.\n\nReported-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2069601b3f0ea38170d4b509b89f3ca0a373bdc1",
      "tree": "647002d4c3814bd3d95d16ef7edef1757de8554f",
      "parents": [
        "ad41a1e0cab07c5125456e8d38e5b1ab148d04aa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 14:23:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 14:23:04 2010 -0700"
      },
      "message": "Revert \"fsnotify: store struct file not struct path\"\n\nThis reverts commit 3bcf3860a4ff9bbc522820b4b765e65e4deceb3e (and the\naccompanying commit c1e5c954020e \"vfs/fsnotify: fsnotify_close can delay\nthe final work in fput\" that was a horribly ugly hack to make it work at\nall).\n\nThe \u0027struct file\u0027 approach not only causes that disgusting hack, it\nsomehow breaks pulseaudio, probably due to some other subtlety with\nf_count handling.\n\nFix up various conflicts due to later fsnotify work.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c8946f509a494769a8c602b5ed189df01917d39",
      "tree": "dfd96bd6ca5ea6803c6d77f65ba37e04f78b2d3b",
      "parents": [
        "5f248c9c251c60af3403902b26e08de43964ea0b",
        "1968f5eed54ce47bde488fd9a450912e4a2d7138"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify: (132 commits)\n  fanotify: use both marks when possible\n  fsnotify: pass both the vfsmount mark and inode mark\n  fsnotify: walk the inode and vfsmount lists simultaneously\n  fsnotify: rework ignored mark flushing\n  fsnotify: remove global fsnotify groups lists\n  fsnotify: remove group-\u003emask\n  fsnotify: remove the global masks\n  fsnotify: cleanup should_send_event\n  fanotify: use the mark in handler functions\n  audit: use the mark in handler functions\n  dnotify: use the mark in handler functions\n  inotify: use the mark in handler functions\n  fsnotify: send fsnotify_mark to groups in event handling functions\n  fsnotify: Exchange list heads instead of moving elements\n  fsnotify: srcu to protect read side of inode and vfsmount locks\n  fsnotify: use an explicit flag to indicate fsnotify_destroy_mark has been called\n  fsnotify: use _rcu functions for mark list traversal\n  fsnotify: place marks on object in order of group memory address\n  vfs/fsnotify: fsnotify_close can delay the final work in fput\n  fsnotify: store struct file not struct path\n  ...\n\nFix up trivial delete/modify conflict in fs/notify/inotify/inotify.c.\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\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": "613a807fe7c793ceb7d6f059773527a5a6c84a96",
      "tree": "d217dbde37c8c0a145c36dea24e7afe5fe5e5ff0",
      "parents": [
        "84a5b68e8da1490906c11129756490a556ae2c19"
      ],
      "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: walk the inode and vfsmount lists simultaneously\n\nWe currently walk the list of marks on an inode followed by the list of\nmarks on the vfsmount.  These are in order (by the memory address of the\ngroup) so lets walk them both together.  Eventually we can pass both the\ninode mark and the vfsmount mark to helpers simultaneously.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "84a5b68e8da1490906c11129756490a556ae2c19",
      "tree": "684be31165523f21dc844a6a56e84e23c04dba61",
      "parents": [
        "02436668d98385f5b5d9ffb695a37dadf98ed8a8"
      ],
      "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: rework ignored mark flushing\n\ncurrently ignored_mark clearing is done in a seperate list traversal\nbefore the actual list traversal to send events.  There is no need for\nthis.  Do them at the same time.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "02436668d98385f5b5d9ffb695a37dadf98ed8a8",
      "tree": "e0e37328a9ba5c0af49903114fffd82f2141180d",
      "parents": [
        "43709a288ed03aa0e2979ab63dd089b3889645c4"
      ],
      "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: remove global fsnotify groups lists\n\nThe global fsnotify groups lists were invented as a way to increase the\nperformance of fsnotify by shortcutting events which were not interesting.\nWith the changes to walk the object lists rather than global groups lists\nthese shortcuts are not useful.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "43709a288ed03aa0e2979ab63dd089b3889645c4",
      "tree": "71717ebf944c099af5ab8ea339889665d4b9ef67",
      "parents": [
        "03930979afa63e079e9aefd4d3dd429240711027"
      ],
      "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: remove group-\u003emask\n\ngroup-\u003emask is now useless.  It was originally a shortcut for fsnotify to\nsave on performance.  These checks are now redundant, so we remove them.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "03930979afa63e079e9aefd4d3dd429240711027",
      "tree": "7df0097a8d51b9f71b4f10a0f49e773fb41d9ba5",
      "parents": [
        "2612abb51b11ffd2d75c472b11178115f5808909"
      ],
      "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: remove the global masks\n\nBecause we walk the object-\u003efsnotify_marks list instead of the global\nfsnotify groups list we don\u0027t need the fsnotify_inode_mask and\nfsnotify_vfsmount_mask as these were simply shortcuts in fsnotify() for\nperformance.  They are now extra checks, rip them out.\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": "0215054f377ce5ac4ffc27b26b13b3f10e6410e6",
      "tree": "a736317ce8ad2aa1d272a482179f8c0ddc062ae7",
      "parents": [
        "4cd76a47924cd966799402d0f2bba356cde5c1b3"
      ],
      "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:53 2010 -0400"
      },
      "message": "fanotify: use the mark in handler functions\n\nfanotify now gets a mark in the should_send_event and handle_event\nfunctions.  Rather than look up the mark themselves fanotify should just use\nthe mark it was handed.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c496313fcc35a41e176e3f19cdda2544ea3a32a6",
      "tree": "442a90a3a2ac7b7106c3e7ba0583735b17f7153d",
      "parents": [
        "7f6b6117e1803777fcf48fe31bd236a7fbf740db"
      ],
      "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:53 2010 -0400"
      },
      "message": "dnotify: use the mark in handler functions\n\ndnotify now gets a mark in the should_send_event and handle_event\nfunctions.  Rather than look up the mark themselves dnotify should just use\nthe mark it was handed.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "7f6b6117e1803777fcf48fe31bd236a7fbf740db",
      "tree": "e86b8bd3a16155447a215a758960092021006311",
      "parents": [
        "3a9b16b407f10b2a771bcae13fb5791e527d6bcf"
      ],
      "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": "inotify: use the mark in handler functions\n\ninotify now gets a mark in the should_send_event and handle_event\nfunctions.  Rather than look up the mark themselves inotify should just use\nthe mark it was handed.\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": "8778abb9a88fc4a74d8776ffaadf7214cf33c61e",
      "tree": "6a32c8b885e68b3d6035887face6a3c5414d609e",
      "parents": [
        "75c1be487a690db43da2c1234fcacd84c982803c"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "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: Exchange list heads instead of moving elements\n\nInstead of moving list elements from destroy_list to \u0026private_destroy_list,\nexchange the list heads.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "75c1be487a690db43da2c1234fcacd84c982803c",
      "tree": "b38ce47f157d3b0eff7ac6eb4756a4b390ac35ae",
      "parents": [
        "700307a29ad61090dcf1d45f8f4a135f5e9211ae"
      ],
      "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: srcu to protect read side of inode and vfsmount locks\n\nCurrently reading the inode-\u003ei_fsnotify_marks or\nvfsmount-\u003emnt_fsnotify_marks lists are protected by a spinlock on both the\nread and the write side.  This patch protects the read side of those lists\nwith a new single srcu.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "700307a29ad61090dcf1d45f8f4a135f5e9211ae",
      "tree": "08b7969486c0039495684a6c13bbac3124a40348",
      "parents": [
        "a4c6e9961fcb9da54648d98978d33c6fdcb7bb45"
      ],
      "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: use an explicit flag to indicate fsnotify_destroy_mark has been called\n\nCurrently fsnotify check is mark-\u003egroup is NULL to decide if\nfsnotify_destroy_mark() has already been called or not.  With the upcoming\nrcu work it is a heck of a lot easier to use an explicit flag than worry\nabout group being set to NULL.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a4c6e9961fcb9da54648d98978d33c6fdcb7bb45",
      "tree": "a109069ccd818ce9fd84f1ef1f0234e8452eb317",
      "parents": [
        "0c6532e4e3b0c8bd18dd0a5cc1894a1944997cc6"
      ],
      "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:51 2010 -0400"
      },
      "message": "fsnotify: use _rcu functions for mark list traversal\n\nIn preparation for srcu locking use all _rcu appropiete functions for mark\nlist addition, removal, and traversal.  The operations are still done under a\nspinlock at the end of this patch.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0c6532e4e3b0c8bd18dd0a5cc1894a1944997cc6",
      "tree": "05e9af0efc8018780a45e0c84d8264ceaf359729",
      "parents": [
        "c1e5c954020e123d30b4abf4038ce501861bcf9f"
      ],
      "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:51 2010 -0400"
      },
      "message": "fsnotify: place marks on object in order of group memory address\n\nfsnotify_marks currently are placed on objects (inodes or vfsmounts) in\narbitrary order.  This patch places them in order of the group memory address.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c1e5c954020e123d30b4abf4038ce501861bcf9f",
      "tree": "e8c9071ae4f37464e114fab79deea4716857f7ad",
      "parents": [
        "3bcf3860a4ff9bbc522820b4b765e65e4deceb3e"
      ],
      "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:51 2010 -0400"
      },
      "message": "vfs/fsnotify: fsnotify_close can delay the final work in fput\n\nfanotify almost works like so:\n\nuser context calls fsnotify_* function with a struct file.\n   fsnotify takes a reference on the struct path\nuser context goes about it\u0027s buissiness\n\nat some later point in time the fsnotify listener gets the struct path\n   fanotify listener calls dentry_open() to create a file which userspace can deal with\n      listener drops the reference on the struct path\nat some later point the listener calls close() on it\u0027s new file\n\nWith the switch from struct path to struct file this presents a problem for\nfput() and fsnotify_close().  fsnotify_close() is called when the filp has\nalready reached 0 and __fput() wants to do it\u0027s cleanup.\n\nThe solution presented here is a bit odd.  If an event is created from a\nstruct file we take a reference on the file.  We check however if the f_count\nwas already 0 and if so we take an EXTRA reference EVEN THOUGH IT WAS ZERO.\nIn __fput() (where we know the f_count hit 0 once) we check if the f_count is\nnon-zero and if so we drop that \u0027extra\u0027 ref and return without destroying the\nfile.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "3bcf3860a4ff9bbc522820b4b765e65e4deceb3e",
      "tree": "1e235af133559062c6fdee840ff9698f1dee26a6",
      "parents": [
        "f70ab54cc6c3907b0727ba332b3976f80f3846d0"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:51 2010 -0400"
      },
      "message": "fsnotify: store struct file not struct path\n\nAl explains that calling dentry_open() with a mnt/dentry pair is only\ngarunteed to be safe if they are already used in an open struct file.  To\nmake sure this is the case don\u0027t store and use a struct path in fsnotify,\nalways use a struct file.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f70ab54cc6c3907b0727ba332b3976f80f3846d0",
      "tree": "2a22097325a668a0d08d4ea3354d0e6c95fddd86",
      "parents": [
        "5ba08e2eeb06355f66ed62ae97bb87d145973a9a"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fsnotify: fsnotify_add_notify_event should return an event\n\nRather than the horrific void ** argument and such just to pass the\nfanotify_merge event back to the caller of fsnotify_add_notify_event() have\nthose things return an event if it was different than the event suggusted to\nbe added.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5ba08e2eeb06355f66ed62ae97bb87d145973a9a",
      "tree": "4d0b26a125c8805234e0ebb58101bf1c5a75e61e",
      "parents": [
        "80af2588676483ac4e998b5092e9d008dab3ab62"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fsnotify: add pr_debug throughout\n\nIt can be hard to debug fsnotify since there are so few printks.  Use\npr_debug to allow for dynamic debugging.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "80af2588676483ac4e998b5092e9d008dab3ab62",
      "tree": "6bff012a185f55b27f601e50b2f2ad53e9fc9f63",
      "parents": [
        "20dee624ca40db227aa70cb3f44d2d6cb4fdbab4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fanotify: groups can specify their f_flags for new fd\n\nCurrently fanotify fds opened for thier listeners are done with f_flags\nequal to O_RDONLY | O_LARGEFILE.  This patch instead takes f_flags from the\nfanotify_init syscall and uses those when opening files in the context of\nthe listener.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "20dee624ca40db227aa70cb3f44d2d6cb4fdbab4",
      "tree": "527888dd4cda99501b7ac16a3783f57251807c13",
      "parents": [
        "44b350fc23e36e95c8e042b7ded66217ea2b9d72"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fsnotify: check to make sure all fsnotify bits are unique\n\nThis patch adds a check to make sure that all fsnotify bits are unique and we\ncannot accidentally use the same bit for 2 different fsnotify event types.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "44b350fc23e36e95c8e042b7ded66217ea2b9d72",
      "tree": "590975f1e8690e5555f7c8b45f26ec7fddccddb8",
      "parents": [
        "f874e1ac21d7708464dc656a10312542c54719f1"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: Fix mask checks\n\nThe mask checks in inotify_update_existing_watch() and\ninotify_new_watch() are useless because inotify_arg_to_mask() sets\nFS_IN_IGNORED and FS_EVENT_ON_CHILD bits anyway.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f874e1ac21d7708464dc656a10312542c54719f1",
      "tree": "be47a1f5333208647e016f1861eaf21fb963478b",
      "parents": [
        "8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: force inotify and fsnotify use same bits\n\ninotify uses bits called IN_* and fsnotify uses bits called FS_*.  These\nneed to line up.  This patch adds build time checks to make sure noone can\nchange these bits so they are not the same.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6",
      "tree": "25fffb46e0b1594aa692ed10e755b6ae041022bc",
      "parents": [
        "611da04f7a31b2208e838be55a42c7a1310ae321"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: allow users to request not to recieve events on unlinked children\n\nAn inotify watch on a directory will send events for children even if those\nchildren have been unlinked.  This patch add a new inotify flag IN_EXCL_UNLINK\nwhich allows a watch to specificy they don\u0027t care about unlinked children.\nThis should fix performance problems seen by tasks which add a watch to\n/tmp and then are overrun with events when other processes are reading and\nwriting to unlinked files they created in /tmp.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d16296\n\nRequested-by: Matthias Clasen \u003cmclasen@redhat.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "611da04f7a31b2208e838be55a42c7a1310ae321",
      "tree": "f72cdd659943dbd92eb401de00bab2b21a1eab67",
      "parents": [
        "ff311008ab8d2f2cfdbbefd407d1b05acc8164b2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: send IN_UNMOUNT events\n\nSince the .31 or so notify rewrite inotify has not sent events about\ninodes which are unmounted.  This patch restores those events.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ff311008ab8d2f2cfdbbefd407d1b05acc8164b2",
      "tree": "f6d21c7c5834cd2f84b4ed1281bbaa057c46187c",
      "parents": [
        "e4e047a22058f48544b16728e0f15a3fc12bb0cf"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:48 2010 -0400"
      },
      "message": "inotify: fix inotify oneshot support\n\nDuring the large inotify rewrite to fsnotify I completely dropped support\nfor IN_ONESHOT.  Reimplement that support.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e4e047a22058f48544b16728e0f15a3fc12bb0cf",
      "tree": "89278b999107ea537ff4d1d6e129035b0edec1ec",
      "parents": [
        "08ae89380a8210a9965d04083e1de78cb8bca4b1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 20 01:36:28 2010 +1000"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:03 2010 -0400"
      },
      "message": "fsnotify: update gfp/slab.h includes\n\nImplicit slab.h inclusion via percpu.h is about to go away.  Make sure\ngfp.h or slab.h is included as necessary.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "08ae89380a8210a9965d04083e1de78cb8bca4b1",
      "tree": "95ef9493b5a6152e7c683d2d5a8531844530f0f7",
      "parents": [
        "269ed32a9ce00132b9372e9c00014532e054d6b2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 27 09:41:40 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:03 2010 -0400"
      },
      "message": "fanotify: drop the useless priority argument\n\nThe priority argument in fanotify is useless.  Kill it.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "269ed32a9ce00132b9372e9c00014532e054d6b2",
      "tree": "8a5870e0ce17d92c9437c3e79c2ff535652b9de2",
      "parents": [
        "0a24887afacefbe2c44e0eee4150b43959a60665"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 27 09:29:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:03 2010 -0400"
      },
      "message": "fanotify: default Kconfig to n\n\nfanotify has default to y in linux-next since it\u0027s inception but default to\nn in the final push to Linus.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0a24887afacefbe2c44e0eee4150b43959a60665",
      "tree": "3d703177948eb345379b93751d343d798c6e33cf",
      "parents": [
        "fb1cfb88c8597d847553f39efc2bbd41c72c5f50"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri May 14 15:35:21 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "inotify_user.c: make local symbol static\n\nThe symbol inotify_max_user_watches is not used outside this\nfile and should be static.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: John McCutchan \u003cjohn@johnmccutchan.com\u003e\nCc: Robert Love \u003crlove@rlove.org\u003e\nCc: Eric Paris \u003ceparis@parisplace.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b31d397e430a90cbe9d3656929a7d5f96e986666",
      "tree": "bafe176811479d922e2f19f4386f34a11a30c39f",
      "parents": [
        "98b5c10d320adfa250c1c18f3ccaec2f78e5e11d"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Apr 21 16:49:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fsnotify: call iput on inodes when no longer marked\n\nfsnotify takes an igrab on an inode when it adds a mark.  The code was\nsupposed to drop the reference when the mark was removed but didn\u0027t.\nThis caused problems when an fs was unmounted because those inodes would\nclearly not be gone.  Thus resulting in the most devistating of messages:\n\nVFS: Busy inodes after unmount of loop0. Self-destruct in 5 seconds.\n\u003e\u003e\u003e Have a nice day...\n\nJiri Slaby bisected the problem to a patch in the fsnotify tree.  The\ncode snippets below show my stupidity quite clearly.\n\nvoid fsnotify_destroy_inode_mark(struct fsnotify_mark *mark)\n{\n\t...\n\tmark-\u003einode \u003d NULL;\n\t...\n}\n\nvoid fsnotify_destroy_mark(struct fsnotify_mark *mark)\n{\n\tstruct inode *inode \u003d NULL;\n\t...\n\tif (mark-\u003eflags \u0026 FSNOTIFY_MARK_FLAG_INODE) {\n\t\tfsnotify_destroy_inode_mark(mark);\n\t\tinode \u003d mark-\u003ei.inode;\n\t}\n\t...\n\tif (inode)\n\t\tiput(inode);\n\t...\n}\n\nObviously the intent was to capture the inode before it was set to NULL in\nfsnotify_destory_inode_mark() so we wouldn\u0027t be leaking inodes forever.\nInstead we leaked them (and exploded on umount)\n\nReported-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "98b5c10d320adfa250c1c18f3ccaec2f78e5e11d",
      "tree": "7ca8ca16bea8b514cd416fddb012108e8b74e83a",
      "parents": [
        "8860f060e473dce1a0873d92105d536f72b05908"
      ],
      "author": {
        "name": "Jean-Christophe Dubois",
        "email": "jcd@tribudubois.net",
        "time": "Tue Mar 23 08:08:09 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: do not always return 0 in fsnotify\n\nIt seems to me you are always returning 0 in fsnotify, when you should return\nthe error (EPERM) returned by fanotify.\n\nSigned-off-by: Jean-Christophe DUBOIS \u003cjcd@tribudubois.net\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8860f060e473dce1a0873d92105d536f72b05908",
      "tree": "38f3d1f49a921ba28fec88d1046acbf2207bd831",
      "parents": [
        "b2d879096ac799722e6017ee82c0586f0d101c9c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Dec 23 00:10:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: do not return 0 in a void function\n\nremove_access_response() is supposed to have a void return, but was\nreturning 0;\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b2d879096ac799722e6017ee82c0586f0d101c9c",
      "tree": "3628e99772d2bf51ce736a775a056bffaae44e8c",
      "parents": [
        "9e66e4233db9c7e31e9ee706be2c9ddd54cf99b3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: userspace interface for permission responses\n\nfanotify groups need to respond to events which include permissions types.\nTo do so groups will send a response using write() on the fanotify_fd they\nhave open.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "9e66e4233db9c7e31e9ee706be2c9ddd54cf99b3",
      "tree": "9d778b358fb6e5f02fb2cf634c2163f34982b7dd",
      "parents": [
        "c4ec54b40d33f8016fea970a383cc584dd0e6019"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: permissions and blocking\n\nThis is the backend work needed for fanotify to support the new\nFS_OPEN_PERM and FS_ACCESS_PERM fsnotify events.  This is done using the\nnew fsnotify secondary queue.  No userspace interface is provided actually\nrespond to or request these events.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c4ec54b40d33f8016fea970a383cc584dd0e6019",
      "tree": "8e8865170cf340d1e79dc379f56417588715b2c8",
      "parents": [
        "d14f1729483fad3a8817fbbcbd017678b7d1ad26"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: new fsnotify hooks and events types for access decisions\n\nintroduce a new fsnotify hook, fsnotify_perm(), which is called from the\nsecurity code.  This hook is used to allow fsnotify groups to make access\ncontrol decisions about events on the system.  We also must change the\ngeneric fsnotify function to return an error code if we intend these hooks\nto be in any way useful.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "59b0df211bd9699d7e0d01fcf9345a149f75b033",
      "tree": "0f6e8bebfa090aa5c1d91d9efc5c2b04aeeed05c",
      "parents": [
        "43ed7e16a8b47059d7f6ff67ba76f383a2421de3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Feb 08 12:53:52 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: use unsigned char * for dentry-\u003ed_name.name\n\nfsnotify was using char * when it passed around the d_name.name string\ninternally but it is actually an unsigned char *.  This patch switches\nfsnotify to use unsigned and should silence some pointer signess warnings\nwhich have popped out of xfs.  I do not add -Wpointer-sign to the fsnotify\ncode as there are still issues with kstrdup and strlen which would pop\nout needless warnings.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "43ed7e16a8b47059d7f6ff67ba76f383a2421de3",
      "tree": "be4efb3c2241572ab3954b86e287c9e7d58a5e7e",
      "parents": [
        "6e5f77b32e9097a8a68a8d453799676cacf70cad"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fanotify: use merge argument to determine actual event added to queue\n\nfanotify needs to know the actual event added to queues so it can be\ncorrectly checked for return values from userspace.  To do this we need to\npass that information from the merger code back to the main even handling\nroutine.  Currently that information is unused, but it will be.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "6e5f77b32e9097a8a68a8d453799676cacf70cad",
      "tree": "2a0211ecd5d79648e74fdf9f851a0669c5e4cc8a",
      "parents": [
        "cb2d429faf2cae62d3c51e28099a181d5fe8c244"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: intoduce a notification merge argument\n\nEach group can define their own notification (and secondary_q) merge\nfunction.  Inotify does tail drop, fanotify does matching and drop which\ncan actually allocate a completely new event.  But for fanotify to properly\ndeal with permissions events it needs to know the new event which was\nultimately added to the notification queue.  This patch just implements a\nvoid ** argument which is passed to the merge function.  fanotify can use\nthis field to pass the new event back to higher layers.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nfor fanotify to properly deal with permissions events\n"
    },
    {
      "commit": "cb2d429faf2cae62d3c51e28099a181d5fe8c244",
      "tree": "401bc8d85e7228f868775269e6d97c3150f9a3a7",
      "parents": [
        "4d92604cc90aa18bbbe0f6e23b7a9fdb612836d3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: add group priorities\n\nThis introduces an ordering to fsnotify groups.  With purely asynchronous\nnotification based \"things\" implementing fsnotify (inotify, dnotify) ordering\nisn\u0027t particularly important.  But if people want to use fsnotify for the\nbasis of sycronous notification or blocking notification ordering becomes\nimportant.\n\neg. A Hierarchical Storage Management listener would need to get its event\nbefore an AV scanner could get its event (since the HSM would need to\nbring the data in for the AV scanner to scan.)  Typically asynchronous notification\nwould want to run after the AV scanner made any relevant access decisions\nso as to not send notification about an event that was denied.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "4d92604cc90aa18bbbe0f6e23b7a9fdb612836d3",
      "tree": "c04b26fb38a8524fa5e204cb9e40870afa9823f9",
      "parents": [
        "c9778a98e7440fb73e0d27b8155a688663a0d493"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fanotify: clear all fanotify marks\n\nfanotify listeners may want to clear all marks.  They may want to do this\nto destroy all of their inode marks which have nothing but ignores.\nRealistically this is useful for av vendors who update policy and want to\nclear all of their cached allows.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c9778a98e7440fb73e0d27b8155a688663a0d493",
      "tree": "838acd5f9438661015c32211d487ef618807a798",
      "parents": [
        "c908370fc1ac27fd7e1fc0f34c693047b26564ce"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fanotify: allow ignored_masks to survive modify\n\nSome users may want to truely ignore an inode even if it has been modified.\nSay you are wanting a mount which contains a log file and you really don\u0027t\nwant any notification about that file.  This patch allows the listener to\ndo that.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c908370fc1ac27fd7e1fc0f34c693047b26564ce",
      "tree": "681cc398050764d04d34652c072790b8c1851d3e",
      "parents": [
        "e898386146deb49a0b45ff1887d9da149c003209"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fsnotify: allow ignored_mask to survive modification\n\nSome inodes a group may want to never hear about a set of events even if\nthe inode is modified.  We add a new mark flag which indicates that these\nmarks should not have their ignored_mask cleared on modification.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    }
  ],
  "next": "e898386146deb49a0b45ff1887d9da149c003209"
}
