)]}'
{
  "log": [
    {
      "commit": "0640113be25d283e0ff77a9f041e1242182387f0",
      "tree": "10607912e3d16e9b0354a8f27c213a250608da8d",
      "parents": [
        "5041caa4d5e6dae418963de0c8f8a83f35e35dcf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 04 11:00:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 04 11:00:45 2012 -0700"
      },
      "message": "vfs: Fix /proc/\u003ctid\u003e/fdinfo/\u003cfd\u003e file handling\n\nCyrill Gorcunov reports that I broke the fdinfo files with commit\n30a08bf2d31d (\"proc: move fd symlink i_mode calculations into\ntid_fd_revalidate()\"), and he\u0027s quite right.\n\nThe tid_fd_revalidate() function is not just used for the \u003ctid\u003e/fd\nsymlinks, it\u0027s also used for the \u003ctid\u003e/fdinfo/\u003cfd\u003e files, and the\npermission model for those are different.\n\nSo do the dynamic symlink permission handling just for symlinks, making\nthe fdinfo files once more appear as the proper regular files they are.\n\nOf course, Al Viro argued (probably correctly) that we shouldn\u0027t do the\nsymlink permission games at all, and make the symlinks always just be\nthe normal \u0027lrwxrwxrwx\u0027.  That would have avoided this issue too, but\nsince somebody noticed that the permissions had changed (which was the\nreason for that original commit 30a08bf2d31d in the first place), people\ndo apparently use this feature.\n\n[ Basically, you can use the symlink permission data as a cheap \"fdinfo\"\n  replacement, since you see whether the file is open for reading and/or\n  writing by just looking at st_mode of the symlink.  So the feature\n  does make sense, even if the pain it has caused means we probably\n  shouldn\u0027t have done it to begin with. ]\n\nReported-and-tested-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b172087f99189416d5f47fd7ab5e6fb762a9ba3",
      "tree": "2619444e8ceee40df80814a1004687ac3d7f1eda",
      "parents": [
        "d97b46a64674a267bc41c9e16132ee2a98c3347d"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Thu May 31 16:26:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:32 2012 -0700"
      },
      "message": "c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat\n\nWe would like to have an ability to restore command line arguments and\nprogram environment pointers but first we need to obtain them somehow.\nThus we put these values into /proc/$pid/stat.  The exit_code is needed to\nrestore zombie tasks.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Vagin \u003cavagin@openvz.org\u003e\nCc: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "818411616baf46ceba0cff6f05af3a9b294734f7",
      "tree": "b6e338e20d4a45b6a05ffa37e6af33e0cc1b50c0",
      "parents": [
        "98ed57eef9f67dfe541be0bca34660ffc88365b2"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Thu May 31 16:26:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:32 2012 -0700"
      },
      "message": "fs, proc: introduce /proc/\u003cpid\u003e/task/\u003ctid\u003e/children entry\n\nWhen we do checkpoint of a task we need to know the list of children the\ntask, has but there is no easy and fast way to generate reverse\nparent-\u003echildren chain from arbitrary \u003cpid\u003e (while a parent pid is\nprovided in \"PPid\" field of /proc/\u003cpid\u003e/status).\n\nSo instead of walking over all pids in the system (creating one big\nprocess tree in memory, just to figure out which children a task has) --\nwe add explicit /proc/\u003cpid\u003e/task/\u003ctid\u003e/children entry, because the kernel\nalready has this kind of information but it is not yet exported.\n\nThis is a first level children, not the whole process tree.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bca15543736f9be6d84e0bbc262ea7069076b9e6",
      "tree": "dbca9451c0478011b51a623b32f3b04305e75212",
      "parents": [
        "b1d4d9e0cbd0aecf40c3572e0c8f98de31b3b328"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu May 31 16:26:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "proc/smaps: show amount of nonlinear ptes in vma\n\nCurrently, nonlinear mappings can not be distinguished from ordinary\nmappings.  This patch adds into /proc/pid/smaps line \"Nonlinear: \u003csize\u003e\nkB\", where size is amount of nonlinear ptes in vma, this line appears only\nif VM_NONLINEAR is set.  This information may be useful not only for\ncheckpoint/restore project.\n\nRequested by Pavel Emelyanov.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1d4d9e0cbd0aecf40c3572e0c8f98de31b3b328",
      "tree": "5b3dca11bdaa14ce3e34e86016f98634d56fef07",
      "parents": [
        "052fb0d635df5d49dfc85687d94e1a87bf09378d"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu May 31 16:26:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "proc/smaps: carefully handle migration entries\n\nCurrently smaps reports migration entries as \"swap\", as result \"swap\" can\nappears in shared mapping.\n\nThis patch converts migration entries into pages and handles them as usual.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "052fb0d635df5d49dfc85687d94e1a87bf09378d",
      "tree": "2cde635970974b44a7363e5e940d38f20de46d39",
      "parents": [
        "715be1fce0d964aca15618b24f6f415f3cbd03c8"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu May 31 16:26:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "proc: report file/anon bit in /proc/pid/pagemap\n\nThis is an implementation of Andrew\u0027s proposal to extend the pagemap file\nbits to report what is missing about tasks\u0027 working set.\n\nThe problem with the working set detection is multilateral.  In the criu\n(checkpoint/restore) project we dump the tasks\u0027 memory into image files\nand to do it properly we need to detect which pages inside mappings are\nreally in use.  The mincore syscall I though could help with this did not.\n First, it doesn\u0027t report swapped pages, thus we cannot find out which\nparts of anonymous mappings to dump.  Next, it does report pages from page\ncache as present even if they are not mapped, and it doesn\u0027t make that has\nnot been cow-ed.\n\nNote, that issue with swap pages is critical -- we must dump swap pages to\nimage file.  But the issues with file pages are optimization -- we can\ntake all file pages to image, this would be correct, but if we know that a\npage is not mapped or not cow-ed, we can remove them from dump file.  The\ndump would still be self-consistent, though significantly smaller in size\n(up to 10 times smaller on real apps).\n\nAndrew noticed, that the proc pagemap file solved 2 of 3 above issues --\nit reports whether a page is present or swapped and it doesn\u0027t report not\nmapped page cache pages.  But, it doesn\u0027t distinguish cow-ed file pages\nfrom not cow-ed.\n\nI would like to make the last unused bit in this file to report whether the\npage mapped into respective pte is PageAnon or not.\n\n[comment stolen from Pavel Emelyanov\u0027s v1 patch]\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "715be1fce0d964aca15618b24f6f415f3cbd03c8",
      "tree": "6bac84d87b61252ce109c361755109a91af009cc",
      "parents": [
        "af5e6171437c9d62d84459b24877c94c23782676"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Thu May 31 16:26:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "procfs: use more apprioriate types when dumping /proc/N/stat\n\n- use int fpr priority and nice, since task_nice()/task_prio() return that\n\n- field 24: get_mm_rss() returns unsigned long\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af5e6171437c9d62d84459b24877c94c23782676",
      "tree": "06ee8cef7f47a0f4facd84f7676c39001965e549",
      "parents": [
        "f05ed3f1abefd37c08fbf08c766d2abd40607777"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu May 31 16:26:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "proc: pass \"fd\" by value in /proc/*/{fd,fdinfo} code\n\nPass \"fd\" directly, not via pointer -- one less memory read.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f05ed3f1abefd37c08fbf08c766d2abd40607777",
      "tree": "f938f73f6f3ee4bab88ada21212371cd023eca63",
      "parents": [
        "2344bec788b097b2d1198758bd29c583812b864e"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu May 31 16:26:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "proc: don\u0027t do dummy rcu_read_lock/rcu_read_unlock on error path\n\nrcu_read_lock()/rcu_read_unlock() is nop for TINY_RCU, but is not a nop\nfor, say, PREEMPT_RCU.\n\nproc_fill_cache() is called without RCU lock, there is no need to\nlock/unlock on error path, simply jump out of the loop.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2344bec788b097b2d1198758bd29c583812b864e",
      "tree": "3ffcf64931b7935ee4e16b81fb6ec6b732436dfa",
      "parents": [
        "e7dcd9990e42ccfc798d4eb55e2dbf9d7d434c6b"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Thu May 31 16:26:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:29 2012 -0700"
      },
      "message": "proc: use mm_access() instead of ptrace_may_access()\n\nmm_access() handles this much better, and avoids some race conditions.\n\nSigned-off-by: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7dcd9990e42ccfc798d4eb55e2dbf9d7d434c6b",
      "tree": "ab9d03a5caa1e3fa5b65a9614f699a05632d33c6",
      "parents": [
        "b409e578d9a4ec95913e06d8fea2a33f1754ea69"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Thu May 31 16:26:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:28 2012 -0700"
      },
      "message": "proc: remove mm_for_maps()\n\nmm_for_maps() is a simple wrapper for mm_access(), and the name is\nmisleading, so just remove it and use mm_access() directly.\n\nSigned-off-by: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b409e578d9a4ec95913e06d8fea2a33f1754ea69",
      "tree": "408c5080300bd44410191e3a60477a6ca713343f",
      "parents": [
        "168eeccbc956d2ec083c3a513f7706784ee0dc5f"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Thu May 31 16:26:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:28 2012 -0700"
      },
      "message": "proc: clean up /proc/\u003cpid\u003e/environ handling\n\nSimilar to e268337dfe26 (\"proc: clean up and fix /proc/\u003cpid\u003e/mem\nhandling\"), move the check of permission to open(), this will simplify\nread() code.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a7f638f999ff42310e9582273b1fe25ea6e469ba",
      "tree": "174dec4d849b78023a23a15d5947cf1d3be9f564",
      "parents": [
        "fe35004fbf9eaf67482b074a2e032abb9c89b1dd"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 29 15:06:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm, oom: normalize oom scores to oom_score_adj scale only for userspace\n\nThe oom_score_adj scale ranges from -1000 to 1000 and represents the\nproportion of memory available to the process at allocation time.  This\nmeans an oom_score_adj value of 300, for example, will bias a process as\nthough it was using an extra 30.0% of available memory and a value of\n-350 will discount 35.0% of available memory from its usage.\n\nThe oom killer badness heuristic also uses this scale to report the oom\nscore for each eligible process in determining the \"best\" process to\nkill.  Thus, it can only differentiate each process\u0027s memory usage by\n0.1% of system RAM.\n\nOn large systems, this can end up being a large amount of memory: 256MB\non 256GB systems, for example.\n\nThis can be fixed by having the badness heuristic to use the actual\nmemory usage in scoring threads and then normalizing it to the\noom_score_adj scale for userspace.  This results in better comparison\nbetween eligible threads for kill and no change from the userspace\nperspective.\n\nSuggested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08fa29d916c6e271ad13978cd993e7238c68db97",
      "tree": "a7f7aa9a3a468cba985e5a26551b504f48e2922e",
      "parents": [
        "4c9c6a1bc869daeb1575442cbf94ba5878c08a67"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Tue May 29 15:06:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:18 2012 -0700"
      },
      "message": "mm: fix NULL ptr deref when walking hugepages\n\nA missing validation of the value returned by find_vma() could cause a\nNULL ptr dereference when walking the pagetable.\n\nThis is triggerable from usermode by a simple user by trying to read a\npage info out of /proc/pid/pagemap which doesn\u0027t exist.\n\nIntroduced by commit 025c5b2451e4 (\"thp: optimize away unnecessary page\ntable locking\").\n\nSigned-off-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nReviewed-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t\t[3.4.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "644473e9c60c1ff4f6351fed637a6e5551e3dce7",
      "tree": "10316518bedc735a2c6552886658d69dfd9f1eb0",
      "parents": [
        "fb827ec68446c83e9e8754fa9b55aed27ecc4661",
        "4b06a81f1daee668fbd6de85557bfb36dd36078f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace enhancements from Eric Biederman:\n \"This is a course correction for the user namespace, so that we can\n  reach an inexpensive, maintainable, and reasonably complete\n  implementation.\n\n  Highlights:\n   - Config guards make it impossible to enable the user namespace and\n     code that has not been converted to be user namespace safe.\n\n   - Use of the new kuid_t type ensures the if you somehow get past the\n     config guards the kernel will encounter type errors if you enable\n     user namespaces and attempt to compile in code whose permission\n     checks have not been updated to be user namespace safe.\n\n   - All uids from child user namespaces are mapped into the initial\n     user namespace before they are processed.  Removing the need to add\n     an additional check to see if the user namespace of the compared\n     uids remains the same.\n\n   - With the user namespaces compiled out the performance is as good or\n     better than it is today.\n\n   - For most operations absolutely nothing changes performance or\n     operationally with the user namespace enabled.\n\n   - The worst case performance I could come up with was timing 1\n     billion cache cold stat operations with the user namespace code\n     enabled.  This went from 156s to 164s on my laptop (or 156ns to\n     164ns per stat operation).\n\n   - (uid_t)-1 and (gid_t)-1 are reserved as an internal error value.\n     Most uid/gid setting system calls treat these value specially\n     anyway so attempting to use -1 as a uid would likely cause\n     entertaining failures in userspace.\n\n   - If setuid is called with a uid that can not be mapped setuid fails.\n     I have looked at sendmail, login, ssh and every other program I\n     could think of that would call setuid and they all check for and\n     handle the case where setuid fails.\n\n   - If stat or a similar system call is called from a context in which\n     we can not map a uid we lie and return overflowuid.  The LFS\n     experience suggests not lying and returning an error code might be\n     better, but the historical precedent with uids is different and I\n     can not think of anything that would break by lying about a uid we\n     can\u0027t map.\n\n   - Capabilities are localized to the current user namespace making it\n     safe to give the initial user in a user namespace all capabilities.\n\n  My git tree covers all of the modifications needed to convert the core\n  kernel and enough changes to make a system bootable to runlevel 1.\"\n\nFix up trivial conflicts due to nearby independent changes in fs/stat.c\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (46 commits)\n  userns:  Silence silly gcc warning.\n  cred: use correct cred accessor with regards to rcu read lock\n  userns: Convert the move_pages, and migrate_pages permission checks to use uid_eq\n  userns: Convert cgroup permission checks to use uid_eq\n  userns: Convert tmpfs to use kuid and kgid where appropriate\n  userns: Convert sysfs to use kgid/kuid where appropriate\n  userns: Convert sysctl permission checks to use kuid and kgids.\n  userns: Convert proc to use kuid/kgid where appropriate\n  userns: Convert ext4 to user kuid/kgid where appropriate\n  userns: Convert ext3 to use kuid/kgid where appropriate\n  userns: Convert ext2 to use kuid/kgid where appropriate.\n  userns: Convert devpts to use kuid/kgid where appropriate\n  userns: Convert binary formats to use kuid/kgid where appropriate\n  userns: Add negative depends on entries to avoid building code that is userns unsafe\n  userns: signal remove unnecessary map_cred_ns\n  userns: Teach inode_capable to understand inodes whose uids map to other namespaces.\n  userns: Fail exec for suid and sgid binaries with ids outside our user namespace.\n  userns: Convert stat to return values mapped from kuids and kgids\n  userns: Convert user specfied uids and gids in chown into kuids and kgid\n  userns: Use uid_eq gid_eq helpers when comparing kuids and kgids in the vfs\n  ...\n"
    },
    {
      "commit": "73f1f5dd3ee3ec6e20768d831d9759b0330fad0e",
      "tree": "22f8498c47467f468dce6c3bca0eb1f3a0c9ade0",
      "parents": [
        "30a08bf2d31d275c6fc71dd1811342777e95c831",
        "93c2d656c7120e29de8df5bc17bb2a97664104e9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 15:56:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 15:56:25 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc fixes from Andrew Morton.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (4 patches)\n  frv: delete incorrect task prototypes causing compile fail\n  slub: missing test for partial pages flush work in flush_all()\n  fs, proc: fix ABBA deadlock in case of execution attempt of map_files/ entries\n  drivers/rtc/rtc-pl031.c: configure correct wday for 2000-01-01\n"
    },
    {
      "commit": "30a08bf2d31d275c6fc71dd1811342777e95c831",
      "tree": "541e4d439b73accdaa48bf48fc77a1915555439b",
      "parents": [
        "3d9944978e0bb6c98b901949cb7a22256e48b23d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 11:32:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 14:06:17 2012 -0700"
      },
      "message": "proc: move fd symlink i_mode calculations into tid_fd_revalidate()\n\nInstead of doing the i_mode calculations at proc_fd_instantiate() time,\nmove them into tid_fd_revalidate(), which is where the other inode state\n(notably uid/gid information) is updated too.\n\nOtherwise we\u0027ll end up with stale i_mode information if an fd is re-used\nwhile the dentry still hangs around.  Not that anything really *cares*\n(symlink permissions don\u0027t really matter), but Tetsuo Handa noticed that\nthe owner read/write bits don\u0027t always match the state of the\nreadability of the file descriptor, and we _used_ to get this right a\nlong time ago in a galaxy far, far away.\n\nBesides, aside from fixing an ugly detail (that has apparently been this\nway since commit 61a28784028e: \"proc: Remove the hard coded inode\nnumbers\" in 2006), this removes more lines of code than it adds.  And it\njust makes sense to update i_mode in the same place we update i_uid/gid.\n\nAl Viro correctly points out that we could just do the inode fill in the\ninode iops -\u003egetattr() function instead.  However, that does require\nsomewhat slightly more invasive changes, and adds yet *another* lookup\nof the file descriptor.  We need to do the revalidate() for other\nreasons anyway, and have the file descriptor handy, so we might as well\nfill in the information at this point.\n\nReported-by: Tetsuo Handa \u003cpenguin-kernel@i-love.sakura.ne.jp\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Eric Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eb94cd96e05d6c65a07937e66a04ea265c1b767d",
      "tree": "0432ec8db57798b5212fa2200fe1293b01bd3361",
      "parents": [
        "c0a5f4a05af588a0f9951f8d24e2564b09501918"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Thu May 17 17:03:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 17 18:00:51 2012 -0700"
      },
      "message": "fs, proc: fix ABBA deadlock in case of execution attempt of map_files/ entries\n\nmap_files/ entries are never supposed to be executed, still curious\nminds might try to run them, which leads to the following deadlock\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  [ INFO: possible circular locking dependency detected ]\n  3.4.0-rc4-24406-g841e6a6 #121 Not tainted\n  -------------------------------------------------------\n  bash/1556 is trying to acquire lock:\n   (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}, at: do_lookup+0x267/0x2b1\n\n  but task is already holding lock:\n   (\u0026sig-\u003ecred_guard_mutex){+.+.+.}, at: prepare_bprm_creds+0x2d/0x69\n\n  which lock already depends on the new lock.\n\n  the existing dependency chain (in reverse order) is:\n\n  -\u003e #1 (\u0026sig-\u003ecred_guard_mutex){+.+.+.}:\n         validate_chain+0x444/0x4f4\n         __lock_acquire+0x387/0x3f8\n         lock_acquire+0x12b/0x158\n         __mutex_lock_common+0x56/0x3a9\n         mutex_lock_killable_nested+0x40/0x45\n         lock_trace+0x24/0x59\n         proc_map_files_lookup+0x5a/0x165\n         __lookup_hash+0x52/0x73\n         do_lookup+0x276/0x2b1\n         walk_component+0x3d/0x114\n         do_last+0xfc/0x540\n         path_openat+0xd3/0x306\n         do_filp_open+0x3d/0x89\n         do_sys_open+0x74/0x106\n         sys_open+0x21/0x23\n         tracesys+0xdd/0xe2\n\n  -\u003e #0 (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}:\n         check_prev_add+0x6a/0x1ef\n         validate_chain+0x444/0x4f4\n         __lock_acquire+0x387/0x3f8\n         lock_acquire+0x12b/0x158\n         __mutex_lock_common+0x56/0x3a9\n         mutex_lock_nested+0x40/0x45\n         do_lookup+0x267/0x2b1\n         walk_component+0x3d/0x114\n         link_path_walk+0x1f9/0x48f\n         path_openat+0xb6/0x306\n         do_filp_open+0x3d/0x89\n         open_exec+0x25/0xa0\n         do_execve_common+0xea/0x2f9\n         do_execve+0x43/0x45\n         sys_execve+0x43/0x5a\n         stub_execve+0x6c/0xc0\n\nThis is because prepare_bprm_creds grabs task-\u003esignal-\u003ecred_guard_mutex\nand when do_lookup happens we try to grab task-\u003esignal-\u003ecred_guard_mutex\nagain in lock_trace.\n\nFix it using plain ptrace_may_access() helper in proc_map_files_lookup()\nand in proc_map_files_readdir() instead of lock_trace(), the caller must\nbe CAP_SYS_ADMIN granted anyway.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "091bd3ea4e7ff4da8509978b9be93dc9d8cf0680",
      "tree": "0f7eb15899232f24bd1432c5893f96c9ade788bc",
      "parents": [
        "dcb0f22282e680ee5202ab7574ce78beb3803a9f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Feb 13 18:02:50 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 15 14:59:28 2012 -0700"
      },
      "message": "userns: Convert sysctl permission checks to use kuid and kgids.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "dcb0f22282e680ee5202ab7574ce78beb3803a9f",
      "tree": "dce64929607bc1cc79b08e9c207c27792988ff39",
      "parents": [
        "08cefc7ab839cf3ece44b8033968a4732eac06d8"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Feb 09 08:48:21 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 15 14:59:28 2012 -0700"
      },
      "message": "userns: Convert proc to use kuid/kgid where appropriate\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "16fbdce62d9c89b794e303f4a232e4749b77e9ac",
      "tree": "b0088af87f70ceeef0fbe55bc2200b4f1b9aa816",
      "parents": [
        "bc46f9375a286d05f84a9464efc2b7f1f5614ff4"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu May 10 13:01:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:06:44 2012 -0700"
      },
      "message": "proc/pid/pagemap: correctly report non-present ptes and holes between vmas\n\nReset the current pagemap-entry if the current pte isn\u0027t present, or if\ncurrent vma is over.  Otherwise pagemap reports last entry again and\nagain.\n\nNon-present pte reporting was broken in commit 092b50bacd1c (\"pagemap:\nintroduce data structure for pagemap entry\")\n\nReporting for holes was broken in commit 5aaabe831eb5 (\"pagemap: avoid\nsplitting thp when reading /proc/pid/pagemap\")\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nReported-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "ae2975bc3476243b45a1e2344236d7920c268f38",
      "tree": "e4b2a8472f6047734b6e7e2bdc994375b2790323",
      "parents": [
        "22d917d80e842829d0ca0a561967d728eb1d6303"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 14 15:56:38 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu May 03 03:27:21 2012 -0700"
      },
      "message": "userns: Convert group_info values from gid_t to kgid_t.\n\nAs a first step to converting struct cred to be all kuid_t and kgid_t\nvalues convert the group values stored in group_info to always be\nkgid_t values.   Unless user namespaces are used this change should\nhave no effect.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "22d917d80e842829d0ca0a561967d728eb1d6303",
      "tree": "b01e0566e136d3004fa9198e4cb1969fc6feff6c",
      "parents": [
        "783291e6900292521a3895583785e0c04a56c5b3"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 17 00:11:58 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Apr 26 02:01:39 2012 -0700"
      },
      "message": "userns: Rework the user_namespace adding uid/gid mapping support\n\n- Convert the old uid mapping functions into compatibility wrappers\n- Add a uid/gid mapping layer from user space uid and gids to kernel\n  internal uids and gids that is extent based for simplicty and speed.\n  * Working with number space after mapping uids/gids into their kernel\n    internal version adds only mapping complexity over what we have today,\n    leaving the kernel code easy to understand and test.\n- Add proc files /proc/self/uid_map /proc/self/gid_map\n  These files display the mapping and allow a mapping to be added\n  if a mapping does not exist.\n- Allow entering the user namespace without a uid or gid mapping.\n  Since we are starting with an existing user our uids and gids\n  still have global mappings so are still valid and useful they just don\u0027t\n  have local mappings.  The requirement for things to work are global uid\n  and gid so it is odd but perfectly fine not to have a local uid\n  and gid mapping.\n  Not requiring global uid and gid mappings greatly simplifies\n  the logic of setting up the uid and gid mappings by allowing\n  the mappings to be set after the namespace is created which makes the\n  slight weirdness worth it.\n- Make the mappings in the initial user namespace to the global\n  uid/gid space explicit.  Today it is an identity mapping\n  but in the future we may want to twist this for debugging, similar\n  to what we do with jiffies.\n- Document the memory ordering requirements of setting the uid and\n  gid mappings.  We only allow the mappings to be set once\n  and there are no pointers involved so the requirments are\n  trivial but a little atypical.\n\nPerformance:\n\nIn this scheme for the permission checks the performance is expected to\nstay the same as the actuall machine instructions should remain the same.\n\nThe worst case I could think of is ls -l on a large directory where\nall of the stat results need to be translated with from kuids and\nkgids to uids and gids.  So I benchmarked that case on my laptop\nwith a dual core hyperthread Intel i5-2520M cpu with 3M of cpu cache.\n\nMy benchmark consisted of going to single user mode where nothing else\nwas running. On an ext4 filesystem opening 1,000,000 files and looping\nthrough all of the files 1000 times and calling fstat on the\nindividuals files.  This was to ensure I was benchmarking stat times\nwhere the inodes were in the kernels cache, but the inode values were\nnot in the processors cache.  My results:\n\nv3.4-rc1:         ~\u003d 156ns (unmodified v3.4-rc1 with user namespace support disabled)\nv3.4-rc1-userns-: ~\u003d 155ns (v3.4-rc1 with my user namespace patches and user namespace support disabled)\nv3.4-rc1-userns+: ~\u003d 164ns (v3.4-rc1 with my user namespace patches and user namespace support enabled)\n\nAll of the configurations ran in roughly 120ns when I performed tests\nthat ran in the cpu cache.\n\nSo in summary the performance impact is:\n1ns improvement in the worst case with user namespace support compiled out.\n8ns aka 5% slowdown in the worst case with user namespace support compiled in.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "63f61a6f4633ff34c17bea7a0ed827eaeb0733e1",
      "tree": "5f8ae725b84635f441485ff6d68d6c105ebb8292",
      "parents": [
        "3f5ec5e06d6ca88168277247dbac0ec7b501600f"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Wed Apr 25 16:01:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:26:34 2012 -0700"
      },
      "message": "revert \"proc: clear_refs: do not clear reserved pages\"\n\nRevert commit 85e72aa5384 (\"proc: clear_refs: do not clear reserved\npages\"), which was a quick fix suitable for -stable until ARM had been\nmoved over to the gate_vma mechanism:\n\nhttps://lkml.org/lkml/2012/1/14/55\n\nWith commit f9d4861f (\"ARM: 7294/1: vectors: use gate_vma for vectors user\nmapping\"), ARM does now use the gate_vma, so the PageReserved check can be\nremoved from the proc code.\n\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nCc: Nicolas Pitre \u003cnico@linaro.org\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ccb1ec95e924a24906ef01ce6d028a8dc13dc87d",
      "tree": "b16a02083ba6843fe3f2513f74a72c95d43ddccb",
      "parents": [
        "4a1d7544fee5e601a4e642ce2720689f90428d65",
        "d48fc63f6f3f485ed5aa9cf019d8e8e3a7d10263"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 15:16:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 15:16:26 2012 -0700"
      },
      "message": "Merge branch \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer fixes from Thomas Gleixner:\n \"The itimer removal one is not strictly a fix, but I really wanted to\n  avoid a rebase of the urgent ones.\"\n\n* \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  Revert \"clocksource: Load the ACPI PM clocksource asynchronously\"\n  clockevents: tTack broadcast device mode change in tick_broadcast_switch_to_oneshot()\n  itimer: Use printk_once instead of WARN_ONCE\n  nohz: Fix stale jiffies update in tick_nohz_restart()\n  tick: Document TICK_ONESHOT config option\n  proc: stats: Use arch_idle_time for idle and iowait times if available\n  itimer: Schedule silent NULL pointer fixup in setitimer() for removal\n"
    },
    {
      "commit": "5d32c88f0b94061b3af2e3ade92422407282eb12",
      "tree": "2e1f81aa47b2cf59625c8fba17199617e33802e6",
      "parents": [
        "43f63c8711ce02226b7bbdafeba7b8031faf3fb4",
        "dac23b0d0513916498d40412818bd2c581b365f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:30:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:30:34 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge batch of fixes from Andrew Morton:\n \"The simple_open() cleanup was held back while I wanted for laggards to\n  merge things.\n\n  I still need to send a few checkpoint/restore patches.  I\u0027ve been\n  wobbly about merging them because I\u0027m wobbly about the overall\n  prospects for success of the project.  But after speaking with Pavel\n  at the LSF conference, it sounds like they\u0027re further toward\n  completion than I feared - apparently davem is at the \"has stopped\n  complaining\" stage regarding the net changes.  So I need to go back\n  and re-review those patchs and their (lengthy) discussion.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (16 patches)\n  memcg swap: use mem_cgroup_uncharge_swap fix\n  backlight: add driver for DA9052/53 PMIC v1\n  C6X: use set_current_blocked() and block_sigmask()\n  MAINTAINERS: add entry for sparse checker\n  MAINTAINERS: fix REMOTEPROC F: typo\n  alpha: use set_current_blocked() and block_sigmask()\n  simple_open: automatically convert to simple_open()\n  scripts/coccinelle/api/simple_open.cocci: semantic patch for simple_open()\n  libfs: add simple_open()\n  hugetlbfs: remove unregister_filesystem() when initializing module\n  drivers/rtc/rtc-88pm860x.c: fix rtc irq enable callback\n  fs/xattr.c:setxattr(): improve handling of allocation failures\n  fs/xattr.c:listxattr(): fall back to vmalloc() if kmalloc() failed\n  fs/xattr.c: suppress page allocation failure warnings from sys_listxattr()\n  sysrq: use SEND_SIG_FORCED instead of force_sig()\n  proc: fix mount -t proc -o AAA\n"
    },
    {
      "commit": "99663be772c827b8f5f594fe87eb4807be1994e5",
      "tree": "f1adffce3f6d10a90f5be8b86b96729ce8c5d23c",
      "parents": [
        "10bdfb5ef7e1a429a3de31e498942a8ae5749a46"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Thu Apr 05 14:25:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:25:50 2012 -0700"
      },
      "message": "proc: fix mount -t proc -o AAA\n\nThe proc_parse_options() call from proc_mount() runs only once at boot\ntime.  So on any later mount attempt, any mount options are ignored\nbecause -\u003es_root is already initialized.\n\nAs a consequence, \"mount -o \u003coptions\u003e\" will ignore the options.  The\nonly way to change mount options is \"mount -o remount,\u003coptions\u003e\".\n\nTo fix this, parse the mount options unconditionally.\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nReported-by: Arkadiusz Miskiewicz \u003ca.miskiewicz@gmail.com\u003e\nTested-by: Arkadiusz Miskiewicz \u003ca.miskiewicz@gmail.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Valdis Kletnieks \u003cValdis.Kletnieks@vt.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb85a6ed67e979c59a29b7b4e8217e755b951cf4",
      "tree": "512614bafe8d0038f38c30282fcf505906ff146d",
      "parents": [
        "aa2bf9bc6414b6972b9e51903c1ce7b1f057aee2"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Mar 30 12:23:08 2012 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 30 15:43:33 2012 +0200"
      },
      "message": "proc: stats: Use arch_idle_time for idle and iowait times if available\n\nGit commit a25cac5198d4ff28 \"proc: Consider NO_HZ when printing idle and\niowait times\" changes the code for /proc/stat to use get_cpu_idle_time_us\nand get_cpu_iowait_time_us if the system is running with nohz enabled.\nFor architectures which define arch_idle_time (currently s390 only)\nthis is a change for the worse. The result of arch_idle_time is supposed\nto be the exact sleep time of the target cpu and should be used instead\nof the value kept by the scheduler.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120330122308.18720283@de.ibm.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a591afc01d9e48affbacb365558a31e53c85af45",
      "tree": "9bb91f4eb94ec69fc4706c4944788ec5f3586063",
      "parents": [
        "820d41cf0cd0e94a5661e093821e2e5c6b36a9d8",
        "31796ac4e8f0e88f5c10f1ad6dab8f19bebe44a4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 18:12:23 2012 -0700"
      },
      "message": "Merge branch \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull x32 support for x86-64 from Ingo Molnar:\n \"This tree introduces the X32 binary format and execution mode for x86:\n  32-bit data space binaries using 64-bit instructions and 64-bit kernel\n  syscalls.\n\n  This allows applications whose working set fits into a 32 bits address\n  space to make use of 64-bit instructions while using a 32-bit address\n  space with shorter pointers, more compressed data structures, etc.\"\n\nFix up trivial context conflicts in arch/x86/{Kconfig,vdso/vma.c}\n\n* \u0027x86-x32-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (71 commits)\n  x32: Fix alignment fail in struct compat_siginfo\n  x32: Fix stupid ia32/x32 inversion in the siginfo format\n  x32: Add ptrace for x32\n  x32: Switch to a 64-bit clock_t\n  x32: Provide separate is_ia32_task() and is_x32_task() predicates\n  x86, mtrr: Use explicit sizing and padding for the 64-bit ioctls\n  x86/x32: Fix the binutils auto-detect\n  x32: Warn and disable rather than error if binutils too old\n  x32: Only clear TIF_X32 flag once\n  x32: Make sure TS_COMPAT is cleared for x32 tasks\n  fs: Remove missed -\u003efds_bits from cessation use of fd_set structs internally\n  fs: Fix close_on_exec pointer in alloc_fdtable\n  x32: Drop non-__vdso weak symbols from the x32 VDSO\n  x32: Fix coding style violations in the x32 VDSO code\n  x32: Add x32 VDSO support\n  x32: Allow x32 to be configured\n  x32: If configured, add x32 system calls to system call tables\n  x32: Handle process creation\n  x32: Signal-related system calls\n  x86: Add #ifdef CONFIG_COMPAT to \u003casm/sys_ia32.h\u003e\n  ...\n"
    },
    {
      "commit": "18a06efae5b37bf5cb7473b5ba91a50907a8f7ac",
      "tree": "4506ce1c713a370af739bec8b890f93ad51a2c84",
      "parents": [
        "0a03726ca982129b1e054f0e8c34ca7eea348acd",
        "10bdfb5ef7e1a429a3de31e498942a8ae5749a46"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:07:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:07:08 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nSingle fix for a commit from the first batch of patches through Andrew.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e:\n  pagemap: remove remaining unneeded spin_lock()\n"
    },
    {
      "commit": "10bdfb5ef7e1a429a3de31e498942a8ae5749a46",
      "tree": "2bda472ac8825a0616ca8632fdc5623f4f8bb0fe",
      "parents": [
        "8da00edc1069f01c34510fa405dc15d96c090a3f"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Thu Mar 29 13:58:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:06:43 2012 -0700"
      },
      "message": "pagemap: remove remaining unneeded spin_lock()\n\nCommit 025c5b2451e4 (\"thp: optimize away unnecessary page table\nlocking\") moves spin_lock() into pmd_trans_huge_lock() in order to avoid\nlocking unless pmd is for thp.  So this spin_lock() is a bug.\n\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "532bfc851a7475fb6a36c1e953aa395798a7cca7",
      "tree": "a7892e5a31330dd59f31959efbe9fda1803784fd",
      "parents": [
        "0195c00244dc2e9f522475868fa278c473ba7339",
        "8da00edc1069f01c34510fa405dc15d96c090a3f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:28 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge third batch of patches from Andrew Morton:\n - Some MM stragglers\n - core SMP library cleanups (on_each_cpu_mask)\n - Some IPI optimisations\n - kexec\n - kdump\n - IPMI\n - the radix-tree iterator work\n - various other misc bits.\n\n \"That\u0027ll do for -rc1.  I still have ~10 patches for 3.4, will send\n  those along when they\u0027ve baked a little more.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (35 commits)\n  backlight: fix typo in tosa_lcd.c\n  crc32: add help text for the algorithm select option\n  mm: move hugepage test examples to tools/testing/selftests/vm\n  mm: move slabinfo.c to tools/vm\n  mm: move page-types.c from Documentation to tools/vm\n  selftests/Makefile: make `run_tests\u0027 depend on `all\u0027\n  selftests: launch individual selftests from the main Makefile\n  radix-tree: use iterators in find_get_pages* functions\n  radix-tree: rewrite gang lookup using iterator\n  radix-tree: introduce bit-optimized iterator\n  fs/proc/namespaces.c: prevent crash when ns_entries[] is empty\n  nbd: rename the nbd_device variable from lo to nbd\n  pidns: add reboot_pid_ns() to handle the reboot syscall\n  sysctl: use bitmap library functions\n  ipmi: use locks on watchdog timeout set on reboot\n  ipmi: simplify locking\n  ipmi: fix message handling during panics\n  ipmi: use a tasklet for handling received messages\n  ipmi: increase KCS timeouts\n  ipmi: decrease the IPMI message transaction time in interrupt mode\n  ...\n"
    },
    {
      "commit": "4c619aa0ba171c092a0ae5d969364deb82dbe371",
      "tree": "bc710f9a419f1f87712f5fa4c341330f7293c3d8",
      "parents": [
        "f4507164e7796b66c371ff9a63154f1c884a2433"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Mar 28 14:42:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:37 2012 -0700"
      },
      "message": "fs/proc/namespaces.c: prevent crash when ns_entries[] is empty\n\nIf CONFIG_NET_NS, CONFIG_UTS_NS and CONFIG_IPC_NS are disabled,\nns_entries[] becomes empty and things like\nns_entries[ARRAY_SIZE(ns_entries) - 1] will explode.\n\nReported-by: Richard Weinberger \u003crichard@nod.at\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45f83cefe3a5f0476ac3f96382ebfdc3fe4caab2",
      "tree": "b2f7d3c02923d89db5a551c6a7923121db9610c4",
      "parents": [
        "623e3db9f9b7d6e7b2a99180f9cf0825c936ab7a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Mar 28 14:42:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm: thp: fix up pmd_trans_unstable() locations\n\npmd_trans_unstable() should be called before pmd_offset_map() in the\nlocations where the mmap_sem is held for reading.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Ulrich Obergfell \u003cuobergfe@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mark Salter \u003cmsalter@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3748b2f15b06ea1861df39d5e9693dcd6e9542b1",
      "tree": "58c6b212487464bbc51fc40dbb783c8c9b8e699e",
      "parents": [
        "529b73fc0a9764050dcc597f4851728e8ff59165"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 28 14:42:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "procfs: fix /proc/statm\n\nbda7bad62bc4 (\"procfs: speed up /proc/pid/stat, statm\") broke /proc/statm\n- \u0027text\u0027 is printed twice by mistake.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReported-by: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0195c00244dc2e9f522475868fa278c473ba7339",
      "tree": "f97ca98ae64ede2c33ad3de05ed7bbfa4f4495ed",
      "parents": [
        "f21ce8f8447c8be8847dadcfdbcc76b0d7365fa5",
        "141124c02059eee9dbc5c86ea797b1ca888e77f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:58:21 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:58:21 2012 -0700"
      },
      "message": "Merge tag \u0027split-asm_system_h-for-linus-20120328\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system\n\nPull \"Disintegrate and delete asm/system.h\" from David Howells:\n \"Here are a bunch of patches to disintegrate asm/system.h into a set of\n  separate bits to relieve the problem of circular inclusion\n  dependencies.\n\n  I\u0027ve built all the working defconfigs from all the arches that I can\n  and made sure that they don\u0027t break.\n\n  The reason for these patches is that I recently encountered a circular\n  dependency problem that came about when I produced some patches to\n  optimise get_order() by rewriting it to use ilog2().\n\n  This uses bitops - and on the SH arch asm/bitops.h drags in\n  asm-generic/get_order.h by a circuituous route involving asm/system.h.\n\n  The main difficulty seems to be asm/system.h.  It holds a number of\n  low level bits with no/few dependencies that are commonly used (eg.\n  memory barriers) and a number of bits with more dependencies that\n  aren\u0027t used in many places (eg.  switch_to()).\n\n  These patches break asm/system.h up into the following core pieces:\n\n    (1) asm/barrier.h\n\n        Move memory barriers here.  This already done for MIPS and Alpha.\n\n    (2) asm/switch_to.h\n\n        Move switch_to() and related stuff here.\n\n    (3) asm/exec.h\n\n        Move arch_align_stack() here.  Other process execution related bits\n        could perhaps go here from asm/processor.h.\n\n    (4) asm/cmpxchg.h\n\n        Move xchg() and cmpxchg() here as they\u0027re full word atomic ops and\n        frequently used by atomic_xchg() and atomic_cmpxchg().\n\n    (5) asm/bug.h\n\n        Move die() and related bits.\n\n    (6) asm/auxvec.h\n\n        Move AT_VECTOR_SIZE_ARCH here.\n\n  Other arch headers are created as needed on a per-arch basis.\"\n\nFixed up some conflicts from other header file cleanups and moving code\naround that has happened in the meantime, so David\u0027s testing is somewhat\nweakened by that.  We\u0027ll find out anything that got broken and fix it..\n\n* tag \u0027split-asm_system_h-for-linus-20120328\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system: (38 commits)\n  Delete all instances of asm/system.h\n  Remove all #inclusions of asm/system.h\n  Add #includes needed to permit the removal of asm/system.h\n  Move all declarations of free_initmem() to linux/mm.h\n  Disintegrate asm/system.h for OpenRISC\n  Split arch_align_stack() out from asm-generic/system.h\n  Split the switch_to() wrapper out of asm-generic/system.h\n  Move the asm-generic/system.h xchg() implementation to asm-generic/cmpxchg.h\n  Create asm-generic/barrier.h\n  Make asm-generic/cmpxchg.h #include asm-generic/cmpxchg-local.h\n  Disintegrate asm/system.h for Xtensa\n  Disintegrate asm/system.h for Unicore32 [based on ver #3, changed by gxt]\n  Disintegrate asm/system.h for Tile\n  Disintegrate asm/system.h for Sparc\n  Disintegrate asm/system.h for SH\n  Disintegrate asm/system.h for Score\n  Disintegrate asm/system.h for S390\n  Disintegrate asm/system.h for PowerPC\n  Disintegrate asm/system.h for PA-RISC\n  Disintegrate asm/system.h for MN10300\n  ...\n"
    },
    {
      "commit": "9ffc93f203c18a70623f21950f1dd473c9ec48cd",
      "tree": "1eb3536ae183b0bfbf7f5152a6fe4f430ae881c2",
      "parents": [
        "96f951edb1f1bdbbc99b0cd458f9808bb83d58ae"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "message": "Remove all #inclusions of asm/system.h\n\nRemove all #inclusions of asm/system.h preparatory to splitting and killing\nit.  Performed with the following command:\n\nperl -p -i -e \u0027s!^#\\s*include\\s*\u003casm/system[.]h\u003e.*\\n!!\u0027 `grep -Irl \u0027^#\\s*include\\s*\u003casm/system[.]h\u003e\u0027 *`\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "f1d38e423a697b7aa06e12d3ca4753bcc1aa3531",
      "tree": "1cbfd86070f724d5ffe53146d4c67edf14cccf98",
      "parents": [
        "dae430c6f6e5d0b98c238c340a41a39e221e8940",
        "4e474a00d7ff746ed177ddae14fa8b2d4bad7a00"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 18:08:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 18:08:58 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl\n\nPull sysctl updates from Eric Biederman:\n\n - Rewrite of sysctl for speed and clarity.\n\n   Insert/remove/Lookup in sysctl are all now O(NlogN) operations, and\n   are no longer bottlenecks in the process of adding and removing\n   network devices.\n\n   sysctl is now focused on being a filesystem instead of system call\n   and the code can all be found in fs/proc/proc_sysctl.c.  Hopefully\n   this means the code is now approachable.\n\n   Much thanks is owed to Lucian Grinjincu for keeping at this until\n   something was found that was usable.\n\n - The recent proc_sys_poll oops found by the fuzzer during hibernation\n   is fixed.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl: (36 commits)\n  sysctl: protect poll() in entries that may go away\n  sysctl: Don\u0027t call sysctl_follow_link unless we are a link.\n  sysctl: Comments to make the code clearer.\n  sysctl: Correct error return from get_subdir\n  sysctl: An easier to read version of find_subdir\n  sysctl: fix memset parameters in setup_sysctl_set()\n  sysctl: remove an unused variable\n  sysctl: Add register_sysctl for normal sysctl users\n  sysctl: Index sysctl directories with rbtrees.\n  sysctl: Make the header lists per directory.\n  sysctl: Move sysctl_check_dups into insert_header\n  sysctl: Modify __register_sysctl_paths to take a set instead of a root and an nsproxy\n  sysctl: Replace root_list with links between sysctl_table_sets.\n  sysctl: Add sysctl_print_dir and use it in get_subdir\n  sysctl: Stop requiring explicit management of sysctl directories\n  sysctl: Add a root pointer to ctl_table_set\n  sysctl: Rewrite proc_sys_readdir in terms of first_entry and next_entry\n  sysctl: Rewrite proc_sys_lookup introducing find_entry and lookup_entry.\n  sysctl: Normalize the root_table data structure.\n  sysctl: Factor out insert_header and erase_header\n  ...\n"
    },
    {
      "commit": "1b26c9b334044cff6d1d2698f2be41bc7d9a0864",
      "tree": "533eb56100209cd0d8ec2c1f3d354af1695226f9",
      "parents": [
        "bda7bad62bc4c4e0783348e8db51abe094153c56"
      ],
      "author": {
        "name": "Pravin B Shelar",
        "email": "pshelar@nicira.com",
        "time": "Fri Mar 23 15:02:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate().\n\nThe namespace cleanup path leaks a dentry which holds a reference count\non a network namespace.  Keeping that network namespace from being freed\nwhen the last user goes away.  Leaving things like vlan devices in the\nleaked network namespace.\n\nIf you use ip netns add for much real work this problem becomes apparent\npretty quickly.  It light testing the problem hides because frequently\nyou simply don\u0027t notice the leak.\n\nUse d_set_d_op() so that DCACHE_OP_* flags are set correctly.\n\nThis issue exists back to 3.0.\n\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nReported-by: Justin Pettit \u003cjpettit@nicira.com\u003e\nSigned-off-by: Pravin B Shelar \u003cpshelar@nicira.com\u003e\nSigned-off-by: Jesse Gross \u003cjesse@nicira.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bda7bad62bc4c4e0783348e8db51abe094153c56",
      "tree": "c62650a3da656ba18aebe170df7d554158ae5fc5",
      "parents": [
        "1ac101a5d675aca2426c5cd460c73fb95acb8391"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Mar 23 15:02:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "procfs: speed up /proc/pid/stat, statm\n\nProcess accounting applications as top, ps visit some files under\n/proc/\u003cpid\u003e.  With seq_put_decimal_ull(), we can optimize /proc/\u003cpid\u003e/stat\nand /proc/\u003cpid\u003e/statm files.\n\nThis patch adds\n  - seq_put_decimal_ll() for signed values.\n  - allow delimiter \u003d\u003d 0.\n  - convert seq_printf() to seq_put_decimal_ull/ll in /proc/stat, statm.\n\nTest result on a system with 2000+ procs.\n\nBefore patch:\n  [kamezawa@bluextal test]$ top -b -n 1 | wc -l\n  2223\n  [kamezawa@bluextal test]$ time top -b -n 1 \u003e /dev/null\n\n  real    0m0.675s\n  user    0m0.044s\n  sys     0m0.121s\n\n  [kamezawa@bluextal test]$ time ps -elf \u003e /dev/null\n\n  real    0m0.236s\n  user    0m0.056s\n  sys     0m0.176s\n\nAfter patch:\n  kamezawa@bluextal ~]$ time top -b -n 1 \u003e /dev/null\n\n  real    0m0.657s\n  user    0m0.052s\n  sys     0m0.100s\n\n  [kamezawa@bluextal ~]$ time ps -elf \u003e /dev/null\n\n  real    0m0.198s\n  user    0m0.050s\n  sys     0m0.145s\n\nConsidering top, ps tend to scan /proc periodically, this will reduce cpu\nconsumption by top/ps to some extent.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ac101a5d675aca2426c5cd460c73fb95acb8391",
      "tree": "5d993fde0c5e67de97c0d9ffac54163f06fc90c9",
      "parents": [
        "59a32e2ce5eb809967cac4e718bc527beca83c59"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Mar 23 15:02:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "procfs: add num_to_str() to speed up /proc/stat\n\n\u003d\u003d stat_check.py\nnum \u003d 0\nwith open(\"/proc/stat\") as f:\n        while num \u003c 1000 :\n                data \u003d f.read()\n                f.seek(0, 0)\n                num \u003d num + 1\n\u003d\u003d\n\nperf shows\n\n    20.39%  stat_check.py  [kernel.kallsyms]    [k] format_decode\n    13.41%  stat_check.py  [kernel.kallsyms]    [k] number\n    12.61%  stat_check.py  [kernel.kallsyms]    [k] vsnprintf\n    10.85%  stat_check.py  [kernel.kallsyms]    [k] memcpy\n     4.85%  stat_check.py  [kernel.kallsyms]    [k] radix_tree_lookup\n     4.43%  stat_check.py  [kernel.kallsyms]    [k] seq_printf\n\nThis patch removes most of calls to vsnprintf() by adding num_to_str()\nand seq_print_decimal_ull(), which prints decimal numbers without rich\nfunctions provided by printf().\n\nOn my 8cpu box.\n\u003d\u003d Before patch \u003d\u003d\n[root@bluextal test]# time ./stat_check.py\n\nreal    0m0.150s\nuser    0m0.026s\nsys     0m0.121s\n\n\u003d\u003d After patch \u003d\u003d\n[root@bluextal test]# time ./stat_check.py\n\nreal    0m0.055s\nuser    0m0.022s\nsys     0m0.030s\n\n[akpm@linux-foundation.org: remove incorrect comment, use less statck in num_to_str(), move comment from .h to .c, simplify seq_put_decimal_ull()]\n[andrea@betterlinux.com: avoid breaking the ABI in /proc/stat]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrea Righi \u003candrea@betterlinux.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59a32e2ce5eb809967cac4e718bc527beca83c59",
      "tree": "3024b71063f497c138680c36c5f7ce2dee563680",
      "parents": [
        "b908243c549448fc0662f9cdd8d5cfe620fcdc31"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Fri Mar 23 15:02:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "proc: speed up /proc/stat handling\n\nOn a typical 16 cpus machine, \"cat /proc/stat\" gives more than 4096 bytes,\nand is slow :\n\n  # strace -T -o /tmp/STRACE cat /proc/stat | wc -c\n  5826\n  # grep \"cpu \" /tmp/STRACE\n  read(0, \"cpu  1949310 19 2144714 12117253\"..., 32768) \u003d 5826 \u003c0.001504\u003e\n\nThats partly because show_stat() must be called twice since initial\nbuffer size is too small (4096 bytes for less than 32 possible cpus)\n\nFix this by :\n\n 1) Taking into account nr_irqs in the initial buffer sizing.\n\n 2) Using ksize() to allow better filling of initial buffer.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Russell King - ARM Linux \u003clinux@arm.linux.org.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b908243c549448fc0662f9cdd8d5cfe620fcdc31",
      "tree": "fe3ba53fb4b1f37048ba986080623af0365eb6e5",
      "parents": [
        "accb61fe7bb0f5c2a4102239e4981650f9048519"
      ],
      "author": {
        "name": "Djalal Harouni",
        "email": "tixxdz@opendz.org",
        "time": "Fri Mar 23 15:02:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "fs/proc/kcore.c: make get_sparsemem_vmemmap_info() static\n\nget_sparsemem_vmemmap_info() is only used inside fs/proc/kcore.c\n\nSigned-off-by: Djalal Harouni \u003ctixxdz@opendz.org\u003e\nReviewed-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e474a00d7ff746ed177ddae14fa8b2d4bad7a00",
      "tree": "1255e88406191e4daa29e59ebd37fdc8042184e4",
      "parents": [
        "4e75732035d7e97e001bdf6e3149d3967c0221de"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 22 14:42:22 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Mar 22 14:46:56 2012 -0700"
      },
      "message": "sysctl: protect poll() in entries that may go away\n\nProtect code accessing ctl_table by grabbing the header with grab_header()\nand after releasing with sysctl_head_finish().  This is needed if poll()\nis called in entries created by modules: currently only hostname and\ndomainname support poll(), but this bug may be triggered when/if modules\nuse it and if user called poll() in a file that doesn\u0027t support it.\n\nDave Jones reported the following when using a syscall fuzzer while\nhibernating/resuming:\n\nRIP: 0010:[\u003cffffffff81233e3e\u003e]  [\u003cffffffff81233e3e\u003e] proc_sys_poll+0x4e/0x90\nRAX: 0000000000000145 RBX: ffff88020cab6940 RCX: 0000000000000000\nRDX: ffffffff81233df0 RSI: 6b6b6b6b6b6b6b6b RDI: ffff88020cab6940\n[ ... ]\nCode: 00 48 89 fb 48 89 f1 48 8b 40 30 4c 8b 60 e8 b8 45 01 00 00 49 83\n7c 24 28 00 74 2e 49 8b 74 24 30 48 85 f6 74 24 48 85 c9 75 32 \u003c8b\u003e 16\nb8 45 01 00 00 48 63 d2 49 39 d5 74 10 8b 06 48 98 48 89\n\nIf an entry goes away while we are polling() it, ctl_table may not exist\nanymore.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "95211279c5ad00a317c98221d7e4365e02f20836",
      "tree": "2ddc8625378d2915b8c96392f3cf6663b705ed55",
      "parents": [
        "5375871d432ae9fc581014ac117b96aaee3cd0c7",
        "12724850e8064f64b6223d26d78c0597c742c65a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge first batch of patches from Andrew Morton:\n \"A few misc things and all the MM queue\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (92 commits)\n  memcg: avoid THP split in task migration\n  thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE\n  memcg: clean up existing move charge code\n  mm/memcontrol.c: remove unnecessary \u0027break\u0027 in mem_cgroup_read()\n  mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()\n  mm/memcontrol.c: s/stealed/stolen/\n  memcg: fix performance of mem_cgroup_begin_update_page_stat()\n  memcg: remove PCG_FILE_MAPPED\n  memcg: use new logic for page stat accounting\n  memcg: remove PCG_MOVE_LOCK flag from page_cgroup\n  memcg: simplify move_account() check\n  memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)\n  memcg: kill dead prev_priority stubs\n  memcg: remove PCG_CACHE page_cgroup flag\n  memcg: let css_get_next() rely upon rcu_read_lock()\n  cgroup: revert ss_id_lock to spinlock\n  idr: make idr_get_next() good for rcu_read_lock()\n  memcg: remove unnecessary thp check in page stat accounting\n  memcg: remove redundant returns\n  memcg: enum lru_list lru\n  ...\n"
    },
    {
      "commit": "5375871d432ae9fc581014ac117b96aaee3cd0c7",
      "tree": "be98e8255b0f927fb920fb532a598b93fa140dbe",
      "parents": [
        "b57cb7231b2ce52d3dda14a7b417ae125fb2eb97",
        "dfbc2d75c1bd47c3186fa91f1655ea2f3825b0ec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 18:55:10 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 18:55:10 2012 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc\n\nPull powerpc merge from Benjamin Herrenschmidt:\n \"Here\u0027s the powerpc batch for this merge window.  It is going to be a\n  bit more nasty than usual as in touching things outside of\n  arch/powerpc mostly due to the big iSeriesectomy :-) We finally got\n  rid of the bugger (legacy iSeries support) which was a PITA to\n  maintain and that nobody really used anymore.\n\n  Here are some of the highlights:\n\n   - Legacy iSeries is gone.  Thanks Stephen ! There\u0027s still some bits\n     and pieces remaining if you do a grep -ir series arch/powerpc but\n     they are harmless and will be removed in the next few weeks\n     hopefully.\n\n   - The \u0027fadump\u0027 functionality (Firmware Assisted Dump) replaces the\n     previous (equivalent) \"pHyp assisted dump\"...  it\u0027s a rewrite of a\n     mechanism to get the hypervisor to do crash dumps on pSeries, the\n     new implementation hopefully being much more reliable.  Thanks\n     Mahesh Salgaonkar.\n\n   - The \"EEH\" code (pSeries PCI error handling \u0026 recovery) got a big\n     spring cleaning, motivated by the need to be able to implement a\n     new backend for it on top of some new different type of firwmare.\n\n     The work isn\u0027t complete yet, but a good chunk of the cleanups is\n     there.  Note that this adds a field to struct device_node which is\n     not very nice and which Grant objects to.  I will have a patch soon\n     that moves that to a powerpc private data structure (hopefully\n     before rc1) and we\u0027ll improve things further later on (hopefully\n     getting rid of the need for that pointer completely).  Thanks Gavin\n     Shan.\n\n   - I dug into our exception \u0026 interrupt handling code to improve the\n     way we do lazy interrupt handling (and make it work properly with\n     \"edge\" triggered interrupt sources), and while at it found \u0026 fixed\n     a wagon of issues in those areas, including adding support for page\n     fault retry \u0026 fatal signals on page faults.\n\n   - Your usual random batch of small fixes \u0026 updates, including a bunch\n     of new embedded boards, both Freescale and APM based ones, etc...\"\n\nI fixed up some conflicts with the generalized irq-domain changes from\nGrant Likely, hopefully correctly.\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (141 commits)\n  powerpc/ps3: Do not adjust the wrapper load address\n  powerpc: Remove the rest of the legacy iSeries include files\n  powerpc: Remove the remaining CONFIG_PPC_ISERIES pieces\n  init: Remove CONFIG_PPC_ISERIES\n  powerpc: Remove FW_FEATURE ISERIES from arch code\n  tty/hvc_vio: FW_FEATURE_ISERIES is no longer selectable\n  powerpc/spufs: Fix double unlocks\n  powerpc/5200: convert mpc5200 to use of_platform_populate()\n  powerpc/mpc5200: add options to mpc5200_defconfig\n  powerpc/mpc52xx: add a4m072 board support\n  powerpc/mpc5200: update mpc5200_defconfig to fit for charon board\n  Documentation/powerpc/mpc52xx.txt: Checkpatch cleanup\n  powerpc/44x: Add additional device support for APM821xx SoC and Bluestone board\n  powerpc/44x: Add support PCI-E for APM821xx SoC and Bluestone board\n  MAINTAINERS: Update PowerPC 4xx tree\n  powerpc/44x: The bug fixed support for APM821xx SoC and Bluestone board\n  powerpc: document the FSL MPIC message register binding\n  powerpc: add support for MPIC message register API\n  powerpc/fsl: Added aliased MSIIR register address to MSI node in dts\n  powerpc/85xx: mpc8548cds - add 36-bit dts\n  ...\n"
    },
    {
      "commit": "b76437579d1344b612cf1851ae610c636cec7db0",
      "tree": "37c31c957f1159635258168e27e49b90347e37aa",
      "parents": [
        "9e81130b7ce23050335b1197bb51743517b5b9d0"
      ],
      "author": {
        "name": "Siddhesh Poyarekar",
        "email": "siddhesh.poyarekar@gmail.com",
        "time": "Wed Mar 21 16:34:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "procfs: mark thread stack correctly in proc/\u003cpid\u003e/maps\n\nStack for a new thread is mapped by userspace code and passed via\nsys_clone.  This memory is currently seen as anonymous in\n/proc/\u003cpid\u003e/maps, which makes it difficult to ascertain which mappings\nare being used for thread stacks.  This patch uses the individual task\nstack pointers to determine which vmas are actually thread stacks.\n\nFor a multithreaded program like the following:\n\n\t#include \u003cpthread.h\u003e\n\n\tvoid *thread_main(void *foo)\n\t{\n\t\twhile(1);\n\t}\n\n\tint main()\n\t{\n\t\tpthread_t t;\n\t\tpthread_create(\u0026t, NULL, thread_main, NULL);\n\t\tpthread_join(t, NULL);\n\t}\n\nproc/PID/maps looks like the following:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nHere, one could guess that 7f8a44492000-7f8a44c92000 is a stack since\nthe earlier vma that has no permissions (7f8a44e3d000-7f8a4503d000) but\nthat is not always a reliable way to find out which vma is a thread\nstack.  Also, /proc/PID/maps and /proc/PID/task/TID/maps has the same\ncontent.\n\nWith this patch in place, /proc/PID/task/TID/maps are treated as \u0027maps\nas the task would see it\u0027 and hence, only the vma that that task uses as\nstack is marked as [stack].  All other \u0027stack\u0027 vmas are marked as\nanonymous memory.  /proc/PID/maps acts as a thread group level view,\nwhere all thread stack vmas are marked as [stack:TID] where TID is the\nprocess ID of the task that uses that vma as stack, while the process\nstack is marked as [stack].\n\nSo /proc/PID/maps will look like this:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack:1442]\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nThus marking all vmas that are used as stacks by the threads in the\nthread group along with the process stack.  The task level maps will\nhowever like this:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack]\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nwhere only the vma that is being used as a stack by *that* task is\nmarked as [stack].\n\nAnalogous changes have been made to /proc/PID/smaps,\n/proc/PID/numa_maps, /proc/PID/task/TID/smaps and\n/proc/PID/task/TID/numa_maps. Relevant snippets from smaps and\nnuma_maps:\n\n    [siddhesh@localhost ~ ]$ pgrep a.out\n    1441\n    [siddhesh@localhost ~ ]$ cat /proc/1441/smaps | grep \"\\[stack\"\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack:1442]\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1442/smaps | grep \"\\[stack\"\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1441/smaps | grep \"\\[stack\"\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/numa_maps | grep \"stack\"\n    7f8a44492000 default stack:1442 anon\u003d2 dirty\u003d2 N0\u003d2\n    7fff6273a000 default stack anon\u003d3 dirty\u003d3 N0\u003d3\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1442/numa_maps | grep \"stack\"\n    7f8a44492000 default stack anon\u003d2 dirty\u003d2 N0\u003d2\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1441/numa_maps | grep \"stack\"\n    7fff6273a000 default stack anon\u003d3 dirty\u003d3 N0\u003d3\n\n[akpm@linux-foundation.org: checkpatch fixes]\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Siddhesh Poyarekar \u003csiddhesh.poyarekar@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jamie Lokier \u003cjamie@shareable.org\u003e\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "092b50bacd1cdbffef2643b7a46f2a215407919c",
      "tree": "a2501b424d37c3757e9369ac36231874756bf990",
      "parents": [
        "807f0ccfe15551afd514c062585045c88ca62037"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:33:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "pagemap: introduce data structure for pagemap entry\n\nCurrently a local variable of pagemap entry in pagemap_pte_range() is\nnamed pfn and typed with u64, but it\u0027s not correct (pfn should be unsigned\nlong.)\n\nThis patch introduces special type for pagemap entries and replaces code\nwith it.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e873c49fbfdd595481976b915850e682441bcbec",
      "tree": "87ad5d125563d1eb6418e1f7b5a094fab6098108",
      "parents": [
        "025c5b2451e42c9e8dfdecd6dc84956ce8f321b5"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:33:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "pagemap: export KPF_THP\n\nThis flag shows that a given page is a subpage of a transparent hugepage.\nIt helps us debug and test the kernel by showing physical address of thp.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "025c5b2451e42c9e8dfdecd6dc84956ce8f321b5",
      "tree": "423b4ef1a0ce021360304a80f6e0ba902581a3ad",
      "parents": [
        "5aaabe831eb527e0d9284f0745d830a755f70393"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:33:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "thp: optimize away unnecessary page table locking\n\nCurrently when we check if we can handle thp as it is or we need to split\nit into regular sized pages, we hold page table lock prior to check\nwhether a given pmd is mapping thp or not.  Because of this, when it\u0027s not\n\"huge pmd\" we suffer from unnecessary lock/unlock overhead.  To remove it,\nthis patch introduces a optimized check function and replace several\nsimilar logics with it.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5aaabe831eb527e0d9284f0745d830a755f70393",
      "tree": "2efdfe775da1c727c60ef5bd2d865d2150f68381",
      "parents": [
        "b716ad953a2bc4a543143c1d9836b7007a4b182f"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:33:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "pagemap: avoid splitting thp when reading /proc/pid/pagemap\n\nThp split is not necessary if we explicitly check whether pmds are mapping\nthps or not.  This patch introduces this check and adds code to generate\npagemap entries for pmds mapping thps, which results in less performance\nimpact of pagemap on thp.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nReviewed-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a5a9906d4e8d1976b701f889d8f35d54b928f25",
      "tree": "e51912e725f224663a738045a4d0528d08da4572",
      "parents": [
        "31f6765266417c0d99f0e922fe82848a7c9c2ae9"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Mar 21 16:33:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:54 2012 -0700"
      },
      "message": "mm: thp: fix pmd_bad() triggering in code paths holding mmap_sem read mode\n\nIn some cases it may happen that pmd_none_or_clear_bad() is called with\nthe mmap_sem hold in read mode.  In those cases the huge page faults can\nallocate hugepmds under pmd_none_or_clear_bad() and that can trigger a\nfalse positive from pmd_bad() that will not like to see a pmd\nmaterializing as trans huge.\n\nIt\u0027s not khugepaged causing the problem, khugepaged holds the mmap_sem\nin write mode (and all those sites must hold the mmap_sem in read mode\nto prevent pagetables to go away from under them, during code review it\nseems vm86 mode on 32bit kernels requires that too unless it\u0027s\nrestricted to 1 thread per process or UP builds).  The race is only with\nthe huge pagefaults that can convert a pmd_none() into a\npmd_trans_huge().\n\nEffectively all these pmd_none_or_clear_bad() sites running with\nmmap_sem in read mode are somewhat speculative with the page faults, and\nthe result is always undefined when they run simultaneously.  This is\nprobably why it wasn\u0027t common to run into this.  For example if the\nmadvise(MADV_DONTNEED) runs zap_page_range() shortly before the page\nfault, the hugepage will not be zapped, if the page fault runs first it\nwill be zapped.\n\nAltering pmd_bad() not to error out if it finds hugepmds won\u0027t be enough\nto fix this, because zap_pmd_range would then proceed to call\nzap_pte_range (which would be incorrect if the pmd become a\npmd_trans_huge()).\n\nThe simplest way to fix this is to read the pmd in the local stack\n(regardless of what we read, no need of actual CPU barriers, only\ncompiler barrier needed), and be sure it is not changing under the code\nthat computes its value.  Even if the real pmd is changing under the\nvalue we hold on the stack, we don\u0027t care.  If we actually end up in\nzap_pte_range it means the pmd was not none already and it was not huge,\nand it can\u0027t become huge from under us (khugepaged locking explained\nabove).\n\nAll we need is to enforce that there is no way anymore that in a code\npath like below, pmd_trans_huge can be false, but pmd_none_or_clear_bad\ncan run into a hugepmd.  The overhead of a barrier() is just a compiler\ntweak and should not be measurable (I only added it for THP builds).  I\ndon\u0027t exclude different compiler versions may have prevented the race\ntoo by caching the value of *pmd on the stack (that hasn\u0027t been\nverified, but it wouldn\u0027t be impossible considering\npmd_none_or_clear_bad, pmd_bad, pmd_trans_huge, pmd_none are all inlines\nand there\u0027s no external function called in between pmd_trans_huge and\npmd_none_or_clear_bad).\n\n\t\tif (pmd_trans_huge(*pmd)) {\n\t\t\tif (next-addr !\u003d HPAGE_PMD_SIZE) {\n\t\t\t\tVM_BUG_ON(!rwsem_is_locked(\u0026tlb-\u003emm-\u003emmap_sem));\n\t\t\t\tsplit_huge_page_pmd(vma-\u003evm_mm, pmd);\n\t\t\t} else if (zap_huge_pmd(tlb, vma, pmd, addr))\n\t\t\t\tcontinue;\n\t\t\t/* fall through */\n\t\t}\n\t\tif (pmd_none_or_clear_bad(pmd))\n\nBecause this race condition could be exercised without special\nprivileges this was reported in CVE-2012-1179.\n\nThe race was identified and fully explained by Ulrich who debugged it.\nI\u0027m quoting his accurate explanation below, for reference.\n\n\u003d\u003d\u003d\u003d\u003d\u003d start quote \u003d\u003d\u003d\u003d\u003d\u003d\u003d\n      mapcount 0 page_mapcount 1\n      kernel BUG at mm/huge_memory.c:1384!\n\n    At some point prior to the panic, a \"bad pmd ...\" message similar to the\n    following is logged on the console:\n\n      mm/memory.c:145: bad pmd ffff8800376e1f98(80000000314000e7).\n\n    The \"bad pmd ...\" message is logged by pmd_clear_bad() before it clears\n    the page\u0027s PMD table entry.\n\n        143 void pmd_clear_bad(pmd_t *pmd)\n        144 {\n    -\u003e  145         pmd_ERROR(*pmd);\n        146         pmd_clear(pmd);\n        147 }\n\n    After the PMD table entry has been cleared, there is an inconsistency\n    between the actual number of PMD table entries that are mapping the page\n    and the page\u0027s map count (_mapcount field in struct page). When the page\n    is subsequently reclaimed, __split_huge_page() detects this inconsistency.\n\n       1381         if (mapcount !\u003d page_mapcount(page))\n       1382                 printk(KERN_ERR \"mapcount %d page_mapcount %d\\n\",\n       1383                        mapcount, page_mapcount(page));\n    -\u003e 1384         BUG_ON(mapcount !\u003d page_mapcount(page));\n\n    The root cause of the problem is a race of two threads in a multithreaded\n    process. Thread B incurs a page fault on a virtual address that has never\n    been accessed (PMD entry is zero) while Thread A is executing an madvise()\n    system call on a virtual address within the same 2 MB (huge page) range.\n\n               virtual address space\n              .---------------------.\n              |                     |\n              |                     |\n            .-|---------------------|\n            | |                     |\n            | |                     |\u003c-- B(fault)\n            | |                     |\n      2 MB  | |/////////////////////|-.\n      huge \u003c  |/////////////////////|  \u003e A(range)\n      page  | |/////////////////////|-\u0027\n            | |                     |\n            | |                     |\n            \u0027-|---------------------|\n              |                     |\n              |                     |\n              \u0027---------------------\u0027\n\n    - Thread A is executing an madvise(..., MADV_DONTNEED) system call\n      on the virtual address range \"A(range)\" shown in the picture.\n\n    sys_madvise\n      // Acquire the semaphore in shared mode.\n      down_read(\u0026current-\u003emm-\u003emmap_sem)\n      ...\n      madvise_vma\n        switch (behavior)\n        case MADV_DONTNEED:\n             madvise_dontneed\n               zap_page_range\n                 unmap_vmas\n                   unmap_page_range\n                     zap_pud_range\n                       zap_pmd_range\n                         //\n                         // Assume that this huge page has never been accessed.\n                         // I.e. content of the PMD entry is zero (not mapped).\n                         //\n                         if (pmd_trans_huge(*pmd)) {\n                             // We don\u0027t get here due to the above assumption.\n                         }\n                         //\n                         // Assume that Thread B incurred a page fault and\n             .---------\u003e // sneaks in here as shown below.\n             |           //\n             |           if (pmd_none_or_clear_bad(pmd))\n             |               {\n             |                 if (unlikely(pmd_bad(*pmd)))\n             |                     pmd_clear_bad\n             |                     {\n             |                       pmd_ERROR\n             |                         // Log \"bad pmd ...\" message here.\n             |                       pmd_clear\n             |                         // Clear the page\u0027s PMD entry.\n             |                         // Thread B incremented the map count\n             |                         // in page_add_new_anon_rmap(), but\n             |                         // now the page is no longer mapped\n             |                         // by a PMD entry (-\u003e inconsistency).\n             |                     }\n             |               }\n             |\n             v\n    - Thread B is handling a page fault on virtual address \"B(fault)\" shown\n      in the picture.\n\n    ...\n    do_page_fault\n      __do_page_fault\n        // Acquire the semaphore in shared mode.\n        down_read_trylock(\u0026mm-\u003emmap_sem)\n        ...\n        handle_mm_fault\n          if (pmd_none(*pmd) \u0026\u0026 transparent_hugepage_enabled(vma))\n              // We get here due to the above assumption (PMD entry is zero).\n              do_huge_pmd_anonymous_page\n                alloc_hugepage_vma\n                  // Allocate a new transparent huge page here.\n                ...\n                __do_huge_pmd_anonymous_page\n                  ...\n                  spin_lock(\u0026mm-\u003epage_table_lock)\n                  ...\n                  page_add_new_anon_rmap\n                    // Here we increment the page\u0027s map count (starts at -1).\n                    atomic_set(\u0026page-\u003e_mapcount, 0)\n                  set_pmd_at\n                    // Here we set the page\u0027s PMD entry which will be cleared\n                    // when Thread A calls pmd_clear_bad().\n                  ...\n                  spin_unlock(\u0026mm-\u003epage_table_lock)\n\n    The mmap_sem does not prevent the race because both threads are acquiring\n    it in shared mode (down_read).  Thread B holds the page_table_lock while\n    the page\u0027s map count and PMD table entry are updated.  However, Thread A\n    does not synchronize on that lock.\n\n\u003d\u003d\u003d\u003d\u003d\u003d end quote \u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n[akpm@linux-foundation.org: checkpatch fixes]\nReported-by: Ulrich Obergfell \u003cuobergfe@redhat.com\u003e\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nAcked-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t\t[2.6.38+]\nCc: Mark Salter \u003cmsalter@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2a0883e4071237d09b604a342c28b96b44a04b3",
      "tree": "aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd",
      "parents": [
        "3a990a52f9f25f45469e272017a31e7a3fda60ed",
        "07c0c5d8b8c122b2f2df9ee574ac3083daefc981"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 1 from Al Viro:\n \"This is _not_ all; in particular, Miklos\u0027 and Jan\u0027s stuff is not there\n  yet.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)\n  ext4: initialization of ext4_li_mtx needs to be done earlier\n  debugfs-related mode_t whack-a-mole\n  hfsplus: add an ioctl to bless files\n  hfsplus: change finder_info to u32\n  hfsplus: initialise userflags\n  qnx4: new helper - try_extent()\n  qnx4: get rid of qnx4_bread/qnx4_getblk\n  take removal of PF_FORKNOEXEC to flush_old_exec()\n  trim includes in inode.c\n  um: uml_dup_mmap() relies on -\u003emmap_sem being held, but activate_mm() doesn\u0027t hold it\n  um: embed -\u003estub_pages[] into mmu_context\n  gadgetfs: list_for_each_safe() misuse\n  ocfs2: fix leaks on failure exits in module_init\n  ecryptfs: make register_filesystem() the last potential failure exit\n  ntfs: forgets to unregister sysctls on register_filesystem() failure\n  logfs: missing cleanup on register_filesystem() failure\n  jfs: mising cleanup on register_filesystem() failure\n  make configfs_pin_fs() return root dentry on success\n  configfs: configfs_create_dir() has parent dentry in dentry-\u003ed_parent\n  configfs: sanitize configfs_create()\n  ...\n"
    },
    {
      "commit": "3556485f1595e3964ba539e39ea682acbb835cee",
      "tree": "7f5ee254f425b1427ac0059b5f347a307f8538a1",
      "parents": [
        "b8716614a7cc2fc15ea2a518edd04755fb08d922",
        "09f61cdbb32a9d812c618d3922db533542736bb0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:25:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:25:04 2012 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security\n\nPull security subsystem updates for 3.4 from James Morris:\n \"The main addition here is the new Yama security module from Kees Cook,\n  which was discussed at the Linux Security Summit last year.  Its\n  purpose is to collect miscellaneous DAC security enhancements in one\n  place.  This also marks a departure in policy for LSM modules, which\n  were previously limited to being standalone access control systems.\n  Chromium OS is using Yama, and I believe there are plans for Ubuntu,\n  at least.\n\n  This patchset also includes maintenance updates for AppArmor, TOMOYO\n  and others.\"\n\nFix trivial conflict in \u003cnet/sock.h\u003e due to the jumo_label-\u003estatic_key\nrename.\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (38 commits)\n  AppArmor: Fix location of const qualifier on generated string tables\n  TOMOYO: Return error if fails to delete a domain\n  AppArmor: add const qualifiers to string arrays\n  AppArmor: Add ability to load extended policy\n  TOMOYO: Return appropriate value to poll().\n  AppArmor: Move path failure information into aa_get_name and rename\n  AppArmor: Update dfa matching routines.\n  AppArmor: Minor cleanup of d_namespace_path to consolidate error handling\n  AppArmor: Retrieve the dentry_path for error reporting when path lookup fails\n  AppArmor: Add const qualifiers to generated string tables\n  AppArmor: Fix oops in policy unpack auditing\n  AppArmor: Fix error returned when a path lookup is disconnected\n  KEYS: testing wrong bit for KEY_FLAG_REVOKED\n  TOMOYO: Fix mount flags checking order.\n  security: fix ima kconfig warning\n  AppArmor: Fix the error case for chroot relative path name lookup\n  AppArmor: fix mapping of META_READ to audit and quiet flags\n  AppArmor: Fix underflow in xindex calculation\n  AppArmor: Fix dropping of allowed operations that are force audited\n  AppArmor: Add mising end of structure test to caps unpacking\n  ...\n"
    },
    {
      "commit": "69a7aebcf019ab3ff5764525ad6858fbe23bb86d",
      "tree": "7211df5704b743a7667159748c670a9744164482",
      "parents": [
        "d464c92b5234227c1698862a1906827e2e398ae0",
        "f1f996b66cc3908a8f5ffccc2ff41840e92f3b10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial tree from Jiri Kosina:\n \"It\u0027s indeed trivial -- mostly documentation updates and a bunch of\n  typo fixes from Masanari.\n\n  There are also several linux/version.h include removals from Jesper.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (101 commits)\n  kcore: fix spelling in read_kcore() comment\n  constify struct pci_dev * in obvious cases\n  Revert \"char: Fix typo in viotape.c\"\n  init: fix wording error in mm_init comment\n  usb: gadget: Kconfig: fix typo for \u0027different\u0027\n  Revert \"power, max8998: Include linux/module.h just once in drivers/power/max8998_charger.c\"\n  writeback: fix fn name in writeback_inodes_sb_nr_if_idle() comment header\n  writeback: fix typo in the writeback_control comment\n  Documentation: Fix multiple typo in Documentation\n  tpm_tis: fix tis_lock with respect to RCU\n  Revert \"media: Fix typo in mixer_drv.c and hdmi_drv.c\"\n  Doc: Update numastat.txt\n  qla4xxx: Add missing spaces to error messages\n  compiler.h: Fix typo\n  security: struct security_operations kerneldoc fix\n  Documentation: broken URL in libata.tmpl\n  Documentation: broken URL in filesystems.tmpl\n  mtd: simplify return logic in do_map_probe()\n  mm: fix comment typo of truncate_inode_pages_range\n  power: bq27x00: Fix typos in comment\n  ...\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f",
      "tree": "e4ede05b2253e6bc333b007b2550bd9503e0a98f",
      "parents": [
        "be0d93f0aa5682a24a2a9ec0dd26fffaad608cce"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Feb 12 21:56:08 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:34 2012 -0400"
      },
      "message": "procfs: clean proc_fill_super() up\n\nFirst of all, there\u0027s no need to zero -\u003ei_uid/-\u003ei_gid on root inode -\nboth had been set to zero already.  Moreover, let\u0027s take the iput()\non failure to the failure exit it belongs to...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f1f996b66cc3908a8f5ffccc2ff41840e92f3b10",
      "tree": "771783d6ae60b1570c1b05d21491a8d74cef2c44",
      "parents": [
        "bf362f750bea1372aff3b5c405b50560a1b28981"
      ],
      "author": {
        "name": "Laura Vasilescu",
        "email": "laura@rosedu.org",
        "time": "Mon Mar 19 15:41:15 2012 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Mar 20 12:24:10 2012 +0100"
      },
      "message": "kcore: fix spelling in read_kcore() comment\n\nSigned-off-by: Laura Vasilescu \u003claura@rosedu.org\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "2e5b5b3a1b7768c89fbfeca18e75f8ee377e924c",
      "tree": "0d6d589e42b7e88464d5edcfa818b3a7e27a93e8",
      "parents": [
        "367456c756a6b84f493ca9cc5b17b1f5d38ef466"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Thu Feb 23 17:41:27 2012 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 02 12:23:49 2012 +0100"
      },
      "message": "sched: Clean up parameter passing of proc_sched_autogroup_set_nice()\n\nPass nice as a value to proc_sched_autogroup_set_nice().\n\nNo side effect is expected, and the variable err will be overwritten with\nthe return value.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/4F45FBB7.5090607@ct.jp.nec.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "162573937679ff36c9acd54268c047199dab564e",
      "tree": "ba6910592cb36ccb30f7612cdeee3f0af9cba036",
      "parents": [
        "d34c5f26cf7de52a72ee064698817a5a39b91767"
      ],
      "author": {
        "name": "Mahesh Salgaonkar",
        "email": "mahesh@linux.vnet.ibm.com",
        "time": "Thu Feb 16 01:15:00 2012 +0000"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Feb 23 10:50:02 2012 +1100"
      },
      "message": "fadump: Introduce cleanup routine to invalidate /proc/vmcore.\n\nWith the firmware-assisted dump support we don\u0027t require a reboot when we\nare in second kernel after crash. The second kernel after crash is a normal\nkernel boot and has knowledge about entire system RAM with the page tables\ninitialized for entire system RAM. Hence once the dump is saved to disk, we\ncan just release the reserved memory area for general use and continue\nwith second kernel as production kernel.\n\nHence when we release the reserved memory that contains dump data, the\n\u0027/proc/vmcore\u0027 will not be valid anymore. Hence this patch introduces\na cleanup routine that invalidates and removes the /proc/vmcore file. This\nroutine will be invoked before we release the reserved dump memory area.\n\nSigned-off-by: Mahesh Salgaonkar \u003cmahesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "1dce27c5aa6770e9d195f2bb7db1db3d4dde5591",
      "tree": "4ad3ffeee95cb5b10e047b7cb9bdbb48cfc734e0",
      "parents": [
        "8b3d1cda4f5ff0d7c2ae910ea8fd03493996912f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 16 17:49:42 2012 +0000"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Sun Feb 19 10:30:52 2012 -0800"
      },
      "message": "Wrap accesses to the fd_sets in struct fdtable\n\nWrap accesses to the fd_sets in struct fdtable (for recording open files and\nclose-on-exec flags) so that we can move away from using fd_sets since we\nabuse the fd_set structs by not allocating the full-sized structure under\nnormal circumstances and by non-core code looking at the internals of the\nfd_sets.\n\nThe first abuse means that use of FD_ZERO() on these fd_sets is not permitted,\nsince that cannot be told about their abnormal lengths.\n\nThis introduces six wrapper functions for setting, clearing and testing\nclose-on-exec flags and fd-is-open flags:\n\n\tvoid __set_close_on_exec(int fd, struct fdtable *fdt);\n\tvoid __clear_close_on_exec(int fd, struct fdtable *fdt);\n\tbool close_on_exec(int fd, const struct fdtable *fdt);\n\tvoid __set_open_fd(int fd, struct fdtable *fdt);\n\tvoid __clear_open_fd(int fd, struct fdtable *fdt);\n\tbool fd_is_open(int fd, const struct fdtable *fdt);\n\nNote that I\u0027ve prepended \u0027__\u0027 to the names of the set/clear functions because\nthey require the caller to hold a lock to use them.\n\nNote also that I haven\u0027t added wrappers for looking behind the scenes at the\nthe array.  Possibly that should exist too.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120216174942.23314.1364.stgit@warthog.procyon.org.uk\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4040153087478993cbf0809f444400a3c808074c",
      "tree": "2dc7af85b0cf930f1656553bd38410b8c16601a6",
      "parents": [
        "191c542442fdf53cc3c496c00be13367fd9cd42d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Mon Feb 13 03:58:52 2012 +0000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Feb 14 10:45:42 2012 +1100"
      },
      "message": "security: trim security.h\n\nTrim security.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "8cdb878dcb359fd1137e9abdee9322f5e9bcfdf8",
      "tree": "146afc01f3c1d7cbc944328484d077032bc53bfd",
      "parents": [
        "24b36da33c64368775f4ef9386d44dce1d2bc8cf"
      ],
      "author": {
        "name": "Christopher Yeoh",
        "email": "cyeoh@au1.ibm.com",
        "time": "Thu Feb 02 11:34:09 2012 +1030"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 02 12:55:17 2012 -0800"
      },
      "message": "Fix race in process_vm_rw_core\n\nThis fixes the race in process_vm_core found by Oleg (see\n\n  http://article.gmane.org/gmane.linux.kernel/1235667/\n\nfor details).\n\nThis has been updated since I last sent it as the creation of the new\nmm_access() function did almost exactly the same thing as parts of the\nprevious version of this patch did.\n\nIn order to use mm_access() even when /proc isn\u0027t enabled, we move it to\nkernel/fork.c where other related process mm access functions already\nare.\n\nSigned-off-by: Chris Yeoh \u003cyeohc@au1.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e75732035d7e97e001bdf6e3149d3967c0221de",
      "tree": "7b67c8208479ac7bde5f87d81fb0b44cb1cbfb3b",
      "parents": [
        "60f126d93b210ae708e2a5bb4a3be2121831f2a0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 30 21:24:59 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 01 19:21:38 2012 -0800"
      },
      "message": "sysctl: Don\u0027t call sysctl_follow_link unless we are a link.\n\nThere are no functional changes.  Just code motion to make it\nclear that we don\u0027t follow a link between sysctl roots unless the\ndirectory entry actually is a link.\n\nSuggested-by:  Lucian Adrian Grijincu \u003clucian.grijincu@gmail.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "60f126d93b210ae708e2a5bb4a3be2121831f2a0",
      "tree": "1ebdf75d1a8bca0122b6dcb34a7efae2a1839919",
      "parents": [
        "0eb97f38d2bfaea289b44c5140a7b04e7b369bad"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 30 21:23:52 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 01 19:20:57 2012 -0800"
      },
      "message": "sysctl: Comments to make the code clearer.\n\nDocument get_subdir and that find_subdir alwasy takes a reference.\n\nSuggested-by:  Lucian Adrian Grijincu \u003clucian.grijincu@gmail.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "0eb97f38d2bfaea289b44c5140a7b04e7b369bad",
      "tree": "e9d0d1ae9ec236f32da3642723111c86c80d530a",
      "parents": [
        "51f72f4a0f92e4abde33a8bca0fac9667575d035"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 30 20:37:51 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 01 19:20:40 2012 -0800"
      },
      "message": "sysctl: Correct error return from get_subdir\n\nWhen insert_header fails ensure we return the proper error value\nfrom get_subdir.  In practice nothing cares, but there is no\nneed to be sloppy.\n\nReported-by: Lucian Adrian Grijincu \u003clucian.grijincu@gmail.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "51f72f4a0f92e4abde33a8bca0fac9667575d035",
      "tree": "dfa47c429fb4848ee949ea884e86caea05ded162",
      "parents": [
        "1347440db6f76ec5ae0af8d8558387f571a5e1dd"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 30 20:09:33 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 01 19:20:30 2012 -0800"
      },
      "message": "sysctl: An easier to read version of find_subdir\n\nSuggested-by:  Lucian Adrian Grijincu \u003clucian.grijincu@gmail.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "6d08f2c7139790c268820a2e590795cb8333181a",
      "tree": "78b2773b8ca6949f9561af641908e4086ba193cb",
      "parents": [
        "572d34b946bae070debd42db1143034d9687e13f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jan 31 17:15:11 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 01 14:39:01 2012 -0800"
      },
      "message": "proc: make sure mem_open() doesn\u0027t pin the target\u0027s memory\n\nOnce /proc/pid/mem is opened, the memory can\u0027t be released until\nmem_release() even if its owner exits.\n\nChange mem_open() to do atomic_inc(mm_count) + mmput(), this only\npins mm_struct. Change mem_rw() to do atomic_inc_not_zero(mm_count)\nbefore access_remote_vm(), this verifies that this mm is still alive.\n\nI am not sure what should mem_rw() return if atomic_inc_not_zero()\nfails. With this patch it returns zero to match the \"mm \u003d\u003d NULL\" case,\nmay be it should return -EINVAL like it did before e268337d.\n\nPerhaps it makes sense to add the additional fatal_signal_pending()\ncheck into the main loop, to ensure we do not hold this memory if\nthe target task was oom-killed.\n\nCc: stable@kernel.org\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "572d34b946bae070debd42db1143034d9687e13f",
      "tree": "b913d612090e8ec25e92451120ef64692c802264",
      "parents": [
        "71879d3cb3dd8f2dfdefb252775c1b3ea04a3dd4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jan 31 17:14:54 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 01 14:39:01 2012 -0800"
      },
      "message": "proc: unify mem_read() and mem_write()\n\nNo functional changes, cleanup and preparation.\n\nmem_read() and mem_write() are very similar. Move this code into the\nnew common helper, mem_rw(), which takes the additional \"int write\"\nargument.\n\nCc: stable@kernel.org\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71879d3cb3dd8f2dfdefb252775c1b3ea04a3dd4",
      "tree": "befc1bd5504c6d97a24a2d519de19eaa3af0906f",
      "parents": [
        "879a5a001b62a020e074d460b3a7c0fd993f9832"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jan 31 17:14:38 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 01 14:39:01 2012 -0800"
      },
      "message": "proc: mem_release() should check mm !\u003d NULL\n\nmem_release() can hit mm \u003d\u003d NULL, add the necessary check.\n\nCc: stable@kernel.org\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1347440db6f76ec5ae0af8d8558387f571a5e1dd",
      "tree": "0e22a9e3bc3cd480842a8797d55ba542b676ace2",
      "parents": [
        "47981787092aecb87dc3cb2d478455dcfb77516a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Mon Jan 30 16:40:29 2012 +0300"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 30 19:14:08 2012 -0800"
      },
      "message": "sysctl: fix memset parameters in setup_sysctl_set()\n\nThe current code is a nop.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "47981787092aecb87dc3cb2d478455dcfb77516a",
      "tree": "92c303f6dce927f7f585193ecfd9c23396587a0d",
      "parents": [
        "fea478d4101a4285aa25c5bafaaf4cec35026fe0"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Mon Jan 30 16:39:59 2012 +0300"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 30 19:13:46 2012 -0800"
      },
      "message": "sysctl: remove an unused variable\n\n\"links\" is never used, so we can remove it.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "fea478d4101a4285aa25c5bafaaf4cec35026fe0",
      "tree": "7435c6571c49ddd131f0d7f2799ca5817d2eec6f",
      "parents": [
        "ac13ac6f4c6c0504d2c927862216f4e422a2c0b5"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Jan 20 21:47:03 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:30 2012 -0800"
      },
      "message": "sysctl: Add register_sysctl for normal sysctl users\n\nThe plan is to convert all callers of register_sysctl_table\nand register_sysctl_paths to register_sysctl.  The interface\nto register_sysctl is enough nicer this should make the callers\na bit more readable.  Additionally after the conversion the\n230 lines of backwards compatibility can be removed.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ac13ac6f4c6c0504d2c927862216f4e422a2c0b5",
      "tree": "87d0d698e79b911428b8f8e2f357a27f74c854f9",
      "parents": [
        "9e3d47df35abd6430fed04fb40a76c7358b1e815"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 09 17:24:30 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:30 2012 -0800"
      },
      "message": "sysctl: Index sysctl directories with rbtrees.\n\nOne of the most important jobs of sysctl is to export network stack\ntunables.  Several of those tunables are per network device.  In\nseveral instances people are running with 1000+ network devices in\nthere network stacks, which makes the simple per directory linked list\nin sysctl a scaling bottleneck.   Replace O(N^2) sysctl insertion and\nlookup times with O(NlogN) by using an rbtree to index the sysctl\ndirectories.\n\nBenchmark before:\n    make-dummies 0 999 -\u003e 0.32s\n    rmmod dummy        -\u003e 0.12s\n    make-dummies 0 9999 -\u003e 1m17s\n    rmmod dummy         -\u003e 17s\n\nBenchmark after:\n    make-dummies 0 999 -\u003e 0.074s\n    rmmod dummy        -\u003e 0.070s\n    make-dummies 0 9999 -\u003e 3.4s\n    rmmod dummy         -\u003e 0.44s\n\nBenchmark after (without dev_snmp6):\n    make-dummies 0 9999 -\u003e 0.75s\n    rmmod dummy         -\u003e 0.44s\n    make-dummies 0 99999 -\u003e 11s\n    rmmod dummy          -\u003e 4.3s\n\nAt 10,000 dummy devices the bottleneck becomes the time to add and\nremove the files under /proc/sys/net/dev_snmp6.  I have commented\nout the code that adds and removes files under /proc/sys/net/dev_snmp6\nand taken measurments of creating and destroying 100,000 dummies to\nverify the sysctl continues to scale.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "9e3d47df35abd6430fed04fb40a76c7358b1e815",
      "tree": "8c7fe500d2cefdf99b1128e60178045a39f1a864",
      "parents": [
        "e54012cede6749528899f66a72312522a179d427"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 07 23:45:12 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:30 2012 -0800"
      },
      "message": "sysctl: Make the header lists per directory.\n\nSlightly enhance efficiency and clarity of the code by making the\nheader list per directory instead of per set.\n\nBenchmark before:\n    make-dummies 0 999 -\u003e 0.63s\n    rmmod dummy        -\u003e 0.12s\n    make-dummies 0 9999 -\u003e 2m35s\n    rmmod dummy         -\u003e 18s\n\nBenchmark after:\n    make-dummies 0 999 -\u003e 0.32s\n    rmmod dummy        -\u003e 0.12s\n    make-dummies 0 9999 -\u003e 1m17s\n    rmmod dummy         -\u003e 17s\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "e54012cede6749528899f66a72312522a179d427",
      "tree": "13fe8f0b968da3fcb349e2867d80dfd2e3f5ef9d",
      "parents": [
        "60a47a2e823cbe6b609346bffff61a00c0c76470"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Jan 18 22:57:15 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:30 2012 -0800"
      },
      "message": "sysctl: Move sysctl_check_dups into insert_header\n\nSimplify the callers of insert_header by removing explicit calls to check\nfor duplicates and instead have insert_header do the work.\n\nThis makes the code slightly more maintainable by enabling changes to\ndata structures where the insertion of new entries without duplicate\nsuppression is not possible.\n\nThere is not always a convenient path string where insert_header\nis called so modify sysctl_check_dups to use sysctl_print_dir\nwhen printing the full path when a duplicate is discovered.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "60a47a2e823cbe6b609346bffff61a00c0c76470",
      "tree": "b19ac63068757893d6f110cf31d27fb59942d005",
      "parents": [
        "0e47c99d7fe25e0f3907d9f3401079169d904891"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jan 08 00:02:37 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:30 2012 -0800"
      },
      "message": "sysctl: Modify __register_sysctl_paths to take a set instead of a root and an nsproxy\n\nAn nsproxy argument here has always been awkard and now the nsproxy argument\nis completely unnecessary so remove it, replacing it with the set we want\nthe registered tables to show up in.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "0e47c99d7fe25e0f3907d9f3401079169d904891",
      "tree": "b8d8e5b1d7d7ba00431d3e476f72644b374b9010",
      "parents": [
        "6980128fe1b834c92a85e556ca8198030f0d8d01"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 07 23:24:30 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:29 2012 -0800"
      },
      "message": "sysctl: Replace root_list with links between sysctl_table_sets.\n\nPiecing together directories by looking first in one directory\ntree, than in another directory tree and finally in a third\ndirectory tree makes it hard to verify that some directory\nentries are not multiply defined and makes it hard to create\nefficient implementations the sysctl filesystem.\n\nReplace the sysctl wide list of roots with autogenerated\nlinks from the core sysctl directory tree to the other\nsysctl directory trees.\n\nThis simplifies sysctl directory reading and lookups as now\nonly entries in a single sysctl directory tree need to be\nconsidered.\n\nBenchmark before:\n    make-dummies 0 999 -\u003e 0.44s\n    rmmod dummy        -\u003e 0.065s\n    make-dummies 0 9999 -\u003e 1m36s\n    rmmod dummy         -\u003e 0.4s\n\nBenchmark after:\n    make-dummies 0 999 -\u003e 0.63s\n    rmmod dummy        -\u003e 0.12s\n    make-dummies 0 9999 -\u003e 2m35s\n    rmmod dummy         -\u003e 18s\n\nThe slowdown is caused by the lookups used in insert_headers\nand put_links to see if we need to add links or remove links.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "6980128fe1b834c92a85e556ca8198030f0d8d01",
      "tree": "2814b1771a8e70538215ea47e104e2ab89ba4048",
      "parents": [
        "7ec66d06362da7684a4948c4c2bf1f8546425df4"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 21 20:09:45 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:29 2012 -0800"
      },
      "message": "sysctl: Add sysctl_print_dir and use it in get_subdir\n\nWhen there are errors it is very nice to know the full sysctl path.\nAdd a simple function that computes the sysctl path and prints it\nout.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "7ec66d06362da7684a4948c4c2bf1f8546425df4",
      "tree": "a16212ae2d23a46890c6d89068eaa9b2eb0f6e37",
      "parents": [
        "9eb47c26f09e27506d343ef52e634b2a50ee21ef"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Dec 29 08:24:29 2011 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:29 2012 -0800"
      },
      "message": "sysctl: Stop requiring explicit management of sysctl directories\n\nSimplify the code and the sysctl semantics by autogenerating\nsysctl directories when a sysctl table is registered that needs\nthe directories and autodeleting the directories when there are\nno more sysctl tables registered that need them.\n\nAutogenerating directories keeps sysctl tables from depending\non each other, removing all of the arcane register/unregister\nordering constraints and makes it impossible to get the order\nwrong when reigsering and unregistering sysctl tables.\n\nAutogenerating directories yields one unique entity that dentries\ncan point to, retaining the current effective use of the dcache.\n\nAdd struct ctl_dir as the type of these new autogenerated\ndirectories.\n\nThe attached_by and attached_to fields in ctl_table_header are\nremoved as they are no longer needed.\n\nThe child field in ctl_table is no longer needed by the core of\nthe sysctl code.  ctl_table.child can be removed once all of the\nexisting users have been updated.\n\nBenchmark before:\n    make-dummies 0 999 -\u003e 0.7s\n    rmmod dummy        -\u003e 0.07s\n    make-dummies 0 9999 -\u003e 1m10s\n    rmmod dummy         -\u003e 0.4s\n\nBenchmark after:\n    make-dummies 0 999 -\u003e 0.44s\n    rmmod dummy        -\u003e 0.065s\n    make-dummies 0 9999 -\u003e 1m36s\n    rmmod dummy         -\u003e 0.4s\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "9eb47c26f09e27506d343ef52e634b2a50ee21ef",
      "tree": "6055ec285771cf35c233d63c783b5c8381847094",
      "parents": [
        "6a75ce167c53b41f15088d3c2c7e51c89dc8798a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jan 22 21:26:00 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:29 2012 -0800"
      },
      "message": "sysctl: Add a root pointer to ctl_table_set\n\nAdd a ctl_table_root pointer to ctl_table set so it is easy to\ngo from a ctl_table_set to a ctl_table_root.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "6a75ce167c53b41f15088d3c2c7e51c89dc8798a",
      "tree": "78c811b59a0ca61ac3b34118a726c0c6554bd68e",
      "parents": [
        "076c3eed2c31773200b082568957fd8852ae93d7"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Jan 18 03:15:51 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:29 2012 -0800"
      },
      "message": "sysctl: Rewrite proc_sys_readdir in terms of first_entry and next_entry\n\nReplace sysctl_head_next with first_entry and next_entry.  These new\niterators operate at the level of sysctl table entries and filter\nout any sysctl tables that should not be shown.\n\nUtilizing two specialized functions instead of a single function removes\nconditionals for handling awkward special cases that only come up\nat the beginning of iteration, making the iterators easier to read\nand understand.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "076c3eed2c31773200b082568957fd8852ae93d7",
      "tree": "76ddb1483d7a4a04d7910810e8f1dda7be43bf5a",
      "parents": [
        "a194558e8698621a9ce7f2c6a720123e644af131"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 09 21:42:02 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:29 2012 -0800"
      },
      "message": "sysctl: Rewrite proc_sys_lookup introducing find_entry and lookup_entry.\n\nReplace the helpers that proc_sys_lookup uses with helpers that work\nin terms of an entire sysctl directory.  This is worse for sysctl_lock\nhold times but it is much better for code clarity and the code cleanups\nto come.\n\nfind_in_table is no longer needed so it is removed.\n\nfind_entry a general helper to find entries in a directory is added.\n\nlookup_entry is a simple wrapper around find_entry that takes the\nsysctl_lock increases the use count if an entry is found and drops\nthe sysctl_lock.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "a194558e8698621a9ce7f2c6a720123e644af131",
      "tree": "7f58d41bf0be3a992b0dd6ae41be97d9964bb809",
      "parents": [
        "8425d6aaf0704b98480131ed339c208ffce12e44"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 21 17:51:48 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:28 2012 -0800"
      },
      "message": "sysctl: Normalize the root_table data structure.\n\nEvery other directory has a .child member and we look at the .child\nfor our entries.  Do the same for the root_table.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "8425d6aaf0704b98480131ed339c208ffce12e44",
      "tree": "e4bd69b641dc9fa5677b2b7d78ca9319cd979edc",
      "parents": [
        "e0d045290a8454ecd7f63c78c10d412f35d6ef94"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 09 17:35:01 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:28 2012 -0800"
      },
      "message": "sysctl: Factor out insert_header and erase_header\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "e0d045290a8454ecd7f63c78c10d412f35d6ef94",
      "tree": "cadffb5cfbb130c2bcb6fc694f28a39d9b613170",
      "parents": [
        "938aaa4f9249aa1519fd0db07fc72125de2df338"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 09 22:36:41 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:28 2012 -0800"
      },
      "message": "sysctl: Factor out init_header from __register_sysctl_paths\n\nFactor out a routing to initialize the sysctl_table_header.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "938aaa4f9249aa1519fd0db07fc72125de2df338",
      "tree": "fd248564e8988e95966cd425f3f96ce7d094ae1c",
      "parents": [
        "3cc3e04636d603778d921854b84ae7bd34a349a2"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 09 17:24:30 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:28 2012 -0800"
      },
      "message": "sysctl: Initial support for auto-unregistering sysctl tables.\n\nAdd nreg to ctl_table_header.  When nreg drops to 0 the ctl_table_header\nwill be unregistered.\n\nFactor out drop_sysctl_table from unregister_sysctl_table, and add\nthe logic for decrementing nreg.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "3cc3e04636d603778d921854b84ae7bd34a349a2",
      "tree": "a71b0271933f3ed5d30ec7b15fc07e55af80ace6",
      "parents": [
        "8d6ecfcc014332fd2fe933f64194160f0e3a6696"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 07 06:57:47 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:28 2012 -0800"
      },
      "message": "sysctl: A more obvious version of grab_header.\n\nInstead of relying on sysct_head_next(NULL) to magically\nreturn the right header for the root directory instead\nexplicitly transform NULL into the root directories header.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "8d6ecfcc014332fd2fe933f64194160f0e3a6696",
      "tree": "0e189654469ff7a39bf85a4cd483e2277cac474e",
      "parents": [
        "7c60c48f58a78195acc1f71c9a9d01958c02ab89"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Jan 06 11:55:30 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:28 2012 -0800"
      },
      "message": "sysctl: Remove the now unused ctl_table parent field.\n\nWhile useful at one time for selinux and the sysctl sanity\nchecks those users no longer use the parent field and we can\nsafely remove it.\n\nInspired-by: Lucian Adrian Grijincu \u003clucian.grijincu@gmil.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "7c60c48f58a78195acc1f71c9a9d01958c02ab89",
      "tree": "7d1a66abc2510aa474105a747fdcd08b033f2b36",
      "parents": [
        "f728019bb72e655680c02ad1829323054a8e875f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 21 13:34:05 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:27 2012 -0800"
      },
      "message": "sysctl: Improve the sysctl sanity checks\n\n- Stop validating subdirectories now that we only register leaf tables\n\n- Cleanup and improve the duplicate filename check.\n  * Run the duplicate filename check under the sysctl_lock to guarantee\n    we never add duplicate names.\n  * Reduce the duplicate filename check to nearly O(M*N) where M is the\n    number of entries in tthe table we are registering and N is the\n    number of entries in the directory before we got there.\n\n- Move the duplicate filename check into it\u0027s own function and call\n  it directtly from __register_sysctl_table\n\n- Kill the config option as the sanity checks are now cheap enough\n  the config option is unnecessary. The original reason for the config\n  option was because we had a huge table used to verify the proc filename\n  to binary sysctl mapping.  That table has now evolved into the binary_sysctl\n  translation layer and is no longer part of the sysctl_check code.\n\n- Tighten up the permission checks.  Guarnateeing that files only have read\n  or write permissions.\n\n- Removed redudant check for parents having a procname as now everything has\n  a procname.\n\n- Generalize the backtrace logic so that we print a backtrace from\n  any failure of __register_sysctl_table that was not caused by\n  a memmory allocation failure.  The backtrace allows us to track\n  down who erroneously registered a sysctl table.\n\nBechmark before (CONFIG_SYSCTL_CHECK\u003dy):\n    make-dummies 0 999 -\u003e 12s\n    rmmod dummy        -\u003e 0.08s\n\nBechmark before (CONFIG_SYSCTL_CHECK\u003dn):\n    make-dummies 0 999 -\u003e 0.7s\n    rmmod dummy        -\u003e 0.06s\n    make-dummies 0 99999 -\u003e 1m13s\n    rmmod dummy          -\u003e 0.38s\n\nBenchmark after:\n    make-dummies 0 999 -\u003e 0.65s\n    rmmod dummy        -\u003e 0.055s\n    make-dummies 0 9999 -\u003e 1m10s\n    rmmod dummy         -\u003e 0.39s\n\nThe sysctl sanity checks now impose no measurable cost.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "f728019bb72e655680c02ad1829323054a8e875f",
      "tree": "cc1915e06b806004c662abb0f0cb4f897111be1c",
      "parents": [
        "ec6a52668d0bbc6d648e978c327150254bf1ce7f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jan 22 18:22:05 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:40:27 2012 -0800"
      },
      "message": "sysctl: register only tables of sysctl files\n\nSplit the registration of a complex ctl_table array which may have\narbitrary numbers of directories (-\u003echild !\u003d NULL) and tables of files\ninto a series of simpler registrations that only register tables of files.\n\nGraphically:\n\n   register(\u0027dir\u0027, { + file-a\n                     + file-b\n                     + subdir1\n                       + file-c\n                     + subdir2\n                       + file-d\n                       + file-e })\n\nis transformed into:\n   wrapper-\u003esubheaders[0] \u003d register(\u0027dir\u0027, {file1-a, file1-b})\n   wrapper-\u003esubheaders[1] \u003d register(\u0027dir/subdir1\u0027, {file-c})\n   wrapper-\u003esubheaders[2] \u003d register(\u0027dir/subdir2\u0027, {file-d, file-e})\n   return wrapper\n\nThis guarantees that __register_sysctl_table will only see a simple\nctl_table array with all entries having (-\u003echild \u003d\u003d NULL).\n\nCare was taken to pass the original simple ctl_table arrays to\n__register_sysctl_table whenever possible.\n\nThis change is derived from a similar patch written\nby Lucrian Grijincu.\n\nInspired-by: Lucian Adrian Grijincu \u003clucian.grijincu@gmail.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ec6a52668d0bbc6d648e978c327150254bf1ce7f",
      "tree": "d3241580b5f95515b9a1cedea588cea91d35f816",
      "parents": [
        "6e9d5164153ad6539edd31e7afb02a3e79124cad"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 21 12:35:23 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:55 2012 -0800"
      },
      "message": "sysctl: Add ctl_table chains into cstring paths\n\nFor any component of table passed to __register_sysctl_paths\nthat actually serves as a path, add that to the cstring path\nthat is passed to __register_sysctl_table.\n\nThe result is that for most calls to __register_sysctl_paths\nwe only pass a table to __register_sysctl_table that contains\nno child directories.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "6e9d5164153ad6539edd31e7afb02a3e79124cad",
      "tree": "ce6cb28dca49f68cc6236dc70a71ecf93593159f",
      "parents": [
        "f05e53a7fbb28c951c0c8cf3963fa8019ae1d4d3"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 21 10:26:26 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:55 2012 -0800"
      },
      "message": "sysctl: Add support for register sysctl tables with a normal cstring path.\n\nMake __register_sysctl_table the core sysctl registration operation and\nmake it take a char * string as path.\n\nNow that binary paths have been banished into the real of backwards\ncompatibility in kernel/binary_sysctl.c where they can be safely\nignored there is no longer a need to use struct ctl_path to represent\npath names when registering ctl_tables.\n\nStart the transition to using normal char * strings to represent\npathnames when registering sysctl tables.  Normal strings are easier\nto deal with both in the internal sysctl implementation and for\nprogrammers registering sysctl tables.\n\n__register_sysctl_paths is turned into a backwards compatibility wrapper\nthat converts a ctl_path array into a normal char * string.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "f05e53a7fbb28c951c0c8cf3963fa8019ae1d4d3",
      "tree": "aa8f66eb061b79be46619cfe7717bd64663cee1b",
      "parents": [
        "bd295b56cfae85f2dd6c2b03951480c91e6d08f3"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jan 21 10:03:13 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:55 2012 -0800"
      },
      "message": "sysctl: Create local copies of directory names used in paths\n\nCreating local copies of directory names is a good idea for\ntwo reasons.\n- The dynamic names used by callers must be copied into new\n  strings by the callers today to ensure the strings do not\n  change between register and unregister of the sysctl table.\n\n- Sysctl directories have a potentially different lifetime\n  than the time between register and unregister of any\n  particular sysctl table.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "bd295b56cfae85f2dd6c2b03951480c91e6d08f3",
      "tree": "7f8667dbf6c297897b6427d228885d565e263c66",
      "parents": [
        "97324cd804b7b9fb6044e114329335db79810425"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jan 22 21:10:21 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:55 2012 -0800"
      },
      "message": "sysctl: Remove the unnecessary sysctl_set parent concept.\n\nIn sysctl_net register the two networking roots in the proper order.\n\nIn register_sysctl walk the sysctl sets in the reverse order of the\nsysctl roots.\n\nRemove parent from ctl_table_set and setup_sysctl_set as it is no\nlonger needed.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "97324cd804b7b9fb6044e114329335db79810425",
      "tree": "ffebd82bb36069d38b9063328920f39434eb5155",
      "parents": [
        "a15e20982e2fbb06e85da584a0f150784042c17d"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jan 09 22:19:13 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:55 2012 -0800"
      },
      "message": "sysctl: Implement retire_sysctl_set\n\nThis adds a small helper retire_sysctl_set to remove the intimate knowledge about\nthe how a sysctl_set is implemented from net/sysct_net.c\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "a15e20982e2fbb06e85da584a0f150784042c17d",
      "tree": "63f33957dd0d87b6654be8653661f841ce5baf1d",
      "parents": [
        "1f87f0b52b1d6581168cb80f86746bc4df918d01"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Jan 08 00:16:29 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:55 2012 -0800"
      },
      "message": "sysctl: Make the directories have nlink \u003d\u003d 1\n\nI goofed when I made sysctl directories have nlink \u003d\u003d 0.\nnlink \u003d\u003d 0 means the directory has been deleted.\nnlink \u003d\u003d 1 meands a directory does not count subdirectories.\n\nUse the default nlink \u003d\u003d 1 for sysctl directories.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "1f87f0b52b1d6581168cb80f86746bc4df918d01",
      "tree": "73576c0872c61c526ade225d6441a6610beb666b",
      "parents": [
        "de4e83bd6b5e16d491ec068cd22801d5d063b07a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Jan 06 04:07:15 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Jan 24 16:37:54 2012 -0800"
      },
      "message": "sysctl: Move the implementation into fs/proc/proc_sysctl.c\n\nMove the core sysctl code from kernel/sysctl.c and kernel/sysctl_check.c\ninto fs/proc/proc_sysctl.c.\n\nCurrently sysctl maintenance is hampered by the sysctl implementation\nbeing split across 3 files with artificial layering between them.\nConsolidate the entire sysctl implementation into 1 file so that\nit is easier to see what is going on and hopefully allowing for\nsimpler maintenance.\n\nFor functions that are now only used in fs/proc/proc_sysctl.c remove\ntheir declarations from sysctl.h and make them static in fs/proc/proc_sysctl.c\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    }
  ],
  "next": "de4e83bd6b5e16d491ec068cd22801d5d063b07a"
}
