)]}'
{
  "log": [
    {
      "commit": "9abd59b0df155835a970c2b9c8f93367eb793797",
      "tree": "bcf0868f831d204e2b582113c53b8de3ff015eca",
      "parents": [
        "4e111751cfcb75f26d2725eab934b6eb91a3d115",
        "94ed5b4788a7cdbe68bc7cb8516972cbebdc8274"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 10 18:07:59 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 10 18:07:59 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0.1\u0027 into android-3.0\n"
    },
    {
      "commit": "8cd3f19d8310dd5086f396f78d9b5bcf459f6e81",
      "tree": "a933d4311d6d73a75e7b238ad4a36ea00d209c60",
      "parents": [
        "c14acb19a4b1482b6dd6e9d0874b2c8e32d6599d"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Tue Jul 26 16:08:38 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 04 21:58:40 2011 -0700"
      },
      "message": "proc: fix a race in do_io_accounting()\n\ncommit 293eb1e7772b25a93647c798c7b89bf26c2da2e0 upstream.\n\nIf an inode\u0027s mode permits opening /proc/PID/io and the resulting file\ndescriptor is kept across execve() of a setuid or similar binary, the\nptrace_may_access() check tries to prevent using this fd against the\ntask with escalated privileges.\n\nUnfortunately, there is a race in the check against execve().  If\nexecve() is processed after the ptrace check, but before the actual io\ninformation gathering, io statistics will be gathered from the\nprivileged process.  At least in theory this might lead to gathering\nsensible information (like ssh/ftp password length) that wouldn\u0027t be\navailable otherwise.\n\nHolding task-\u003esignal-\u003ecred_guard_mutex while gathering the io\ninformation should protect against the race.\n\nThe order of locking is similar to the one inside of ptrace_attach():\nfirst goes cred_guard_mutex, then lock_task_sighand().\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "814cdea670616252e4cdf297a07b02ce59698bf1",
      "tree": "c4a5665995e813c252b07f1e863166059bfb5bcb",
      "parents": [
        "487ffb052891a552fecf865ad4b24bbe7945a413",
        "fe0d42203cb5616eeff68b14576a0f7e2dd56625"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Jul 07 17:55:44 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Jul 07 17:55:44 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0-rc6\u0027 into android-3.0\n"
    },
    {
      "commit": "e55d4fa96762fd767a3b6d842c904e994db6bb2e",
      "tree": "c74157e01cb128cb97f106a50cfadc4c8b872c41",
      "parents": [
        "e32c14667e4fe9f16ac9b918d15d29abd2315a55",
        "b0af8dfdd67699e25083478c63eedef2e72ebd85"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 29 13:54:42 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 29 13:54:42 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0-rc5\u0027 into android-3.0\n"
    },
    {
      "commit": "1d1221f375c94ef961ba8574ac4f85c8870ddd51",
      "tree": "1e05f1c33bef03a88745c55ac9891b8423ae1795",
      "parents": [
        "b0af8dfdd67699e25083478c63eedef2e72ebd85"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Fri Jun 24 16:08:38 2011 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 28 09:39:11 2011 -0700"
      },
      "message": "proc: restrict access to /proc/PID/io\n\n/proc/PID/io may be used for gathering private information.  E.g.  for\nopenssh and vsftpd daemons wchars/rchars may be used to learn the\nprecise password length.  Restrict it to processes being able to ptrace\nthe target process.\n\nptrace_may_access() is needed to prevent keeping open file descriptor of\n\"io\" file, executing setuid binary and gathering io information of the\nsetuid\u0027ed process.\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf1279111686d9742cbc4145bc9d526c83f59fea",
      "tree": "3247223a8bef912896418bd07475cec2658fc212",
      "parents": [
        "730e908f3539066d4aa01f4720ebfc750ce4d045"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 18 20:35:23 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:44:50 2011 -0400"
      },
      "message": "proc_fd_permission() is doesn\u0027t need to bail out in RCU mode\n\nnothing blocking except generic_permission()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a97e6c5d4a92b7dbdb0e34a52c94e972640ac2e9",
      "tree": "83fea4e274937e34c808f3d09fa2518c9a9504e8",
      "parents": [
        "ce84ca9acef1cb5209b7d0f1fff7b6a5640fab2f"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Sep 16 12:39:10 2009 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:09:18 2011 -0700"
      },
      "message": "proc: smaps: Allow smaps access for CAP_SYS_RESOURCE\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "766e993bdcb3baca64fc7dee9a800a2c21060858",
      "tree": "e24d1b58ed302b540e73d06e749f0076752f65e6",
      "parents": [
        "ac7333371d447fe3f99b2b81f38f70352c3ffd07"
      ],
      "author": {
        "name": "Mike Chan",
        "email": "mikechan@google.com",
        "time": "Thu Apr 24 10:22:26 2008 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:08:48 2011 -0700"
      },
      "message": "Grants system server access to /proc/\u003cpid\u003e/oom_adj for Android applications.\n\nSigned-off-by: Brian Swetland \u003cswetland@google.com\u003e\n"
    },
    {
      "commit": "57ed609d4b64139b4d2cf5f3b4880a573a7905d2",
      "tree": "d824e1ebd33b28c4ccc53e9074064db479b17dc7",
      "parents": [
        "a74d70b63f1a0230831bcca3145d85ae016f9d4c",
        "f133ecca9cbb31b5e6e9bda27cbe3034fbf656df"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 11:29:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 11:29:28 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:\n  arch/tile: more /proc and /sys file support\n"
    },
    {
      "commit": "f133ecca9cbb31b5e6e9bda27cbe3034fbf656df",
      "tree": "1887377b71ee9fc73d4e1226d1d9776ae5a5d7ad",
      "parents": [
        "7a0287df3e83a0012dfc496d4a8af9c1c5b126ef"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu May 26 12:40:09 2011 -0400"
      },
      "committer": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Fri May 27 10:39:05 2011 -0400"
      },
      "message": "arch/tile: more /proc and /sys file support\n\nThis change introduces a few of the less controversial /proc and\n/proc/sys interfaces for tile, along with sysfs attributes for\nvarious things that were originally proposed as /proc/tile files.\nIt also adjusts the \"hardwall\" proc API.\n\nArnd Bergmann reviewed the initial arch/tile submission, which\nincluded a complete set of all the /proc/tile and /proc/sys/tile\nknobs that we had added in a somewhat ad hoc way during initial\ndevelopment, and provided feedback on where most of them should go.\n\nOne knob turned out to be similar enough to the existing\n/proc/sys/debug/exception-trace that it was re-implemented to use\nthat model instead.\n\nAnother knob was /proc/tile/grid, which reported the \"grid\" dimensions\nof a tile chip (e.g. 8x8 processors \u003d 64-core chip).  Arnd suggested\nlooking at sysfs for that, so this change moves that information\nto a pair of sysfs attributes (chip_width and chip_height) in the\n/sys/devices/system/cpu directory.  We also put the \"chip_serial\"\nand \"chip_revision\" information from our old /proc/tile/board file\nas attributes in /sys/devices/system/cpu.\n\nOther information collected via hypervisor APIs is now placed in\n/sys/hypervisor.  We create a /sys/hypervisor/type file (holding the\nconstant string \"tilera\") to be parallel with the Xen use of\n/sys/hypervisor/type holding \"xen\".  We create three top-level files,\n\"version\" (the hypervisor\u0027s own version), \"config_version\" (the\nversion of the configuration file), and \"hvconfig\" (the contents of\nthe configuration file).  The remaining information from our old\n/proc/tile/board and /proc/tile/switch files becomes an attribute\ngroup appearing under /sys/hypervisor/board/.\n\nFinally, after some feedback from Arnd Bergmann for the previous\nversion of this patch, the /proc/tile/hardwall file is split up into\ntwo conceptual parts.  First, a directory /proc/tile/hardwall/ which\ncontains one file per active hardwall, each file named after the\nhardwall\u0027s ID and holding a cpulist that says which cpus are enclosed by\nthe hardwall.  Second, a /proc/PID file \"hardwall\" that is either\nempty (for non-hardwall-using processes) or contains the hardwall ID.\n\nFinally, this change pushes the /proc/sys/tile/unaligned_fixup/\ndirectory, with knobs controlling the kernel code for handling the\nfixup of unaligned exceptions.\n\nReviewed-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\n"
    },
    {
      "commit": "30cd8903913dac7b0918807cac46be3ecde5a5a7",
      "tree": "64022195d9a384c11b93a4b1299aa944b8293deb",
      "parents": [
        "a4dbf0ec2aa3e8aca6e63f598095750c232d50f1"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 26 16:25:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:37 2011 -0700"
      },
      "message": "proc: put check_mem_permission after __get_free_page in mem_write\n\nIt whould be better if put check_mem_permission after __get_free_page in\nmem_write, to be same as function mem_read.\n\nHugh Dickins explained the reason.\n\n    check_mem_permission gets a reference to the mm.  If we __get_free_page\n    after check_mem_permission, imagine what happens if the system is out\n    of memory, and the mm we\u0027re looking at is selected for killing by the\n    OOM killer: while we wait in __get_free_page for more memory, no memory\n    is freed from the selected mm because it cannot reach exit_mmap while\n    we hold that reference.\n\nReported-by: Jovi Zhang \u003cbookjovi@gmail.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: Stephen Wilson \u003cwilsons@start.ca\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": "0a8cb8e34149251ad1f280fe099a4f971554639a",
      "tree": "9b99f0b9d7366d9049760fd06462b14b0e14a061",
      "parents": [
        "57cc083ad9e1bfeeb4a0ee831e7bb008c8865bf0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu May 26 16:25:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "fs/proc: convert to kstrtoX()\n\nConvert fs/proc/ from strict_strto*() to kstrto*() functions.\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": "3864601387cf4196371e3c1897fdffa5228296f9",
      "tree": "1c517a970194f9e49ef98ef434c650771ffa31e1",
      "parents": [
        "63ab25ebbc50f74550bd8d164a34724b498f6fb9"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Thu May 26 16:25:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "mm: extract exe_file handling from procfs\n\nSetup and cleanup of mm_struct-\u003eexe_file is currently done in fs/proc/.\nThis was because exe_file was needed only for /proc/\u003cpid\u003e/exe.  Since we\nwill need the exe_file functionality also for core dumps (so core name can\ncontain full binary path), built this functionality always into the\nkernel.\n\nTo achieve that move that out of proc FS to the kernel/ where in fact it\nshould belong.  By doing that we can make dup_mm_exe_file static.  Also we\ncan drop linux/proc_fs.h inclusion in fs/exec.c and kernel/fork.c.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Alexander Viro \u003cviro@zeniv.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": "6b4e306aa3dc94a0545eb9279475b1ab6209a31f",
      "tree": "ca8c6dec0805076f0b5ba7c547e3cb2004e3aea2",
      "parents": [
        "0ee5623f9a6e52df90a78bd21179f8ab370e102e"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Mar 07 16:41:34 2010 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 10 14:31:44 2011 -0700"
      },
      "message": "ns: proc files for namespace naming policy.\n\nCreate files under /proc/\u003cpid\u003e/ns/ to allow controlling the\nnamespaces of a process.\n\nThis addresses three specific problems that can make namespaces hard to\nwork with.\n- Namespaces require a dedicated process to pin them in memory.\n- It is not possible to use a namespace unless you are the child\n  of the original creator.\n- Namespaces don\u0027t have names that userspace can use to talk about\n  them.\n\nThe namespace files under /proc/\u003cpid\u003e/ns/ can be opened and the\nfile descriptor can be used to talk about a specific namespace, and\nto keep the specified namespace alive.\n\nA namespace can be kept alive by either holding the file descriptor\nopen or bind mounting the file someplace else.  aka:\nmount --bind /proc/self/ns/net /some/filesystem/path\nmount --bind /proc/self/fd/\u003cN\u003e /some/filesystem/path\n\nThis allows namespaces to be named with userspace policy.\n\nIt requires additional support to make use of these filedescriptors\nand that will be comming in the following patches.\n\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "d8bdc59f215e62098bc5b4256fd9928bf27053a1",
      "tree": "2f6e233afaf1b7f970e2f0ef0786dff4596dbd0a",
      "parents": [
        "c78193e9c7bcbf25b8237ad0dec82f805c4ea69b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 18 10:36:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 18 10:36:54 2011 -0700"
      },
      "message": "proc: do proper range check on readdir offset\n\nRather than pass in some random truncated offset to the pid-related\nfunctions, check that the offset is in range up-front.\n\nThis is just cleanup, the previous commit fixed the real problem.\n\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "b81a618dcd3ea99de292dbe624f41ca68f464376",
      "tree": "c5fbe44f944da9d7dc0c224116be77094d379c8a",
      "parents": [
        "2f284c846331fa44be1300a3c2c3e85800268a00",
        "a9712bc12c40c172e393f85a9b2ba8db4bf59509"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 20:51:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 20:51:42 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  deal with races in /proc/*/{syscall,stack,personality}\n  proc: enable writing to /proc/pid/mem\n  proc: make check_mem_permission() return an mm_struct on success\n  proc: hold cred_guard_mutex in check_mem_permission()\n  proc: disable mem_write after exec\n  mm: implement access_remote_vm\n  mm: factor out main logic of access_process_vm\n  mm: use mm_struct to resolve gate vma\u0027s in __get_user_pages\n  mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm\n  mm: arch: make in_gate_area take an mm_struct instead of a task_struct\n  mm: arch: make get_gate_vma take an mm_struct instead of a task_struct\n  x86: mark associated mm when running a task in 32 bit compatibility mode\n  x86: add context tag to mark mm when running a task in 32-bit compatibility mode\n  auxv: require the target to be tracable (or yourself)\n  close race in /proc/*/environ\n  report errors in /proc/*/*map* sanely\n  pagemap: close races with suid execve\n  make sessionid permissions in /proc/*/task/* match those in /proc/*\n  fix leaks in path_lookupat()\n\nFix up trivial conflicts in fs/proc/base.c\n"
    },
    {
      "commit": "fc3d8767b2b6de955579852d7a150f1734265eaf",
      "tree": "282762d459af3ebdf0bf8661a9422d55fc74dbb1",
      "parents": [
        "0db0c01b53a1a421513f91573241aabafb87802a"
      ],
      "author": {
        "name": "Jovi Zhang",
        "email": "bookjovi@gmail.com",
        "time": "Wed Mar 23 16:42:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:36 2011 -0700"
      },
      "message": "procfs: fix some wrong error code usage\n\n[root@wei 1]# cat /proc/1/mem\ncat: /proc/1/mem: No such process\n\nerror code -ESRCH is wrong in this situation.  Return -EPERM instead.\n\nSigned-off-by: Jovi Zhang \u003cbookjovi@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.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": "51e031496d50f87ff519a63cfd4fc2f415f03336",
      "tree": "75c177b8aeba82fffb80960eed1c77bb4188c362",
      "parents": [
        "523fb486bfd94e3a3b16a42bcb21b1959cf14df8"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 23 16:42:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:36 2011 -0700"
      },
      "message": "proc: hide kernel addresses via %pK in /proc/\u003cpid\u003e/stack\n\nThis file is readable for the task owner.  Hide kernel addresses from\nunprivileged users, leave them function names and offsets.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Kees Cook \u003ckees.cook@canonical.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": "a9712bc12c40c172e393f85a9b2ba8db4bf59509",
      "tree": "c40217e028ae937da7ad94e249e2247191ffcc8f",
      "parents": [
        "198214a7ee50375fa71a65e518341980cfd4b2f0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 15:52:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 17:01:18 2011 -0400"
      },
      "message": "deal with races in /proc/*/{syscall,stack,personality}\n\nAll of those are rw-r--r-- and all are broken for suid - if you open\na file before the target does suid-root exec, you\u0027ll be still able\nto access it.  For personality it\u0027s not a big deal, but for syscall\nand stack it\u0027s a real problem.\n\nFix: check that task is tracable for you at the time of read().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "198214a7ee50375fa71a65e518341980cfd4b2f0",
      "tree": "cfd389ba211b8742c99dcbb866b3a6c0864f2164",
      "parents": [
        "8b0db9db19858b08c46a84540acfd35f6e6487b8"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:24 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:59 2011 -0400"
      },
      "message": "proc: enable writing to /proc/pid/mem\n\nWith recent changes there is no longer a security hazard with writing to\n/proc/pid/mem.  Remove the #ifdef.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8b0db9db19858b08c46a84540acfd35f6e6487b8",
      "tree": "f8cad66b43b21ac8cc58c6173b86aaa9ee3d4b5f",
      "parents": [
        "18f661bcf898742212182d75f22f05b048cc04bb"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:23 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:59 2011 -0400"
      },
      "message": "proc: make check_mem_permission() return an mm_struct on success\n\nThis change allows us to take advantage of access_remote_vm(), which in turn\neliminates a security issue with the mem_write() implementation.\n\nThe previous implementation of mem_write() was insecure since the target task\ncould exec a setuid-root binary between the permission check and the actual\nwrite.  Holding a reference to the target mm_struct eliminates this\nvulnerability.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18f661bcf898742212182d75f22f05b048cc04bb",
      "tree": "3a0a6edc6e4240bda06fe52d565fe4b1cb4d8b84",
      "parents": [
        "26947f8c8f9598209001cdcd31bb2162a2e54691"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:58 2011 -0400"
      },
      "message": "proc: hold cred_guard_mutex in check_mem_permission()\n\nAvoid a potential race when task exec\u0027s and we get a new -\u003emm but check against\nthe old credentials in ptrace_may_access().\n\nHolding of the mutex is implemented by factoring out the body of the code into a\nhelper function __check_mem_permission().  Performing this factorization now\nsimplifies upcoming changes and minimizes churn in the diff\u0027s.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26947f8c8f9598209001cdcd31bb2162a2e54691",
      "tree": "bab014e7ad404ca3e36ae650f170f02df05705cd",
      "parents": [
        "5ddd36b9c59887c6416e21daf984fbdd9b1818df"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:58 2011 -0400"
      },
      "message": "proc: disable mem_write after exec\n\nThis change makes mem_write() observe the same constraints as mem_read().  This\nis particularly important for mem_write as an accidental leak of the fd across\nan exec could result in arbitrary modification of the target process\u0027 memory.\nIOW, /proc/pid/mem is implicitly close-on-exec.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2fadaef41283aad7100fa73f01998cddaca25833",
      "tree": "110c35c301a504d03d73d1aea2904abc43ccce6f",
      "parents": [
        "d6f64b89d7ff22ce05896ab4a93a653e8d0b123d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 15 22:52:11 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:52 2011 -0400"
      },
      "message": "auxv: require the target to be tracable (or yourself)\n\nsame as for environ, except that we didn\u0027t do any checks to\nprevent access after suid execve\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d6f64b89d7ff22ce05896ab4a93a653e8d0b123d",
      "tree": "21bc9a103dade9b22ced58455dde7cd00e01cd28",
      "parents": [
        "ec6fd8a4355cda81cd9f06bebc048e83eb514ac7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 15 22:26:01 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:51 2011 -0400"
      },
      "message": "close race in /proc/*/environ\n\nSwitch to mm_for_maps().  Maybe we ought to make it r--r--r--,\nsince we do checks on IO anyway...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ec6fd8a4355cda81cd9f06bebc048e83eb514ac7",
      "tree": "828c3f2e1b474cc0ec9768d5dc19cfa2c086898f",
      "parents": [
        "ca6b0bf0e086513b9ee5efc0aa5770ecb57778af"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 15 22:22:54 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:50 2011 -0400"
      },
      "message": "report errors in /proc/*/*map* sanely\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ca6b0bf0e086513b9ee5efc0aa5770ecb57778af",
      "tree": "4fec50b38253288746ac4b4ea6d4bf5216b0c53b",
      "parents": [
        "26ec3c646e75ce7a69fda429d68fcbdcd5eacc62"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 15 22:04:37 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:50 2011 -0400"
      },
      "message": "pagemap: close races with suid execve\n\njust use mm_for_maps()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26ec3c646e75ce7a69fda429d68fcbdcd5eacc62",
      "tree": "5b5e29272fbd9a99111a9042a84522bc06f61219",
      "parents": [
        "bd23a539d0733c9f9ec3f9fc628491fad2658e82"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 15 21:24:05 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:49 2011 -0400"
      },
      "message": "make sessionid permissions in /proc/*/task/* match those in /proc/*\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ae50adcb0ac4cde67a7aec8ae67249d1b2be2948",
      "tree": "757ea609da68ae08471bc2d0f689aa287ee89cbf",
      "parents": [
        "3979491701cfb2aa7477f5baf40553355391418b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 16 10:04:50 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:41:53 2011 -0500"
      },
      "message": "/proc/self is never going to be invalidated...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dabb16f639820267b3850d804571c70bd93d4e07",
      "tree": "7da59e6133cd2f820389574ac9206c56e046f5d4",
      "parents": [
        "d0a21265dfb5fa8ae54e90d0fb6d1c215b10a28a"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@chromium.org",
        "time": "Thu Jan 13 15:46:05 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "oom: allow a non-CAP_SYS_RESOURCE proces to oom_score_adj down\n\nWe\u0027d like to be able to oom_score_adj a process up/down as it\nenters/leaves the foreground.  Currently, it is not possible to oom_adj\ndown without CAP_SYS_RESOURCE.  This patch allows a task to decrease its\noom_score_adj back to the value that a CAP_SYS_RESOURCE thread set it to\nor its inherited value at fork.  Assuming the thread that has forked it\nhas oom_score_adj of 0, each process could decrease it back from 0 upon\nactivation unless a CAP_SYS_RESOURCE thread elevated it to something\nhigher.\n\nAlternative considered:\n\n* a setuid binary\n* a daemon with CAP_SYS_RESOURCE\n\nSince you don\u0027t wan\u0027t all processes to be able to reduce their oom_adj, a\nsetuid or daemon implementation would be complex.  The alternatives also\nhave much higher overhead.\n\nThis patch updated from original patch based on feedback from David\nRientjes.\n\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@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": "c6a340584607f653e10549c76dd427d4780c8f2c",
      "tree": "20e82a1dd34f4b2f7477bf02b398759ba026d772",
      "parents": [
        "6d1b6e4eff89475785f60fa00f65da780f869f36"
      ],
      "author": {
        "name": "Jovi Zhang",
        "email": "bookjovi@gmail.com",
        "time": "Wed Jan 12 17:00:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:16 2011 -0800"
      },
      "message": "proc: use single_open() correctly\n\nsingle_open()\u0027s third argument is for copying into seq_file-\u003eprivate.  Use\nthat, rather than open-coding it.\n\nSigned-off-by: Jovi Zhang \u003cbookjovi@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nReviewed-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": "9d6de12f70d2fb1487c4f482a21fed25fe74e0fd",
      "tree": "a5bc7cb77c710418c44e2b1c009e80d79e12e3ab",
      "parents": [
        "a2ade7b6ca37c808128810687cd56e8a44443e65"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jan 12 17:00:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:16 2011 -0800"
      },
      "message": "proc: use seq_puts()/seq_putc() where possible\n\nFor string without format specifiers, use seq_puts().\nFor seq_printf(\"\\n\"), use seq_putc(\u0027\\n\u0027).\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n  61866\t    488\t    112\t  62466\t   f402\tfs/proc/proc.o\n  61729\t    488\t    112\t  62329\t   f379\tfs/proc/proc.o\n  ----------------------------------------------------\n  \t\t\t   -139\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": "34e49d4f635d6a800c4089c40fd254e12e451449",
      "tree": "097715098524f7cf997f5646af75f839b3744fa0",
      "parents": [
        "1bdcd78e2445f1ef7097a3ae7ef12e8f9c4fb05f"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 17:00:30 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:16 2011 -0800"
      },
      "message": "fs/proc/base.c, kernel/latencytop.c: convert sprintf_symbol() to %ps\n\nUse temporary lr for struct latency_record for improved readability and\nfewer columns used.  Removed trailing space from output.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Jiri Kosina \u003ctrivial@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": "b4a45f5fe8078bfc10837dbd5b98735058bc4698",
      "tree": "df6f13a27610a3ec7eb4a661448cd779a8f84c79",
      "parents": [
        "01539ba2a706ab7d35fc0667dff919ade7f87d63",
        "b3e19d924b6eaf2ca7d22cba99a517c5171007b6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin: (57 commits)\n  fs: scale mntget/mntput\n  fs: rename vfsmount counter helpers\n  fs: implement faster dentry memcmp\n  fs: prefetch inode data in dcache lookup\n  fs: improve scalability of pseudo filesystems\n  fs: dcache per-inode inode alias locking\n  fs: dcache per-bucket dcache hash locking\n  bit_spinlock: add required includes\n  kernel: add bl_list\n  xfs: provide simple rcu-walk ACL implementation\n  btrfs: provide simple rcu-walk ACL implementation\n  ext2,3,4: provide simple rcu-walk ACL implementation\n  fs: provide simple rcu-walk generic_check_acl implementation\n  fs: provide rcu-walk aware permission i_ops\n  fs: rcu-walk aware d_revalidate method\n  fs: cache optimise dentry and inode for rcu-walk\n  fs: dcache reduce branches in lookup path\n  fs: dcache remove d_mounted\n  fs: fs_struct use seqlock\n  fs: rcu-walk for path lookup\n  ...\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "8e9255e6a2141e050d51bc4d96dbef494a87d653",
      "tree": "f190b142830153eaab05555a93c4f71a144ba3d4",
      "parents": [
        "5091faa449ee0b7d73bc296a93bca9540fc51d0a",
        "6313e3c21743cc88bb5bd8aa72948ee1e83937b6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 08 20:15:26 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 08 20:15:29 2010 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into sched/core\n\nMerge reason: we want to queue up dependent cleanup\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7b2a69ba7055da9a04eb96aa7b38c8e3280aaaa5",
      "tree": "50b564e78fcb708a35ded72ed5cbd58cc12ce5c5",
      "parents": [
        "11e8896474495dec7ce19a542f67def847ec208f"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Dec 05 15:51:21 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 05 16:39:45 2010 -0800"
      },
      "message": "Revert \"vfs: show unreachable paths in getcwd and proc\"\n\nBecause it caused a chroot ttyname regression in 2.6.36.\n\nAs of 2.6.36 ttyname does not work in a chroot.  It has already been\nreported that screen breaks, and for me this breaks an automated\ndistribution testsuite, that I need to preserve the ability to run the\nexisting binaries on for several more years.  glibc 2.11.3 which has a\nfix for this is not an option.\n\nThe root cause of this breakage is:\n\n    commit 8df9d1a4142311c084ffeeacb67cd34d190eff74\n    Author: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n    Date:   Tue Aug 10 11:41:41 2010 +0200\n\n    vfs: show unreachable paths in getcwd and proc\n\n    Prepend \"(unreachable)\" to path strings if the path is not reachable\n    from the current root.\n\n    Two places updated are\n     - the return string from getcwd()\n     - and symlinks under /proc/$PID.\n\n    Other uses of d_path() are left unchanged (we know that some old\n    software crashes if /proc/mounts is changed).\n\n    Signed-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n    Signed-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n\nSo remove the nice sounding, but ultimately ill advised change to how\n/proc/fd symlinks work.\n\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5091faa449ee0b7d73bc296a93bca9540fc51d0a",
      "tree": "55f5e96e189af65c85c769fce48627b8a5abb86b",
      "parents": [
        "822bc180a7f7a7bc5fcaaea195f41b487cc8cae8"
      ],
      "author": {
        "name": "Mike Galbraith",
        "email": "efault@gmx.de",
        "time": "Tue Nov 30 14:18:03 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 30 16:03:35 2010 +0100"
      },
      "message": "sched: Add \u0027autogroup\u0027 scheduling feature: automated per session task groups\n\nA recurring complaint from CFS users is that parallel kbuild has\na negative impact on desktop interactivity.  This patch\nimplements an idea from Linus, to automatically create task\ngroups.  Currently, only per session autogroups are implemented,\nbut the patch leaves the way open for enhancement.\n\nImplementation: each task\u0027s signal struct contains an inherited\npointer to a refcounted autogroup struct containing a task group\npointer, the default for all tasks pointing to the\ninit_task_group.  When a task calls setsid(), a new task group\nis created, the process is moved into the new task group, and a\nreference to the preveious task group is dropped.  Child\nprocesses inherit this task group thereafter, and increase it\u0027s\nrefcount.  When the last thread of a process exits, the\nprocess\u0027s reference is dropped, such that when the last process\nreferencing an autogroup exits, the autogroup is destroyed.\n\nAt runqueue selection time, IFF a task has no cgroup assignment,\nits current autogroup is used.\n\nAutogroup bandwidth is controllable via setting it\u0027s nice level\nthrough the proc filesystem:\n\n  cat /proc/\u003cpid\u003e/autogroup\n\nDisplays the task\u0027s group and the group\u0027s nice level.\n\n  echo \u003cnice level\u003e \u003e /proc/\u003cpid\u003e/autogroup\n\nSets the task group\u0027s shares to the weight of nice \u003clevel\u003e task.\nSetting nice level is rate limited for !admin users due to the\nabuse risk of task group locking.\n\nThe feature is enabled from boot by default if\nCONFIG_SCHED_AUTOGROUP\u003dy is selected, but can be disabled via\nthe boot option noautogroup, and can also be turned on/off on\nthe fly via:\n\n  echo [01] \u003e /proc/sys/kernel/sched_autogroup_enabled\n\n... which will automatically move tasks to/from the root task group.\n\nSigned-off-by: Mike Galbraith \u003cefault@gmx.de\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n[ Removed the task_group_path() debug code, and fixed !EVENTFD build failure. ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nLKML-Reference: \u003c1290281700.28711.9.camel@maggy.simson.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9b1bf12d5d51bca178dea21b04a0805e29d60cf1",
      "tree": "902a2c0e5882a2152da59a589958d6426dc84643",
      "parents": [
        "b84011508360d6885a9d95a235ec77d56f133377"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Oct 27 15:34:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:12 2010 -0700"
      },
      "message": "signals: move cred_guard_mutex from task_struct to signal_struct\n\nOleg Nesterov pointed out we have to prevent multiple-threads-inside-exec\nitself and we can reuse -\u003ecred_guard_mutex for it.  Yes, concurrent\nexecve() has no worth.\n\nLet\u0027s move -\u003ecred_guard_mutex from task_struct to signal_struct.  It\nnaturally prevent multiple-threads-inside-exec.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@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": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "d19d5476f4b9f91d2de92b91588bb118beba6c0d",
      "tree": "b267c225c2b7507f7e4900676649b20e56e06ba2",
      "parents": [
        "723548bff1dde9ab6bdb23f4bb92277c4da49473"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: fix locking for oom_adj and oom_score_adj\n\nThe locking order in oom_adjust_write() and oom_score_adj_write() for\ntask-\u003ealloc_lock and task-\u003esighand-\u003esiglock is reversed, and lockdep\nnotices that irqs could encounter an ABBA scenario.\n\nThis fixes the locking order so that we always take task_lock(task) prior\nto lock_task_sighand(task).\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@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": "723548bff1dde9ab6bdb23f4bb92277c4da49473",
      "tree": "7c4b97cb80003caae19a849e9ffb490be943bbf2",
      "parents": [
        "1e99bad0d9c12a4aaa60cd812c84ef152564bcf5"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 26 14:21:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: rewrite error handling for oom_adj and oom_score_adj tunables\n\nIt\u0027s better to use proper error handling in oom_adjust_write() and\noom_score_adj_write() instead of duplicating the locking order on various\nexit paths.\n\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@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": "3d5992d2ac7dc09aed8ab537cba074589f0f0a52",
      "tree": "0fbb51026e8aa13ddd7a6516c04471ceb97bc277",
      "parents": [
        "0f4d208f1975f16f269134cee5f44c1f048581da"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue Oct 26 14:21:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: add per-mm oom disable count\n\nIt\u0027s pointless to kill a task if another thread sharing its mm cannot be\nkilled to allow future memory freeing.  A subsequent patch will prevent\nkills in such cases, but first it\u0027s necessary to have a way to flag a task\nthat shares memory with an OOM_DISABLE task that doesn\u0027t incur an\nadditional tasklist scan, which would make select_bad_process() an O(n^2)\nfunction.\n\nThis patch adds an atomic counter to struct mm_struct that follows how\nmany threads attached to it have an oom_score_adj of OOM_SCORE_ADJ_MIN.\nThey cannot be killed by the kernel, so their memory cannot be freed in\noom conditions.\n\nThis only requires task_lock() on the task that we\u0027re operating on, it\ndoes not require mm-\u003emmap_sem since task_lock() pins the mm and the\noperation is atomic.\n\n[rientjes@google.com: changelog and sys_unshare() code]\n[rientjes@google.com: protect oom_disable_count with task_lock in fork]\n[rientjes@google.com: use old_mm for oom_disable_count in exec]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@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": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4a3956c790290efeb647bbb0c3a90476bb57800e",
      "tree": "18abb41325273d23ae271e49627f01054c5baeb6",
      "parents": [
        "ba10f486658c0ca1bc84c936f6a996e40d071453"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Oct 01 14:20:22 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:21 2010 -0400"
      },
      "message": "vfs: introduce FMODE_UNSIGNED_OFFSET for allowing negative f_pos\n\nNow, rw_verify_area() checsk f_pos is negative or not.  And if negative,\nreturns -EINVAL.\n\nBut, some special files as /dev/(k)mem and /proc/\u003cpid\u003e/mem etc..  has\nnegative offsets.  And we can\u0027t do any access via read/write to the\nfile(device).\n\nSo introduce FMODE_UNSIGNED_OFFSET to allow negative file offsets.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "3036e7b490bf7878c6dae952eec5fb87b1106589",
      "tree": "559270d71bd6e920bc39a8af360b54fb5753984d",
      "parents": [
        "f015ac3edd84ad72f88e08a4d83c56c360aae404"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Thu Sep 30 15:15:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 01 10:50:59 2010 -0700"
      },
      "message": "proc: make /proc/pid/limits world readable\n\nHaving the limits file world readable will ease the task of system\nmanagement on systems where root privileges might be restricted.\n\nHaving admin restricted with root priviledges, he/she could not check\nother users process\u0027 limits.\n\nAlso it\u0027d align with most of the /proc stat files.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Eugene Teo \u003ceugene@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": "8df9d1a4142311c084ffeeacb67cd34d190eff74",
      "tree": "512e018114ea506659fac73d838bfca0fb97a5a4",
      "parents": [
        "ffd1f4ed5bddccf2277e3d8525bcedf1983319f8"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:41 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:29:47 2010 -0400"
      },
      "message": "vfs: show unreachable paths in getcwd and proc\n\nPrepend \"(unreachable)\" to path strings if the path is not reachable\nfrom the current root.\n\nTwo places updated are\n - the return string from getcwd()\n - and symlinks under /proc/$PID.\n\nOther uses of d_path() are left unchanged (we know that some old\nsoftware crashes if /proc/mounts is changed).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f7ad3c6be90809b53b7f0ae9d4eaa45ce2564a79",
      "tree": "dc9b09188bab35320200f318b5e7b52f24dc43ad",
      "parents": [
        "542ce7a9bc6b3838832ae0f4f8de30c667af8ff3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:36 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:28:20 2010 -0400"
      },
      "message": "vfs: add helpers to get root and pwd\n\nAdd three helpers that retrieve a refcounted copy of the root and cwd\nfrom the supplied fs_struct.\n\n get_fs_root()\n get_fs_pwd()\n get_fs_root_and_pwd()\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "51b1bd2ace1595b72956224deda349efa880b693",
      "tree": "82732bb33d26379c05494dcdba8ea390ae0621db",
      "parents": [
        "a63d83f427fbce97a6cea0db2e64b0eb8435cd10"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:19:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: deprecate oom_adj tunable\n\n/proc/pid/oom_adj is now deprecated so that that it may eventually be\nremoved.  The target date for removal is August 2012.\n\nA warning will be printed to the kernel log if a task attempts to use this\ninterface.  Future warning will be suppressed until the kernel is rebooted\nto prevent spamming the kernel log.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a63d83f427fbce97a6cea0db2e64b0eb8435cd10",
      "tree": "8ac229cdf6e2289d97e82e35774057106fe7f4a2",
      "parents": [
        "74bcbf40546bb7500f2a7ba4ff3cc056a6bd004a"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:19:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: badness heuristic rewrite\n\nThis a complete rewrite of the oom killer\u0027s badness() heuristic which is\nused to determine which task to kill in oom conditions.  The goal is to\nmake it as simple and predictable as possible so the results are better\nunderstood and we end up killing the task which will lead to the most\nmemory freeing while still respecting the fine-tuning from userspace.\n\nInstead of basing the heuristic on mm-\u003etotal_vm for each task, the task\u0027s\nrss and swap space is used instead.  This is a better indication of the\namount of memory that will be freeable if the oom killed task is chosen\nand subsequently exits.  This helps specifically in cases where KDE or\nGNOME is chosen for oom kill on desktop systems instead of a memory\nhogging task.\n\nThe baseline for the heuristic is a proportion of memory that each task is\ncurrently using in memory plus swap compared to the amount of \"allowable\"\nmemory.  \"Allowable,\" in this sense, means the system-wide resources for\nunconstrained oom conditions, the set of mempolicy nodes, the mems\nattached to current\u0027s cpuset, or a memory controller\u0027s limit.  The\nproportion is given on a scale of 0 (never kill) to 1000 (always kill),\nroughly meaning that if a task has a badness() score of 500 that the task\nconsumes approximately 50% of allowable memory resident in RAM or in swap\nspace.\n\nThe proportion is always relative to the amount of \"allowable\" memory and\nnot the total amount of RAM systemwide so that mempolicies and cpusets may\noperate in isolation; they shall not need to know the true size of the\nmachine on which they are running if they are bound to a specific set of\nnodes or mems, respectively.\n\nRoot tasks are given 3% extra memory just like __vm_enough_memory()\nprovides in LSMs.  In the event of two tasks consuming similar amounts of\nmemory, it is generally better to save root\u0027s task.\n\nBecause of the change in the badness() heuristic\u0027s baseline, it is also\nnecessary to introduce a new user interface to tune it.  It\u0027s not possible\nto redefine the meaning of /proc/pid/oom_adj with a new scale since the\nABI cannot be changed for backward compatability.  Instead, a new tunable,\n/proc/pid/oom_score_adj, is added that ranges from -1000 to +1000.  It may\nbe used to polarize the heuristic such that certain tasks are never\nconsidered for oom kill while others may always be considered.  The value\nis added directly into the badness() score so a value of -500, for\nexample, means to discount 50% of its memory consumption in comparison to\nother tasks either on the system, bound to the mempolicy, in the cpuset,\nor sharing the same memory controller.\n\n/proc/pid/oom_adj is changed so that its meaning is rescaled into the\nunits used by /proc/pid/oom_score_adj, and vice versa.  Changing one of\nthese per-task tunables will rescale the value of the other to an\nequivalent meaning.  Although /proc/pid/oom_adj was originally defined as\na bitshift on the badness score, it now shares the same linear growth as\n/proc/pid/oom_score_adj but with different granularity.  This is required\nso the ABI is not broken with userspace applications and allows oom_adj to\nbe deprecated for future removal.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74bcbf40546bb7500f2a7ba4ff3cc056a6bd004a",
      "tree": "39411d83f448da818368043af9b52e9b405a2002",
      "parents": [
        "cef1d3523d33ebc35fc29e454b1f4bab953fabbf"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Aug 09 17:19:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: move badness() declaration into oom.h\n\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "26ebc984913b6a8d86d724b3a79d2ed4ed574612",
      "tree": "9d293c6f8b1bc5120beaa173590dcd83cd0e2eb0",
      "parents": [
        "f88ccad5886d5a864b8b0d48c666ee9998dec53f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: /proc/\u003cpid\u003e/oom_score treat kernel thread honestly\n\nIf a kernel thread is using use_mm(), badness() returns a positive value.\nThis is not a big issue because caller take care of it correctly.  But\nthere is one exception, /proc/\u003cpid\u003e/oom_score calls badness() directly and\ndoesn\u0027t care that the task is a regular process.\n\nAnother example, /proc/1/oom_score return !0 value.  But it\u0027s unkillable.\nThis incorrectness makes administration a little confusing.\n\nThis patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "73d3646029138743989b6c213628484301a72eb1",
      "tree": "1df20844702dbf7d8d014ae08bdb479a8350533f",
      "parents": [
        "b3ac022cb9dc5883505a88b159d1b240ad1ef405"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Wed May 26 14:43:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:47 2010 -0700"
      },
      "message": "proc: cleanup: remove unused assignments\n\nI removed 3 unused assignments.  The first two get reset on the first\nstatement of their functions.  For \"err\" in root.c we don\u0027t return an\nerror and we don\u0027t use the variable again.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nReviewed-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": "7e49827cc937a742ae02078b483e3eb78f791a2a",
      "tree": "0f3e0a8483a41b2221c74b8286b2349af03dab04",
      "parents": [
        "6e1be45aa6ba6a36c0312f65ecf311135c73001d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:22 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:47 2010 -0700"
      },
      "message": "proc: get_nr_threads() doesn\u0027t need -\u003esiglock any longer\n\nNow that task-\u003esignal can\u0027t go away get_nr_threads() doesn\u0027t need\n-\u003esiglock to read signal-\u003ecount.\n\nAlso, make it inline, move into sched.h, and convert 2 other proc users of\nsignal-\u003ecount to use this (now trivial) helper.\n\nHenceforth get_nr_threads() is the only valid user of signal-\u003ecount, we\nare ready to turn it into \"int nr_threads\" or, perhaps, kill it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "98c89cdd3a292af3451e47a2a33132f5183861b0",
      "tree": "cfad77bcfd2d04fb0b9326a859803a1ab90b0757",
      "parents": [
        "164d44fd92e79d5bce54d0d62df9f856f7b23925",
        "99df95a22f7cfcf85405d4edc07c2d953542f0dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:23:28 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:23:28 2010 -0700"
      },
      "message": "Merge branch \u0027bkl/procfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027bkl/procfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  sunrpc: Include missing smp_lock.h\n  procfs: Kill the bkl in ioctl\n  procfs: Push down the bkl from ioctl\n  procfs: Use generic_file_llseek in /proc/vmcore\n  procfs: Use generic_file_llseek in /proc/kmsg\n  procfs: Use generic_file_llseek in /proc/kcore\n  procfs: Kill BKL in llseek on proc base\n"
    },
    {
      "commit": "3835541dd481091c4dbf5ef83c08aed12e50fd61",
      "tree": "bb40567215e394392ed0167867a0bf2a5916a583",
      "parents": [
        "9e584fbbd9fd4f0f10b8aafc9982df8d0b553e35"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Tue Apr 27 13:13:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 27 16:26:03 2010 -0700"
      },
      "message": "procfs: fix tid fdinfo\n\nCorrect the file_operations struct in fdinfo entry of tid_base_stuff[].\n\nPresently /proc/*/task/*/fdinfo contains symlinks to opened files like\n/proc/*/fd/.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87df842410ce5a86fdca9fbec0dba80d2aa88b6f",
      "tree": "e8d311184e8f2695a961935882ad5269724fce04",
      "parents": [
        "2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Mar 17 23:06:02 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Apr 09 16:29:12 2010 +0200"
      },
      "message": "procfs: Kill BKL in llseek on proc base\n\nWe don\u0027t use the BKL elsewhere, so use generic_file_llseek\nso we can avoid default_llseek taking the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n[restore proc_fdinfo_file_operations as non-seekable]\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\n"
    },
    {
      "commit": "336f5899d287f06d8329e208fc14ce50f7ec9698",
      "tree": "9b762d450d5eb248a6ff8317badb7e223d93ed58",
      "parents": [
        "a4ab2773205e8b94c18625455f85e3b6bb9d7ad6",
        "db217dece3003df0841bacf9556b5c06aa097dae"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 05 11:37:28 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 05 11:37:28 2010 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into export-slabh\n"
    },
    {
      "commit": "b95c35e76b29ba812e5dabdd91592e25ec640e93",
      "tree": "9584cf21e47baec986f5dc5455081e8538126be1",
      "parents": [
        "30d1872d9eb3663b4cf7bdebcbf5cd465674cced"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 01 15:13:57 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 01 08:50:21 2010 -0700"
      },
      "message": "oom: fix the unsafe usage of badness() in proc_oom_score()\n\nproc_oom_score(task) has a reference to task_struct, but that is all.\nIf this task was already released before we take tasklist_lock\n\n\t- we can\u0027t use task-\u003egroup_leader, it points to nowhere\n\n\t- it is not safe to call badness() even if this task is\n\t  -\u003egroup_leader, has_intersects_mems_allowed() assumes\n\t  it is safe to iterate over -\u003ethread_group list.\n\n\t- even worse, badness() can hit -\u003esignal \u003d\u003d NULL\n\nAdd the pid_alive() check to ensure __unhash_process() was not called.\n\nAlso, use \"task\" instead of task-\u003egroup_leader. badness() should return\nthe same result for any sub-thread. Currently this is not true, but\nthis should be changed anyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "0f2cc4ecd81dc1917a041dc93db0ada28f8356fa",
      "tree": "f128b50f48f50f0cda6d2b20b53e9ad6e2dfded3",
      "parents": [
        "1fae4cfb97302289bb5df6a8195eb28385d0b002",
        "9643f5d94aadd47a5fa9754fb60f2c957de05903"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 04 08:15:33 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 04 08:15:33 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  init: Open /dev/console from rootfs\n  mqueue: fix typo \"failues\" -\u003e \"failures\"\n  mqueue: only set error codes if they are really necessary\n  mqueue: simplify do_open() error handling\n  mqueue: apply mathematics distributivity on mq_bytes calculation\n  mqueue: remove unneeded info-\u003emessages initialization\n  mqueue: fix mq_open() file descriptor leak on user-space processes\n  fix race in d_splice_alias()\n  set S_DEAD on unlink() and non-directory rename() victims\n  vfs: add NOFOLLOW flag to umount(2)\n  get rid of -\u003emnt_parent in tomoyo/realpath\n  hppfs can use existing proc_mnt, no need for do_kern_mount() in there\n  Mirror MS_KERNMOUNT in -\u003emnt_flags\n  get rid of useless vfsmount_lock use in put_mnt_ns()\n  Take vfsmount_lock to fs/internal.h\n  get rid of insanity with namespace roots in tomoyo\n  take check for new events in namespace (guts of mounts_poll()) to namespace.c\n  Don\u0027t mess with generic_permission() under -\u003ed_lock in hpfs\n  sanitize const/signedness for udf\n  nilfs: sanitize const/signedness in dealing with -\u003ed_name.name\n  ...\n\nFix up fairly trivial (famous last words...) conflicts in\ndrivers/infiniband/core/uverbs_main.c and security/tomoyo/realpath.c\n"
    },
    {
      "commit": "9f5596af44514f99e3a654a4f7cb813354b9e516",
      "tree": "6a579bf387683b910bd32e8aa7edef9956e58dd1",
      "parents": [
        "e21e7095a78867364d7aa9223d833ccb966f93f3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 05 00:40:25 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:59 2010 -0500"
      },
      "message": "take check for new events in namespace (guts of mounts_poll()) to namespace.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7dc52157982ab771f40e3c0b7dc55b954c3c2d19",
      "tree": "a41e39174d9535f0c678eb36249ceee4a1775d6b",
      "parents": [
        "497f0ab39cd25bed317b29482c147c967f7ecd1f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:52 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 10:34:48 2010 +0100"
      },
      "message": "vfs: Apply lockdep-based checking to rcu_dereference() uses\n\nAdd lockdep-ified RCU primitives to alloc_fd(), files_fdtable()\nand fcheck_files().\n\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nLKML-Reference: \u003c1266887105-1528-8-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7fee4868be91e71a3ee8e57289ebf5e10a12297e",
      "tree": "b2bdbfa885e60fb1c04c2b5fca30ba5fa150fecd",
      "parents": [
        "ac278a9c505092dd82077a2446af8f9fc0d9c095"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 14 01:03:28 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 19 10:25:41 2010 -0500"
      },
      "message": "Switch proc/self to nd_set_link()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "86acdca1b63e6890540fa19495cfc708beff3d8b",
      "tree": "f589566363ef4f77098eba9ced48325f410168e6",
      "parents": [
        "004b35063296b6772fa72404a35b498f1e71e87e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 22 23:45:11 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 14 09:05:25 2010 -0500"
      },
      "message": "fix autofs/afs/etc. magic mountpoint breakage\n\nWe end up trying to kfree() nd.last.name on open(\"/mnt/tmp\", O_CREAT)\nif /mnt/tmp is an autofs direct mount.  The reason is that nd.last_type\nis bogus here; we want LAST_BIND for everything of that kind and we\nget LAST_NORM left over from finding parent directory.\n\nSo make sure that it *is* set properly; set to LAST_BIND before\ndoing -\u003efollow_link() - for normal symlinks it will be changed\nby __vfs_follow_link() and everything else needs it set that way.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "698ba7b5a3a7be772922340fade365c675b8243f",
      "tree": "3e251d4ee8cbd8489d75e7570b2d821395021d59",
      "parents": [
        "d1da96aada79fd1d29ae4e3157120d1ce1e77594"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 15 16:47:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:12 2009 -0800"
      },
      "message": "elf: kill USE_ELF_CORE_DUMP\n\nCurrently all architectures but microblaze unconditionally define\nUSE_ELF_CORE_DUMP.  The microblaze omission seems like an error to me, so\nlet\u0027s kill this ifdef and make sure we are the same everywhere.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Michal Simek \u003cmichal.simek@petalogix.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4614a696bd1c3a9af3a08f0e5874830a85b889d4",
      "tree": "0b363d89ce612ab8557d49ab8b0f49b8520ffa66",
      "parents": [
        "7e1e0ef22c9ba9f797d7c4448feee722584bba5c"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Dec 14 18:00:05 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "procfs: allow threads to rename siblings via /proc/pid/tasks/tid/comm\n\nSetting a thread\u0027s comm to be something unique is a very useful ability\nand is helpful for debugging complicated threaded applications.  However\ncurrently the only way to set a thread name is for the thread to name\nitself via the PR_SET_NAME prctl.\n\nHowever, there may be situations where it would be advantageous for a\nthread dispatcher to be naming the threads its managing, rather then\nhaving the threads self-describe themselves.  This sort of behavior is\navailable on other systems via the pthread_setname_np() interface.\n\nThis patch exports a task\u0027s comm via proc/pid/comm and\nproc/pid/task/tid/comm interfaces, and allows thread siblings to write to\nthese values.\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Mike Fulton \u003cfultonm@ca.ibm.com\u003e\nCc: Sean Foley \u003cSean_Foley@ca.ibm.com\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.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": "29f12ca32122db98481150be09d35bd72b68045e",
      "tree": "df2bbe3d67451a6c51a5056a40cd8dfa09dd5b29",
      "parents": [
        "15f3c476589c8778b0c10f1fb5160f9107c69556"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@linux.vnet.ibm.com",
        "time": "Wed Nov 11 14:26:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 12 07:25:57 2009 -0800"
      },
      "message": "pidns: fix a leak in /proc dentries and inodes with pid namespaces.\n\nDaniel Lezcano reported a leak in \u0027struct pid\u0027 and \u0027struct pid_namespace\u0027\nthat is discussed in:\n\n\thttp://lkml.org/lkml/2009/10/2/159.\n\nTo summarize the thread, when container-init is terminated, it sets the\nPF_EXITING flag, zaps other processes in the container and waits to reap\nthem.  As a part of reaping, the container-init should flush any /proc\ndentries associated with the processes.  But because the container-init is\nitself exiting and the following PF_EXITING check, the dentries are not\nflushed, resulting in leak in /proc inodes and dentries.\n\nThis fix reverts the commit 7766755a2f249e7e0 (\"Fix /proc dcache deadlock\nin do_exit\") which introduced the check for PF_EXITING.  At the time of\nthe commit, shrink_dcache_parent() flushed dentries from other filesystems\nalso and could have caused a deadlock which the commit fixed.  But as\npointed out by Eric Biederman, after commit 0feae5c47aabdde59,\nshrink_dcache_parent() no longer affects other filesystems.  So reverting\nthe commit is now safe.\n\nAs pointed out by Jan Kara, the leak is not as critical since the\nunclaimed space will be reclaimed under memory pressure or by:\n\n\techo 3 \u003e /proc/sys/vm/drop_caches\n\nBut since this check is no longer required, its best to remove it.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nReported-by: Daniel Lezcano \u003cdlezcano@fr.ibm.com\u003e\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Jan Kara \u003cjack@ucw.cz\u003e\nCc: Andrea Arcangeli \u003candrea@cpushare.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cba8aafe1e07dfc8bae5ba78be8e02883bd34d31",
      "tree": "473586963e635921613db5e4ae8ac339ae497a18",
      "parents": [
        "fb92a4b068be96799da3748c11cbd69760e44d7b"
      ],
      "author": {
        "name": "Vincent Li",
        "email": "macli@brc.ubc.ca",
        "time": "Tue Sep 22 16:45:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:40 2009 -0700"
      },
      "message": "fs/proc/base.c: fix proc_fault_inject_write() input sanity check\n\nRemove obfuscated zero-length input check and return -EINVAL instead of\n-EIO error to make the error message clear to user.  Add whitespace\nstripping.  No functionality changes.\n\nThe old code:\n\necho  1  \u003e /proc/pid/make-it-fail (ok)\necho 1foo \u003e /proc/pid/make-it-fail (-bash: echo: write error: Input/output error)\n\nThe new code:\n\necho  1  \u003e /proc/pid/make-it-fail (ok)\necho 1foo \u003e /proc/pid/make-it-fail (-bash: echo: write error: Invalid argument)\n\nThis patch is conservative in changes to not breaking existing\nscripts/applications.\n\nSigned-off-by: Vincent Li \u003cmacli@brc.ubc.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b4d1cbef8f41aff2b3e4ca31f566c071fe601de",
      "tree": "fc64d537b5142646d917ad928e3fb1df4caf4655",
      "parents": [
        "cff4edb591c153a779a27a3fd8e7bc1217f2f6b8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Sep 22 16:45:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:40 2009 -0700"
      },
      "message": "proc_flush_task: flush /proc/tid/task/pid when a sub-thread exits\n\nThe exiting sub-thread flushes /proc/pid only, but this doesn\u0027t buy too\nmuch: ps and friends mostly use /proc/tid/task/pid.\n\nRemove \"if (thread_group_leader())\" checks from proc_flush_task() path,\nthis means we always remove /proc/tid/task/pid dentry on exit, and this\nactually matches the comment above proc_flush_task().\n\nThe test-case:\n\n\tstatic void* tfunc(void *arg)\n\t{\n\t\tchar name[256];\n\n\t\tsprintf(name, \"/proc/%d/task/%ld/status\", getpid(), gettid());\n\t\tclose(open(name, O_RDONLY));\n\n\t\treturn NULL;\n\t}\n\n\tint main(void)\n\t{\n\t\tpthread_t t;\n\n\t\tfor (;;) {\n\t\t\tif (!pthread_create(\u0026t, NULL, \u0026tfunc, NULL))\n\t\t\t\tpthread_join(t, NULL);\n\t\t}\n\t}\n\nslabtop shows that pid/proc_inode_cache/etc grow quickly and\n\"indefinitely\" until the task is killed or shrink_slab() is called, not\ngood.  And the main thread needs a lot of time to exit.\n\nThe same can happen if something like \"ps -efL\" runs continuously, while\nsome application spawns short-living threads.\n\nReported-by: \"James M. Leddy\" \u003cjleddy@redhat.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Dominic Duval \u003cdduval@redhat.com\u003e\nCc: Frank Hirtz \u003cfhirtz@redhat.com\u003e\nCc: \"Fuller, Johnray\" \u003cJohnray.Fuller@gs.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Paul Batkowski \u003cpbatkowski@redhat.com\u003e\nCc: Roland McGrath \u003croland@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": "cff4edb591c153a779a27a3fd8e7bc1217f2f6b8",
      "tree": "664f2a20cd0ae38ef06a2f8cc59e5ffca13e5d8b",
      "parents": [
        "27f6cb160b71b342b7a47d28a4b6c422ea74ccd1"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "kees.cook@canonical.com",
        "time": "Tue Sep 22 16:45:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:40 2009 -0700"
      },
      "message": "proc: fix reported unit for RLIMIT_CPU\n\n/proc/$pid/limits should show RLIMIT_CPU as seconds, which is the unit\nused in kernel/posix-cpu-timers.c:\n\n        unsigned long psecs \u003d cputime_to_secs(ptime);\n        ...\n        if (psecs \u003e\u003d sig-\u003erlim[RLIMIT_CPU].rlim_max) {\n                ...\n                __group_send_sig_info(SIGKILL, SEND_SIG_PRIV, tsk);\n\nSigned-off-by: Kees Cook \u003ckees.cook@canonical.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5d863b89688e5811cd9e5bd0082cb38abe03adf3",
      "tree": "6041584a854fc70cd497843f134e2cf983741230",
      "parents": [
        "8c5cd6f3a1721085652da204d454af4f8b92eda2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: fix oom_adjust_write() input sanity check\n\nAndrew Morton pointed out oom_adjust_write() has very strange EIO\nand new line handling. this patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "495789a51a91cb8c015d8d77fecbac1caf20b186",
      "tree": "ac2a71ed40ed84f5673326aa6bf7f278b54d989a",
      "parents": [
        "28b83c5193e7ab951e402252278f2cc79dc4d298"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: make oom_score to per-process value\n\noom-killer kills a process, not task.  Then oom_score should be calculated\nas per-process too.  it makes consistency more and makes speed up\nselect_bad_process().\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "28b83c5193e7ab951e402252278f2cc79dc4d298",
      "tree": "10080e8d3957c2a03f8419ab44c9ecb0ffcdaee0",
      "parents": [
        "f168e1b6390e2d79cf57e48e6ae6d9b0a9e2851a"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: move oom_adj value from task_struct to signal_struct\n\nCurrently, OOM logic callflow is here.\n\n    __out_of_memory()\n        select_bad_process()            for each task\n            badness()                   calculate badness of one task\n                oom_kill_process()      search child\n                    oom_kill_task()     kill target task and mm shared tasks with it\n\nexample, process-A have two thread, thread-A and thread-B and it have very\nfat memory and each thread have following oom_adj and oom_score.\n\n     thread-A: oom_adj \u003d OOM_DISABLE, oom_score \u003d 0\n     thread-B: oom_adj \u003d 0,           oom_score \u003d very-high\n\nThen, select_bad_process() select thread-B, but oom_kill_task() refuse\nkill the task because thread-A have OOM_DISABLE.  Thus __out_of_memory()\ncall select_bad_process() again.  but select_bad_process() select the same\ntask.  It mean kernel fall in livelock.\n\nThe fact is, select_bad_process() must select killable task.  otherwise\nOOM logic go into livelock.\n\nAnd root cause is, oom_adj shouldn\u0027t be per-thread value.  it should be\nper-process value because OOM-killer kill a process, not thread.  Thus\nThis patch moves oomkilladj (now more appropriately named oom_adj) from\nstruct task_struct to struct signal_struct.  it naturally prevent\nselect_bad_process() choose wrong task.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.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": "0753ba01e126020bf0f8150934903b48935b697d",
      "tree": "fbfd7e2d0abbe724a8c5e0e17fb9af522ed2e097",
      "parents": [
        "89a4eb4b66e8f4d395e14a14d262dac4d6ca52f0"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 18 14:11:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 18 16:31:13 2009 -0700"
      },
      "message": "mm: revert \"oom: move oom_adj value\"\n\nThe commit 2ff05b2b (oom: move oom_adj value) moveed the oom_adj value to\nthe mm_struct.  It was a very good first step for sanitize OOM.\n\nHowever Paul Menage reported the commit makes regression to his job\nscheduler.  Current OOM logic can kill OOM_DISABLED process.\n\nWhy? His program has the code of similar to the following.\n\n\t...\n\tset_oom_adj(OOM_DISABLE); /* The job scheduler never killed by oom */\n\t...\n\tif (vfork() \u003d\u003d 0) {\n\t\tset_oom_adj(0); /* Invoked child can be killed */\n\t\texecve(\"foo-bar-cmd\");\n\t}\n\t....\n\nvfork() parent and child are shared the same mm_struct.  then above\nset_oom_adj(0) doesn\u0027t only change oom_adj for vfork() child, it\u0027s also\nchange oom_adj for vfork() parent.  Then, vfork() parent (job scheduler)\nlost OOM immune and it was killed.\n\nActually, fork-setting-exec idiom is very frequently used in userland program.\nWe must not break this assumption.\n\nThen, this patch revert commit 2ff05b2b and related commit.\n\nReverted commit list\n---------------------\n- commit 2ff05b2b4e (oom: move oom_adj value from task_struct to mm_struct)\n- commit 4d8b9135c3 (oom: avoid unnecessary mm locking and scanning for OOM_DISABLE)\n- commit 8123681022 (oom: only oom kill exiting tasks with attached memory)\n- commit 933b787b57 (mm: copy over oom_adj value at fork time)\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "704b836cbf19e885f8366bccb2e4b0474346c02d",
      "tree": "d0513d3ef70e1b875cd7786f94150ba2428b6a88",
      "parents": [
        "00f89d218523b9bf6b522349c039d5ac80aa536d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 10 03:27:40 2009 +0200"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Aug 10 20:49:26 2009 +1000"
      },
      "message": "mm_for_maps: take -\u003ecred_guard_mutex to fix the race with exec\n\nThe problem is minor, but without -\u003ecred_guard_mutex held we can race\nwith exec() and get the new -\u003emm but check old creds.\n\nNow we do not need to re-check task-\u003emm after ptrace_may_access(), it\ncan\u0027t be changed to the new mm under us.\n\nStrictly speaking, this also fixes another very minor problem. Unless\nsecurity check fails or the task exits mm_for_maps() should never\nreturn NULL, the caller should get either old or new -\u003emm.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "00f89d218523b9bf6b522349c039d5ac80aa536d",
      "tree": "cde7a8bde2798e4fb3ae28756f6cedd4db9191cc",
      "parents": [
        "13f0feafa6b8aead57a2a328e2fca6a5828bf286"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 10 03:27:38 2009 +0200"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Aug 10 20:48:32 2009 +1000"
      },
      "message": "mm_for_maps: shift down_read(mmap_sem) to the caller\n\nmm_for_maps() takes -\u003emmap_sem after security checks, this looks\nstrange and obfuscates the locking rules. Move this lock to its\nsingle caller, m_start().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "13f0feafa6b8aead57a2a328e2fca6a5828bf286",
      "tree": "fb396118339319406daf7f6782782eaef31b3b53",
      "parents": [
        "f4b9a988685da6386d7f9a72df3098bcc3270526"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jun 23 21:25:32 2009 +0200"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Aug 10 20:47:42 2009 +1000"
      },
      "message": "mm_for_maps: simplify, use ptrace_may_access()\n\nIt would be nice to kill __ptrace_may_access(). It requires task_lock(),\nbut this lock is only needed to read mm-\u003eflags in the middle.\n\nConvert mm_for_maps() to use ptrace_may_access(), this also simplifies\nthe code a little bit.\n\nAlso, we do not need to take -\u003emmap_sem in advance. In fact I think\nmm_for_maps() should not play with -\u003emmap_sem at all, the caller should\ntake this lock.\n\nWith or without this patch, without -\u003ecred_guard_mutex held we can race\nwith exec() and get the new -\u003emm but check old creds.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "2ff05b2b4eac2e63d345fc731ea151a060247f53",
      "tree": "1840bc2d3b381eca5d39869499339b0fcc6eabbf",
      "parents": [
        "c9e444103b5e7a5a3519f9913f59767f92e33baf"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jun 16 15:32:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:43 2009 -0700"
      },
      "message": "oom: move oom_adj value from task_struct to mm_struct\n\nThe per-task oom_adj value is a characteristic of its mm more than the\ntask itself since it\u0027s not possible to oom kill any thread that shares the\nmm.  If a task were to be killed while attached to an mm that could not be\nfreed because another thread were set to OOM_DISABLE, it would have\nneedlessly been terminated since there is no potential for future memory\nfreeing.\n\nThis patch moves oomkilladj (now more appropriately named oom_adj) from\nstruct task_struct to struct mm_struct.  This requires task_lock() on a\ntask to check its oom_adj value to protect against exec, but it\u0027s already\nnecessary to take the lock when dereferencing the mm to find the total VM\nsize for the badness heuristic.\n\nThis fixes a livelock if the oom killer chooses a task and another thread\nsharing the same memory has an oom_adj value of OOM_DISABLE.  This occurs\nbecause oom_kill_task() repeatedly returns 1 and refuses to kill the\nchosen task while select_bad_process() will repeatedly choose the same\ntask during the next retry.\n\nTaking task_lock() in select_bad_process() to check for OOM_DISABLE and in\noom_kill_task() to check for threads sharing the same memory will be\nremoved in the next patch in this series where it will no longer be\nnecessary.\n\nWriting to /proc/pid/oom_adj for a kthread will now return -EINVAL since\nthese threads are immune from oom killing already.  They simply report an\noom_adj value of OOM_DISABLE.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "0b4ec6e4e01d98e55ae325a41304cccd87fa4c0f",
      "tree": "1e075fdf4aaf0c5c003564b3f3414bb4a92ef2ed",
      "parents": [
        "04288f42033607099cebf5ca15ce8dcec3a9688b",
        "3af968e066d593bc4dacc021715f3e95ddf0996f"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Jun 09 09:27:53 2009 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Jun 09 09:27:53 2009 +1000"
      },
      "message": "Merge branch \u0027master\u0027 into next\n"
    },
    {
      "commit": "bd6daba909d8484bd2ccf6017db4028d7a420927",
      "tree": "e5c5fa2ddb9b3658a24c15ca4050c71f68dc634f",
      "parents": [
        "b2e1feaf0af6b8a826b86748a19ddc2013ab7dbd"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 28 14:34:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 29 08:40:02 2009 -0700"
      },
      "message": "procfs: make errno values consistent when open pident vs exit(2) race occurs\n\nproc_pident_instantiate() has following call flow.\n\nproc_pident_lookup()\n  proc_pident_instantiate()\n    proc_pid_make_inode()\n\nAnd, proc_pident_lookup() has following error handling.\n\n\tconst struct pid_entry *p, *last;\n\terror \u003d ERR_PTR(-ENOENT);\n\tif (!task)\n\t\tgoto out_no_task;\n\nThen, proc_pident_instantiate should return ENOENT too when racing against\nexit(2) occur.\n\nEINAL has two bad reason.\n  - it implies caller is wrong. bad the race isn\u0027t caller\u0027s mistake.\n  - man 2 open don\u0027t explain EINVAL. user often don\u0027t handle it.\n\nNote: Other proc_pid_make_inode() caller already use ENOENT properly.\n\nAcked-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-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": "107db7c7dd137aeb7361b8c2606ac936c0be58ff",
      "tree": "7e8e024bbed52ac111a0b2ac878da1a95752c28b",
      "parents": [
        "5e751e992f3fb08ba35e1ca8095ec8fbf9eda523"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri May 08 13:55:27 2009 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon May 11 08:15:39 2009 +1000"
      },
      "message": "CRED: Guard the setprocattr security hook against ptrace\n\nGuard the setprocattr security hook against ptrace by taking the target task\u0027s\ncred_guard_mutex around it.  The problem is that setprocattr() may otherwise\nnote the lack of a debugger, and then perform an action on that basis whilst\nletting a debugger attach between the two points.  Holding cred_guard_mutex\nacross the test and the action prevents ptrace_attach() from doing that.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "f83ce3e6b02d5e48b3a43b001390e2b58820389d",
      "tree": "71c57abf4f9d259f5bfa22deaf724db85738f862",
      "parents": [
        "7fdf523067666b0eaff330f362401ee50ce187c4"
      ],
      "author": {
        "name": "Jake Edge",
        "email": "jake@lwn.net",
        "time": "Mon May 04 12:51:14 2009 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 04 15:14:23 2009 -0700"
      },
      "message": "proc: avoid information leaks to non-privileged processes\n\nBy using the same test as is used for /proc/pid/maps and /proc/pid/smaps,\nonly allow processes that can ptrace() a given process to see information\nthat might be used to bypass address space layout randomization (ASLR).\nThese include eip, esp, wchan, and start_stack in /proc/pid/stat as well\nas the non-symbolic output from /proc/pid/wchan.\n\nASLR can be bypassed by sampling eip as shown by the proof-of-concept\ncode at http://code.google.com/p/fuzzyaslr/ As part of a presentation\n(http://www.cr0.org/paper/to-jt-linux-alsr-leak.pdf) esp and wchan were\nalso noted as possibly usable information leaks as well.  The\nstart_stack address also leaks potentially useful information.\n\nCc: Stable Team \u003cstable@kernel.org\u003e\nSigned-off-by: Jake Edge \u003cjake@lwn.net\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31b07093c44a7a442394d44423e21d783f5523b8",
      "tree": "8569f8450dd2e7560a36a751faeee8d402c031ca",
      "parents": [
        "1af3557abdef34ee036a6de4cb79e24468544b8d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Apr 09 13:57:59 2009 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Apr 16 16:17:10 2009 -0700"
      },
      "message": "proc: mounts_poll() make consistent to mdstat_poll\n\nIn recently sysfs_poll discussion, Neil Brown pointed out /proc/mounts\nalso should be fixed.\n\nSUSv3 says \"Regular files shall always poll TRUE for reading and\nwriting\".  see\nhttp://www.opengroup.org/onlinepubs/009695399/functions/poll.html\n\nThen, mounts_poll()\u0027s default should be \"POLLIN | POLLRDNORM\".  it mean\nalways readable.\n\nIn addition, event trigger should use \"POLLERR | POLLPRI\" instead\nPOLLERR.  it makes consistent to mdstat_poll() and sysfs_poll(). and,\nselect(2) can handle POLLPRI easily.\n\n\nReported-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5ad4e53bd5406ee214ddc5a41f03f779b8b2d526",
      "tree": "b3dab5140284b3edf02bf2b13f74bfddb25aa62a",
      "parents": [
        "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:50:06 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Get rid of indirect include of fs_struct.h\n\nDon\u0027t pull it in sched.h; very few files actually need it and those\ncan include directly.  sched.h itself only needs forward declaration\nof struct fs_struct;\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7c2c7d993044cddc5010f6f429b100c63bc7dffb",
      "tree": "b92a6daf7c11f9a53de6fed07512fe02cd5b4a68",
      "parents": [
        "e426b64c412aaa3e9eb3e4b261dc5be0d5a83e78"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Mar 28 23:21:27 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 28 17:30:00 2009 -0700"
      },
      "message": "fix setuid sometimes wouldn\u0027t\n\ncheck_unsafe_exec() also notes whether the fs_struct is being\nshared by more threads than will get killed by the exec, and if so\nsets LSM_UNSAFE_SHARE to make bprm_set_creds() careful about euid.\nBut /proc/\u003cpid\u003e/cwd and /proc/\u003cpid\u003e/root lookups make transient\nuse of get_fs_struct(), which also raises that sharing count.\n\nThis might occasionally cause a setuid program not to change euid,\nin the same way as happened with files-\u003ecount (check_unsafe_exec\nalso looks at sighand-\u003ecount, but /proc doesn\u0027t raise that one).\n\nWe\u0027d prefer exec not to unshare fs_struct: so fix this in procfs,\nreplacing get_fs_struct() by get_fs_path(), which does path_get\nwhile still holding task_lock, instead of raising fs-\u003ecount.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: stable@kernel.org\n___\n\n fs/proc/base.c |   50 +++++++++++++++--------------------------------\n 1 file changed, 16 insertions(+), 34 deletions(-)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d72f71eb0edd629c95715aa7305b0259d3581e34",
      "tree": "f7f96de5c94ffae797b9b8e41939c8bdeb0ecb81",
      "parents": [
        "5a3fd05a9bb2f104020fbfc4551ad4aaed4660a4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 20 05:58:47 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:44:01 2009 -0400"
      },
      "message": "constify dentry_operations: procfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee568b25ee9e160b32d1aef73d8b2ee9c05d34db",
      "tree": "a29f070d82e6f787570213161c4c46c16ca6ef8a",
      "parents": [
        "30390880debce4a68fd23e87a787f27609e4bf4a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 17 10:02:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 17 10:02:35 2009 -0700"
      },
      "message": "Avoid 64-bit \"switch()\" statements on 32-bit architectures\n\nCommit ee6f779b9e0851e2f7da292a9f58e0095edf615a (\"filp-\u003ef_pos not\ncorrectly updated in proc_task_readdir\") changed the proc code to use\nfilp-\u003ef_pos directly, rather than through a temporary variable.  In the\nprocess, that caused the operations to be done on the full 64 bits, even\nthough the offset is never that big.\n\nThat\u0027s all fine and dandy per se, but for some unfathomable reason gcc\ngenerates absolutely horrid code when using 64-bit values in switch()\nstatements.  To the point of actually calling out to gcc helper\nfunctions like __cmpdi2 rather than just doing the trivial comparisons\ndirectly the way gcc does for normal compares.  At which point we get\nlink failures, because we really don\u0027t want to support that kind of\ncrazy code.\n\nFix this by just casting the f_pos value to \"unsigned long\", which\nis plenty big enough for /proc, and avoids the gcc code generation issue.\n\nReported-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Zhang Le \u003cr0bertz@gentoo.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee6f779b9e0851e2f7da292a9f58e0095edf615a",
      "tree": "71aa57da0fea292c50b12d9ef73373fcd940162e",
      "parents": [
        "5bee17f18b595937e6beafeee5197868a3f74a06"
      ],
      "author": {
        "name": "Zhang Le",
        "email": "r0bertz@gentoo.org",
        "time": "Mon Mar 16 14:44:31 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 16 07:51:33 2009 -0700"
      },
      "message": "filp-\u003ef_pos not correctly updated in proc_task_readdir\n\nfilp-\u003ef_pos only get updated at the end of the function. Thus d_off of those\ndirents who are in the middle will be 0, and this will cause a problem in\nglibc\u0027s readdir implementation, specifically endless loop. Because when overflow\noccurs, f_pos will be set to next dirent to read, however it will be 0, unless\nthe next one is the last one. So it will start over again and again.\n\nThere is a sample program in man 2 gendents. This is the output of the program\nrunning on a multithread program\u0027s task dir before this patch is applied:\n\n  $ ./a.out /proc/3807/task\n  --------------- nread\u003d128 ---------------\n  i-node#  file type  d_reclen  d_off   d_name\n    506442  directory    16          1  .\n    506441  directory    16          0  ..\n    506443  directory    16          0  3807\n    506444  directory    16          0  3809\n    506445  directory    16          0  3812\n    506446  directory    16          0  3861\n    506447  directory    16          0  3862\n    506448  directory    16          8  3863\n\nThis is the output after this patch is applied\n\n  $ ./a.out /proc/3807/task\n  --------------- nread\u003d128 ---------------\n  i-node#  file type  d_reclen  d_off   d_name\n    506442  directory    16          1  .\n    506441  directory    16          2  ..\n    506443  directory    16          3  3807\n    506444  directory    16          4  3809\n    506445  directory    16          5  3812\n    506446  directory    16          6  3861\n    506447  directory    16          7  3862\n    506448  directory    16          8  3863\n\nSigned-off-by: Zhang Le \u003cr0bertz@gentoo.org\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0c9f240a992c4c2b6ac40324ece27475cf3b71a",
      "tree": "e42e5231d0e551b1b1f726c06c2ca27c510efb7a",
      "parents": [
        "5bb47b9ff3d16d40f8d45380b373497a545fa280",
        "230e40fbda242544389a5428a2efac568178ddfe"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 12:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 07 12:01:06 2009 -0800"
      },
      "message": "Merge branch \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:\n  proc: remove write-only variable in proc_pident_lookup()\n  proc: fix sparse warning\n  proc: add /proc/*/stack\n  proc: remove \u0027##\u0027 usage\n  proc: remove useless WARN_ONs\n  proc: stop using BKL\n"
    },
    {
      "commit": "56ff5efad96182f4d3cb3dc6b07396762c658f16",
      "tree": "cb91f93aa2324573527165d56d230b606a3111ed",
      "parents": [
        "acfa4380efe77e290d3a96b11cd4c9f24f4fbb18"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 09 09:34:39 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 05 11:54:28 2009 -0500"
      },
      "message": "zero i_uid/i_gid on inode allocation\n\n... and don\u0027t bother in callers.  Don\u0027t bother with zeroing i_blocks,\nwhile we are at it - it\u0027s already been zeroed.\n\ni_mode is not worth the effort; it has no common default value.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "230e40fbda242544389a5428a2efac568178ddfe",
      "tree": "596bf1b66ba0c0478290d1186597f58572ec82aa",
      "parents": [
        "dfe6b7d9406c631d697f8bbe1eae5569b808154f"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "wangcong@zeuux.org",
        "time": "Tue Dec 30 19:10:35 2008 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 05 12:27:45 2009 +0300"
      },
      "message": "proc: remove write-only variable in proc_pident_lookup()\n\nSigned-off-by: WANG Cong \u003cwangcong@zeuux.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    }
  ],
  "next": "dfe6b7d9406c631d697f8bbe1eae5569b808154f"
}
