)]}'
{
  "log": [
    {
      "commit": "bb7efee2ca63b08795ffb3cda96fc89d2e641b79",
      "tree": "05e05d78f815d9fb8f8963860d2287189a17d7b1",
      "parents": [
        "e9bd3f0faa90084f188830d77723bafe422e486b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 27 21:18:10 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 28 13:01:38 2011 +0200"
      },
      "message": "signal: cleanup sys_rt_sigprocmask()\n\nsys_rt_sigprocmask() looks unnecessarily complicated, simplify it.\nWe can just read current-\u003eblocked lockless unconditionally before\nanything else and then copy-to-user it if needed.  At worst we\ncopy 4 words on mips.\n\nWe could copy-to-user the old mask first and simplify the code even\nmore, but the patch tries to keep the current behaviour: we change\ncurrent-\u003eblock even if copy_to_user(oset) fails.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e6fa16ab9c1e9b344428e6fea4d29e3cc4b28fb0",
      "tree": "c1bdacc0537213cba8ba75a63ac286e21c0a7250",
      "parents": [
        "73ef4aeb61b53fce464a7e24ef03a26f98b2f617"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 27 20:59:41 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 28 13:01:37 2011 +0200"
      },
      "message": "signal: sigprocmask() should do retarget_shared_pending()\n\nIn short, almost every changing of current-\u003eblocked is wrong, or at least\ncan lead to the unexpected results.\n\nFor example. Two threads T1 and T2, T1 sleeps in sigtimedwait/pause/etc.\nkill(tgid, SIG) can pick T2 for TIF_SIGPENDING. If T2 calls sigprocmask()\nand blocks SIG before it notices the pending signal, nobody else can handle\nthis pending shared signal.\n\nI am not sure this is bug, but at least this looks strange imho. T1 should\nnot sleep forever, there is a signal which should wake it up.\n\nThis patch moves the code which actually changes -\u003eblocked into the new\nhelper, set_current_blocked() and changes this code to call\nretarget_shared_pending() as exit_signals() does. We should only care about\nthe signals we just blocked, we use \"newset \u0026 ~current-\u003eblocked\" as a mask.\n\nWe do not check !sigisemptyset(newblocked), retarget_shared_pending() is\ncheap unless mask \u0026 shared_pending.\n\nNote: for this particular case we could simply change sigprocmask() to\nreturn -EINTR if signal_pending(), but then we should change other callers\nand, more importantly, if we need this fix then set_current_blocked() will\nhave more callers and some of them can\u0027t restart. See the next patch as a\nrandom example.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "73ef4aeb61b53fce464a7e24ef03a26f98b2f617",
      "tree": "15acc5d7ded643ccd1da1d502033822a2452497c",
      "parents": [
        "fec9993db093acfc3999a364e31f8adae41fcb28"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 27 19:54:20 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 28 13:01:36 2011 +0200"
      },
      "message": "signal: sigprocmask: narrow the scope of -\u003esiglock\n\nNo functional changes, preparation to simplify the review of the next change.\n\n1. We can read current-\u003eblock lockless, nobody else can ever change this mask.\n\n2. Calculate the resulting sigset_t outside of -\u003esiglock into the temporary\n   variable, then take -\u003esiglock and change -\u003eblocked.\n\nAlso, kill the stale comment about BKL.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fec9993db093acfc3999a364e31f8adae41fcb28",
      "tree": "6398e6f0d811128cb46c04ec631f3dcc6075728a",
      "parents": [
        "f646e227b88a164a841d6b6dd969d8a45272dd83"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 27 19:50:21 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 28 13:01:35 2011 +0200"
      },
      "message": "signal: retarget_shared_pending: optimize while_each_thread() loop\n\nretarget_shared_pending() blindly does recalc_sigpending_and_wake() for\nevery sub-thread, this is suboptimal. We can check t-\u003eblocked and stop\nlooping once every bit in shared_pending has the new target.\n\nNote: we do not take task_is_stopped_or_traced(t) into account, we are\nnot trying to speed up the signal delivery or to avoid the unnecessary\n(but harmless) signal_wake_up(0) in this unlikely case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f646e227b88a164a841d6b6dd969d8a45272dd83",
      "tree": "bd11235d720e384efc20e01f116bbf904ca58b4f",
      "parents": [
        "0edceb7bcd82802f721f3c94eed9b3e2869d3740"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 27 19:18:39 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 28 13:01:35 2011 +0200"
      },
      "message": "signal: retarget_shared_pending: consider shared/unblocked signals only\n\nexit_signals() checks signal_pending() before retarget_shared_pending() but\nthis is suboptimal. We can avoid the while_each_thread() loop in case when\nthere are no shared signals visible to us.\n\nAdd the \"shared_pending.signal \u0026 ~blocked\" check. We don\u0027t use tsk-\u003eblocked\ndirectly but pass ~blocked as an argument, this is needed for the next patch.\n\nNote: we can optimize this more. while_each_thread(t) can check t-\u003eblocked\ninto account and stop after every pending signal has the new target, see the\nnext patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0edceb7bcd82802f721f3c94eed9b3e2869d3740",
      "tree": "ef24801563d721a2823d6c863d3d68f20ce39857",
      "parents": [
        "e46bc9b6fd65bc9f406a4211fbf95683cc9c2937"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 27 19:17:37 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 28 13:01:35 2011 +0200"
      },
      "message": "signal: introduce retarget_shared_pending()\n\nNo functional changes. Move the notify-other-threads code from exit_signals()\nto the new helper, retarget_shared_pending().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e46bc9b6fd65bc9f406a4211fbf95683cc9c2937",
      "tree": "57046f6b2f4674a0c9048ab1ad1ff50fae7e373a",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "321fb561971ba0f10ce18c0f8a4b9fbfc7cef4b9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 07 20:44:11 2011 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 07 20:44:11 2011 +0200"
      },
      "message": "Merge branch \u0027ptrace\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into ptrace\n"
    },
    {
      "commit": "41c57892a2895865afc89ff1a21f91a0f1506f66",
      "tree": "ca637f0e7f4ec93b9c6f58c5868c27305a58da43",
      "parents": [
        "5aba085ededa6c5a1ff465e2aebc3e8eb00a7567"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Apr 04 15:00:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 17:51:46 2011 -0700"
      },
      "message": "kernel/signal.c: add kernel-doc notation to syscalls\n\nAdd kernel-doc to syscalls in signal.c.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5aba085ededa6c5a1ff465e2aebc3e8eb00a7567",
      "tree": "61037c7906bc6334823bc75d1fa0b990aeadcea3",
      "parents": [
        "21b86bd5a838ee882d36d354185e29650b0757dd"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Apr 04 14:59:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 17:51:46 2011 -0700"
      },
      "message": "kernel/signal.c: fix typos and coding style\n\nGeneral coding style and comment fixes; no code changes:\n\n - Use multi-line-comment coding style.\n - Put some function signatures completely on one line.\n - Hyphenate some words.\n - Spell Posix as POSIX.\n - Correct typos \u0026 spellos in some comments.\n - Drop trailing whitespace.\n - End sentences with periods.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "148086bb64694cc91624bab2a550d50f800eb4b7",
      "tree": "77e208ccee6fc97c608f6d827e2605345bf3b20d",
      "parents": [
        "4da7e90e653d67dfd405868246d316b04852e2d5",
        "3436ae1298cb22d722a6520fc97f112dd767a9e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 08:36:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 08:36:58 2011 -0700"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: Fix rebalance interval calculation\n  sched, doc: Beef up load balancing description\n  sched: Leave sched_setscheduler() earlier if possible, do not disturb SCHED_FIFO tasks\n"
    },
    {
      "commit": "4da7e90e653d67dfd405868246d316b04852e2d5",
      "tree": "735707a0b9f0c212776717ec8bc95735ff6a1d01",
      "parents": [
        "fb9a7d76da108d120efb2258ea83b18dbbb2ecdd",
        "fd1edb3aa2c1d92618d8f0c6d15d44ea41fcac6a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 08:36:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 08:36:40 2011 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf: Fix task_struct reference leak\n  perf: Fix task context scheduling\n  perf: mmap 512 kiB by default\n  perf: Rebase max unprivileged mlock threshold on top of page size\n  perf tools: Fix NO_NEWT\u003d1 python build error\n  perf symbols: Properly align symbol_conf.priv_size\n  perf tools: Emit clearer message for sys_perf_event_open ENOENT return\n  perf tools: Fixup exit path when not able to open events\n  perf symbols: Fix vsyscall symbol lookup\n  oprofile, x86: Allow setting EDGE/INV/CMASK for counter events\n"
    },
    {
      "commit": "4352d9d44b935e4d000be6ec89ddb55c2bf35f24",
      "tree": "26b9d37f5a41b4c01d800a444ad230eafb48e47a",
      "parents": [
        "b3b896c73b4b04b506816a09994192e3a54f0fef"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Apr 04 08:31:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 08:31:23 2011 -0700"
      },
      "message": "ntp: fix non privileged system time shifting\n\nThe ADJ_SETOFFSET bit added in commit 094aa188 (\"ntp: Add ADJ_SETOFFSET\nmode bit\") also introduced a way for any user to change the system time.\nSneaky or buggy calls to adjtimex() could set\n\n    ADJ_OFFSET_SS_READ | ADJ_SETOFFSET\n\nwhich would result in a successful call to timekeeping_inject_offset().\nThis patch fixes the issue by adding the capability check.\n\nSigned-off-by: Richard Cochran \u003crichard.cochran@omicron.at\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "321fb561971ba0f10ce18c0f8a4b9fbfc7cef4b9",
      "tree": "4123410887b549284ed32cf5e8fb799fd2540c14",
      "parents": [
        "ee77f075921730b2b465880f9fd4367003bdab39"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Apr 01 20:13:01 2011 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 04 02:11:05 2011 +0200"
      },
      "message": "ptrace: ptrace_check_attach() should not do s/STOPPED/TRACED/\n\nAfter \"ptrace: Clean transitions between TASK_STOPPED and TRACED\"\nd79fdd6d96f46fabb779d86332e3677c6f5c2a4f, ptrace_check_attach()\nshould never see a TASK_STOPPED tracee and s/STOPPED/TRACED/ is\nno longer legal. Add the warning.\n\nNote: ptrace_check_attach() can be greatly simplified, in particular\nit doesn\u0027t need tasklist. But I\u0027d prefer another patch for that.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ee77f075921730b2b465880f9fd4367003bdab39",
      "tree": "dfae10b9718b79650477f912de148c903bc1bbd0",
      "parents": [
        "780006eac2fe7f4d2582da16a096e5a44c4767ff"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Apr 01 20:12:38 2011 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 04 02:11:05 2011 +0200"
      },
      "message": "signal: Turn SIGNAL_STOP_DEQUEUED into GROUP_STOP_DEQUEUED\n\nThis patch moves SIGNAL_STOP_DEQUEUED from signal_struct-\u003eflags to\ntask_struct-\u003egroup_stop, and thus makes it per-thread.\n\nLike SIGNAL_STOP_DEQUEUED, GROUP_STOP_DEQUEUED can be false-positive\nafter return from get_signal_to_deliver(), this is fine. The only\npurpose of this bit is: we can drop -\u003esiglock after __dequeue_signal()\nreturns the sig_kernel_stop() signal and before we call\ndo_signal_stop(), in this case we must not miss SIGCONT if it comes in\nbetween.\n\nBut, unlike SIGNAL_STOP_DEQUEUED, GROUP_STOP_DEQUEUED can not be\nfalse-positive in do_signal_stop() if multiple threads dequeue the\nsig_kernel_stop() signal at the same time.\n\nConsider two threads T1 and T2, SIGTTIN has a hanlder.\n\n\t- T1 dequeues SIGTSTP and sets SIGNAL_STOP_DEQUEUED, then\n\t  it drops -\u003esiglock\n\n\t- SIGCONT comes and clears SIGNAL_STOP_DEQUEUED, SIGTSTP\n\t  should be cancelled.\n\n\t- T2 dequeues SIGTTIN and sets SIGNAL_STOP_DEQUEUED again.\n\t  Since we have a handler we should not stop, T2 returns\n\t  to usermode to run the handler.\n\n\t- T1 continues, calls do_signal_stop() and wrongly starts\n\t  the group stop because SIGNAL_STOP_DEQUEUED was restored\n\t  in between.\n\nWith or without this change:\n\n\t- we need to do something with ptrace_signal() which can\n\t  return SIGSTOP, but this needs another discussion\n\n\t- SIGSTOP can be lost if it races with the mt exec, will\n\t  be fixed later.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "780006eac2fe7f4d2582da16a096e5a44c4767ff",
      "tree": "13d315029abead58b8b88071c7177271824b211a",
      "parents": [
        "1deac632fc3dcff33a6df3e82ef10c738ac13fe6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Apr 01 20:12:16 2011 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 04 02:11:04 2011 +0200"
      },
      "message": "signal: do_signal_stop: Remove the unneeded task_clear_group_stop_pending()\n\nPF_EXITING or TASK_STOPPED has already called task_participate_group_stop()\nand cleared its -\u003egroup_stop. No need to do task_clear_group_stop_pending()\nwhen we start the new group stop.\n\nAdd a small comment to explain the !task_is_stopped() check. Note that this\ncheck is not exactly right and it can lead to unnecessary stop later if the\nthread is TASK_PTRACED. What we need is task_participated_in_group_stop(),\nthis will be solved later.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1deac632fc3dcff33a6df3e82ef10c738ac13fe6",
      "tree": "137481584f4692911e2725b31776de3d2dd72068",
      "parents": [
        "244056f9dbbc6dc4126a301c745fa3dd67d8af3c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Apr 01 20:11:50 2011 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 04 02:11:04 2011 +0200"
      },
      "message": "signal: prepare_signal(SIGCONT) shouldn\u0027t play with TIF_SIGPENDING\n\nprepare_signal(SIGCONT) should never set TIF_SIGPENDING or wake up\nthe TASK_INTERRUPTIBLE threads. We are going to call complete_signal()\nwhich should pick the right thread correctly. All we need is to wake\nup the TASK_STOPPED threads.\n\nIf the task was stopped, it can\u0027t return to usermode without taking\n-\u003esiglock. Otherwise we don\u0027t care, and the spurious TIF_SIGPENDING\ncan\u0027t be useful.\n\nThe comment says:\n\n\t* If there is a handler for SIGCONT, we must make\n\t* sure that no thread returns to user mode before\n\t* we post the signal\n\nIt is not clear what this means. Probably, \"when there\u0027s only a single\nthread\" and this continues to be true. Otherwise, even if this SIGCONT\nis not private, with or without this change only one thread can dequeue\nSIGCONT, other threads can happily return to user mode before before\nthat thread handles this signal.\n\nNote also that wake_up_state(t, __TASK_STOPPED) can\u0027t race with the task\nwhich changes its state, TASK_STOPPED state is protected by -\u003esiglock as\nwell.\n\nIn short: when it comes to signal delivery, SIGCONT is the normal signal\nand does not need any special support.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c0bb9e45f3a7f67fc358946727bc3d5f23d0f55d",
      "tree": "55b320cd26722eb6e201110b4aceddfa15983722",
      "parents": [
        "76d479a7caff58b1e5f31d80805f7f65f9177696"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Wed Aug 25 10:22:58 2010 +1000"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Fri Apr 01 16:14:30 2011 +1100"
      },
      "message": "kdump: Allow shrinking of kdump region to be overridden\n\nOn ppc64 the crashkernel region almost always overlaps an area of firmware.\nThis works fine except when using the sysfs interface to reduce the kdump\nregion. If we free the firmware area we are guaranteed to crash.\n\nRename free_reserved_phys_range to crash_free_reserved_phys_range and make\nit a weak function so we can override it.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "fd1edb3aa2c1d92618d8f0c6d15d44ea41fcac6a",
      "tree": "ae456f2e42966042790809d7590c31736aa05557",
      "parents": [
        "ab711fe08297de1485fff0a366e6db8828cafd6a"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Mar 28 13:13:56 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 31 13:02:56 2011 +0200"
      },
      "message": "perf: Fix task_struct reference leak\n\nsys_perf_event_open() had an imbalance in the number of task refs it\ntook causing memory leakage\n\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: stable@kernel.org # .37+\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20443384fe090c5f8aeb016e7e85659c5bbdd69f",
      "tree": "c023e471d96f1c7d5e344f4b6ae7bfb8db0e1937",
      "parents": [
        "652d78fd7a9ebd881290d6bbbc85925c06b907b4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Mar 31 03:33:29 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 31 13:02:54 2011 +0200"
      },
      "message": "perf: Rebase max unprivileged mlock threshold on top of page size\n\nEnsure we allow 512 kiB + 1 page for user control without\nassuming a 4096 bytes page size.\n\nReported-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nLKML-Reference: \u003c1301535209-9679-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3436ae1298cb22d722a6520fc97f112dd767a9e1",
      "tree": "ba05a2b0a80157f9eb19e34b0ac54b9dd279600b",
      "parents": [
        "e2495b577324938f0209b4f895c5f205c7e47854"
      ],
      "author": {
        "name": "Sisir Koppaka",
        "email": "sisir.koppaka@gmail.com",
        "time": "Sat Mar 26 18:22:55 2011 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 31 13:00:37 2011 +0200"
      },
      "message": "sched: Fix rebalance interval calculation\n\nThe interval for checking scheduling domains if they are due to be\nbalanced currently depends on boot state NR_CPUS, which may not\naccurately reflect the number of online CPUs at the time of check.\n\nThus replace NR_CPUS with num_online_cpus().\n\n (ed: Should only affect those who set NR_CPUS really high, such as 4096\n      or so :-)\n\nSigned-off-by: Sisir Koppaka \u003csisir.koppaka@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cAANLkTikqHWid2Q93F5U5Qw5snJH8C5PXoa7J6\u003d6hYO94@mail.gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a51e91981870d013fcfcc08b0117997edbcbc7a7",
      "tree": "6e673d3b27f6150dd2723d773a8704657e5bb261",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Dario Faggioli",
        "email": "raistlin@linux.it",
        "time": "Thu Mar 24 14:00:18 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 31 13:00:34 2011 +0200"
      },
      "message": "sched: Leave sched_setscheduler() earlier if possible, do not disturb SCHED_FIFO tasks\n\nsched_setscheduler() (in sched.c) is called in order of changing the\nscheduling policy and/or the real-time priority of a task. Thus,\nif we find out that neither of those are actually being modified, it\nis possible to return earlier and save the overhead of a full\ndeactivate+activate cycle of the task in question.\n\nBeside that, if we have more than one SCHED_FIFO task with the same\npriority on the same rq (which means they share the same priority queue)\nhaving one of them changing its position in the priority queue because of\na sched_setscheduler (as it happens by means of the deactivate+activate)\nthat does not actually change the priority violates POSIX which states,\nfor SCHED_FIFO:\n\n  \"If a thread whose policy or priority has been modified by\n   pthread_setschedprio() is a running thread or is runnable, the effect on\n   its position in the thread list depends on the direction of the\n   modification, as follows: a. \u003c...\u003e b. If the priority is unchanged, the\n   thread does not change position in the thread list. c. \u003c...\u003e\"\n\n     http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_08.html\n\n (ed: And the POSIX specification here does, briefly and somewhat unexpectedly,\n      match what common sense tells us as well. )\n\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1300971618.3960.82.camel@Palantir\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78c89825649a9a5ed526c507603196f467d781a5",
      "tree": "eb2485baf085f7a6820c6b9030dfa3d733591aa3",
      "parents": [
        "e282326600f31ab38d8814fd6deb277a48850c35"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 30 14:13:23 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 30 14:13:23 2011 +0200"
      },
      "message": "genirq: Remove the now obsolete config options and select statements\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "353c8ed44f8f7414be614685ed29d1e23f5fa76b",
      "tree": "215ed76c15b6d95f7444fc845635253628dc33ba",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 22:18:28 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 22:24:05 2011 +0200"
      },
      "message": "genirq: Fix misnamed label in handle_edge_eoi_irq\n\nReported-by: michael@ellerman.id.au\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: linuxppc-dev@lists.ozlabs.org\n"
    },
    {
      "commit": "851d7cf647e0d31668eb5dc496f7698a2f6136b4",
      "tree": "15a292814827ef43cbfa6d28e41c7058bf71ebf7",
      "parents": [
        "0c6f8a8b917ad361319c8ace3e9f28e69bfdb4c1"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 02:51:13 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 14:50:32 2011 +0200"
      },
      "message": "genirq: Remove move_*irq leftovers\n\nAll users converted to new interface.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0c6f8a8b917ad361319c8ace3e9f28e69bfdb4c1",
      "tree": "b4b0cb4b619368bc93ff883f4b667e05a185549b",
      "parents": [
        "dced35aeb0367dda2636ee9ee914bda14510dcc9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 13:32:20 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 14:48:19 2011 +0200"
      },
      "message": "genirq: Remove compat code\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "a6e120ed42004d6051fff7c3233e2554f12ccecb",
      "tree": "dd0210b2f78a5fca1b24fe8211d5dbaac9434a6b",
      "parents": [
        "a9eb076b21425929ce543978db03265d9db210de"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 25 22:20:51 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 14:47:58 2011 +0200"
      },
      "message": "alpha: Use generic show_interrupts()\n\nThe only subtle difference is that alpha uses ACTUAL_NR_IRQS and\nprints the IRQF_DISABLED flag.\n\nChange the generic implementation to deal with ACTUAL_NR_IRQS if\ndefined.\n\nThe IRQF_DISABLED printing is pointless, as we nowadays run all\ninterrupts with irqs disabled.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "cd22c0e44b105aecd78e5f9e77abab3a1b8dc00c",
      "tree": "98be0a3bdb0fcc9ff7f31e774a4c69d655d19041",
      "parents": [
        "89078d572eb9ce8d4c04264b8b0ba86de0d74c8f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 11:36:05 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 11:36:05 2011 +0200"
      },
      "message": "genirq: Fix harmless typo\n\nThe late night fixup missed to convert the data type from irq_desc to\nirq_data, which results in a harmless but annoying warning.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e5217fb8ae5527e95cff9474f7b3c0d8e3a35fea",
      "tree": "eb85a4b7b02fb49a3534a976f79a3798393f7fc6",
      "parents": [
        "5ede9ddfba424b5dad96e7ccd55607875a64ff6c",
        "8ec4ad2bebd1dd7e782bd1a1ac4c5e17ceb2ff81",
        "0ef5ca1e1f0de71300142b8f730f26ded6a0c2f3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 17:39:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 17:39:54 2011 -0700"
      },
      "message": "Merge branches \u0027irq-cleanup-for-linus\u0027 and \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-cleanup-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  vlynq: Convert irq functions\n\n* \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq; Fix cleanup fallout\n  genirq: Fix typo and remove unused variable\n  genirq: Fix new kernel-doc warnings\n  genirq: Add setter for AFFINITY_SET in irq_data state\n  genirq: Provide setter inline for IRQD_IRQ_INPROGRESS\n  genirq: Remove handle_IRQ_event\n  arm: Ns9xxx: Remove private irq flow handler\n  powerpc: cell: Use the core flow handler\n  genirq: Provide edge_eoi flow handler\n  genirq: Move INPROGRESS, MASKED and DISABLED state flags to irq_data\n  genirq: Split irq_set_affinity() so it can be called with lock held.\n  genirq: Add chip flag for restricting cpu_on/offline calls\n  genirq: Add chip hooks for taking CPUs on/off line.\n  genirq: Add irq disabled flag to irq_data state\n  genirq: Reserve the irq when calling irq_set_chip()\n"
    },
    {
      "commit": "0ef5ca1e1f0de71300142b8f730f26ded6a0c2f3",
      "tree": "f8eb0e5e63b7d3115c27f110e59a762fd871d693",
      "parents": [
        "a6aeddd1c4e464a2150f97ca2d1c3d68cfbd9296"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 21:59:37 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 29 01:41:22 2011 +0200"
      },
      "message": "genirq; Fix cleanup fallout\n\nI missed the CONFIG_GENERIC_PENDING_IRQ dependency in the affinity\nrelated functions and the IRQ_LEVEL propagation into irq_data\nstate. Did not pop up on my main test platforms. :(\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nTested-by: David Daney \u003cddaney@caviumnetworks.com\u003e\n"
    },
    {
      "commit": "243b422af9ea9af4ead07a8ad54c90d4f9b6081a",
      "tree": "bdcd77b51cce8bd2ed5fcc41c6b430a8d6a9d74f",
      "parents": [
        "5847098cd896c92819800e17e983bf6530035209"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "roland@purestorage.com",
        "time": "Mon Mar 28 14:13:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:45:44 2011 -0700"
      },
      "message": "Relax si_code check in rt_sigqueueinfo and rt_tgsigqueueinfo\n\nCommit da48524eb206 (\"Prevent rt_sigqueueinfo and rt_tgsigqueueinfo\nfrom spoofing the signal code\") made the check on si_code too strict.\nThere are several legitimate places where glibc wants to queue a\nnegative si_code different from SI_QUEUE:\n\n - This was first noticed with glibc\u0027s aio implementation, which wants\n   to queue a signal with si_code SI_ASYNCIO; the current kernel\n   causes glibc\u0027s tst-aio4 test to fail because rt_sigqueueinfo()\n   fails with EPERM.\n\n - Further examination of the glibc source shows that getaddrinfo_a()\n   wants to use SI_ASYNCNL (which the kernel does not even define).\n   The timer_create() fallback code wants to queue signals with SI_TIMER.\n\nAs suggested by Oleg Nesterov \u003coleg@redhat.com\u003e, loosen the check to\nforbid only the problematic SI_TKILL case.\n\nReported-by: Klaus Dittrich \u003ckladit@arcor.de\u003e\nAcked-by: Julien Tinnes \u003cjln@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Roland Dreier \u003croland@purestorage.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6aeddd1c4e464a2150f97ca2d1c3d68cfbd9296",
      "tree": "18350cbcc8aa5619e98e5f56750828da300db537",
      "parents": [
        "30398bf6c684a77274dbdabf7efc1f24e4a99028"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 20:28:56 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 20:28:56 2011 +0200"
      },
      "message": "genirq: Fix typo and remove unused variable\n\nSigh, I\u0027m overworked.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "30398bf6c684a77274dbdabf7efc1f24e4a99028",
      "tree": "d4ee5d514a53fbb8186bdbc726a525bb488c7dcf",
      "parents": [
        "ee38c04b58983a236b43bae71b2415d38bceaf75"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Mar 18 09:33:56 2011 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 20:13:57 2011 +0200"
      },
      "message": "genirq: Fix new kernel-doc warnings\n\nFix new irq-related kernel-doc warnings in 2.6.38:\n\nWarning(kernel/irq/manage.c:149): No description found for parameter \u0027mask\u0027\nWarning(kernel/irq/manage.c:149): Excess function parameter \u0027cpumask\u0027 description in \u0027irq_set_affinity\u0027\nWarning(include/linux/irq.h:161): No description found for parameter \u0027state_use_accessors\u0027\nWarning(include/linux/irq.h:161): Excess struct/union/enum/typedef member \u0027state_use_accessor\u0027 description in \u0027irq_data\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nLKML-Reference: \u003c20110318093356.b939558d.randy.dunlap@oracle.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "33b054b867b84015173a38d9cd9ff513b6498818",
      "tree": "341f935d57af66fe82d384940b577fa9215ce5e6",
      "parents": [
        "6829310548a76d343205029bb41c14e75bf6a7fb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 16:27:31 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 16:55:11 2011 +0200"
      },
      "message": "genirq: Remove handle_IRQ_event\n\nLast user gone.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0521c8fbb3da45c2a58cd551ca6e9644983f6028",
      "tree": "d2ed3452a75f1d3ff516cd02c86f4371db81e06e",
      "parents": [
        "32f4125ebffee4f3c4dbc6a437fc656129eb9e60"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 16:13:24 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 16:55:11 2011 +0200"
      },
      "message": "genirq: Provide edge_eoi flow handler\n\nThis is a replacment for the cell flow handler which is in the way of\ncleanups. Must be selected to avoid general bloat.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "32f4125ebffee4f3c4dbc6a437fc656129eb9e60",
      "tree": "d64c6bb7ba40c33734896303734416ea5b4f3290",
      "parents": [
        "c2d0c555c22242c3a76e366074c4d83ef9fa3b8c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 14:10:52 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 28 16:55:10 2011 +0200"
      },
      "message": "genirq: Move INPROGRESS, MASKED and DISABLED state flags to irq_data\n\nWe really need these flags for some of the interrupt chips. Move it\nfrom internal state to irq_data and provide proper accessors.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Daney \u003cddaney@caviumnetworks.com\u003e\n"
    },
    {
      "commit": "c2d0c555c22242c3a76e366074c4d83ef9fa3b8c",
      "tree": "7426945b566129163639229fa0a5f420cdce13a8",
      "parents": [
        "b3d422329f2e061d66af4f933ef316e50e5edcac"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney@caviumnetworks.com",
        "time": "Fri Mar 25 12:38:50 2011 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 17:45:59 2011 +0200"
      },
      "message": "genirq: Split irq_set_affinity() so it can be called with lock held.\n\nThe .irq_cpu_online() and .irq_cpu_offline() functions may need to\nadjust affinity, but they are called with the descriptor lock held.\nCreate __irq_set_affinity_locked() which is called with the lock held.\nMake irq_set_affinity() just a wrapper that acquires the lock.\n\n[ tglx: Changed the argument to irq_data, added a !desc check and\n        moved the !irq_set_affinity check where it belongs ]\n\nSigned-off-by: David Daney \u003cddaney@caviumnetworks.com\u003e\nCc: linux-mips@linux-mips.org\nCc: ralf@linux-mips.org\nLKML-Reference: \u003c1301081931-11240-4-git-send-email-ddaney@caviumnetworks.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b3d422329f2e061d66af4f933ef316e50e5edcac",
      "tree": "530100dd1733e24a017f4b3df4959c667369d236",
      "parents": [
        "0fdb4b259ed3e91b687ac26848202f5e7c217e62"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 16:05:36 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 17:45:58 2011 +0200"
      },
      "message": "genirq: Add chip flag for restricting cpu_on/offline calls\n\nAdd a flag which indicates that the on/offline callback should only be\ncalled on enabled interrupts.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "0fdb4b259ed3e91b687ac26848202f5e7c217e62",
      "tree": "52503c0c5c35f95ab88a9867fc46c43fc7d9c200",
      "parents": [
        "801a0e9ae36e9b487092e31699d28c0b9a21ad52"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney@caviumnetworks.com",
        "time": "Fri Mar 25 12:38:49 2011 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 17:45:58 2011 +0200"
      },
      "message": "genirq: Add chip hooks for taking CPUs on/off line.\n\n[ tglx: Removed the enabled argument as this is now available in\nirq_data ]\n\nSigned-off-by: David Daney \u003cddaney@caviumnetworks.com\u003e\nCc: linux-mips@linux-mips.org\nCc: ralf@linux-mips.org\nLKML-Reference: \u003c1301081931-11240-3-git-send-email-ddaney@caviumnetworks.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "801a0e9ae36e9b487092e31699d28c0b9a21ad52",
      "tree": "c448d150797272b09417f5410e7570742e59368b",
      "parents": [
        "d72274e5895d11570a0a4a3214a1933c86d5ccb7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 11:02:49 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 17:45:58 2011 +0200"
      },
      "message": "genirq: Add irq disabled flag to irq_data state\n\nSome irq_chip implementation require to know the disabled state of the\ninterrupt in certain callbacks. Add a state flag and accessor to\nirq_data.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d72274e5895d11570a0a4a3214a1933c86d5ccb7",
      "tree": "3925786563e67241cc5798ebbbcf79c0ce738f69",
      "parents": [
        "16c29dafcc86024048f1dbb8349d31cb22c7c55a"
      ],
      "author": {
        "name": "David Daney",
        "email": "ddaney@caviumnetworks.com",
        "time": "Fri Mar 25 12:38:48 2011 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sun Mar 27 17:45:58 2011 +0200"
      },
      "message": "genirq: Reserve the irq when calling irq_set_chip()\n\nThe helper macros and functions like for_each_active_irq() don\u0027t work\nunless the irq is in the allocated_irqs set.\n\nIn the case of !CONFIG_SPARSE_IRQ, instead of forcing all users of the\nirq infrastructure to explicitly call irq_reserve_irq(), do it for\nthem.\n\nSigned-off-by: David Daney \u003cddaney@caviumnetworks.com\u003e\nCc: linux-mips@linux-mips.org\nCc: ralf@linux-mips.org\nLKML-Reference: \u003c1301081931-11240-2-git-send-email-ddaney@caviumnetworks.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "16c29dafcc86024048f1dbb8349d31cb22c7c55a",
      "tree": "100c4fd34903adf02c9b8ae7705a3e1f30c8d712",
      "parents": [
        "dc50eddb2f3a0dff365f093b2a93fb4ab4dd4389",
        "d47d81c0e9abdc3c88653fabff5beae82c949b09"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 21:07:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 21:07:59 2011 -0700"
      },
      "message": "Merge branch \u0027syscore\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6\n\n* \u0027syscore\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:\n  Introduce ARCH_NO_SYSDEV_OPS config option (v2)\n  cpufreq: Use syscore_ops for boot CPU suspend/resume (v2)\n  KVM: Use syscore_ops instead of sysdev class and sysdev\n  PCI / Intel IOMMU: Use syscore_ops instead of sysdev class and sysdev\n  timekeeping: Use syscore_ops instead of sysdev class and sysdev\n  x86: Use syscore_ops instead of sysdev classes and sysdevs\n"
    },
    {
      "commit": "95e14ed7fc4b2db62eb597a70850a0fede48b78a",
      "tree": "63d5dacd5ce094c9c48ce426e38440fba6565e51",
      "parents": [
        "00a2470546dd8427325636a711a42c934135dbf5",
        "0d3db28daed2529ab90933a3aaaaf46446fdfda8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 21:04:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 21:04:56 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:\n  kdb: add usage string of \u0027per_cpu\u0027 command\n  kgdb,x86_64: fix compile warning found with sparse\n  kdb: code cleanup to use macro instead of value\n  kgdboc,kgdbts: strlen() doesn\u0027t count the terminator\n"
    },
    {
      "commit": "0dd61be7ec1be1b6820af978f901b9ae2c244dc6",
      "tree": "1f49edaa21351034e7d1dff6511424e9a949cf6b",
      "parents": [
        "8dd90265ac0754da0df47d9c597f25187bb1c947",
        "ab7798ffcf98b11a9525cf65bacdae3fd58d357f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 20:24:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 20:24:05 2011 -0700"
      },
      "message": "Merge branch \u0027irq-cleanup-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-cleanup-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (23 commits)\n  genirq: Expand generic show_interrupts()\n  gpio: Fold irq_set_chip/irq_set_handler to irq_set_chip_and_handler\n  gpio: Cleanup genirq namespace\n  arm: ep93xx: Add basic interrupt info\n  arm/gpio: Remove three copies of broken and racy debug code\n  xtensa: Use generic show_interrupts()\n  xtensa: Convert genirq namespace\n  xtensa: Use generic IRQ Kconfig and set GENERIC_HARDIRQS_NO_DEPRECATED\n  xtensa: Convert s6000 gpio irq_chip to new functions\n  xtensa: Convert main irq_chip to new functions\n  um: Use generic show_interrupts()\n  um: Convert genirq namespace\n  m32r: Use generic show_interrupts()\n  m32r: Convert genirq namespace\n  h8300: Use generic show_interrupts()\n  h8300: Convert genirq namespace\n  avr32: Cleanup eic_set_irq_type()\n  avr32: Use generic show_interrupts()\n  avr: Cleanup genirq namespace\n  avr32: Use generic IRQ config, enable GENERIC_HARDIRQS_NO_DEPRECATED\n  ...\n\nFix up trivial conflict in drivers/gpio/timbgpio.c\n"
    },
    {
      "commit": "8dd90265ac0754da0df47d9c597f25187bb1c947",
      "tree": "76b3e83a9417ae8eaf959f9a6306c3da446763b8",
      "parents": [
        "2a20b02c055a14eb60ac8da737d79dc940bb9ee0",
        "1232d6132a986125f6a687ab9b61a4330e319270"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:59:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:59:38 2011 -0700"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched, doc: Update sched-design-CFS.txt\n  sched: Remove unused \u0027rq\u0027 variable and cpu_rq() call from alloc_fair_sched_group()\n  sched.h: Fix a typo (\"its\")\n  sched: Fix yield_to kernel-doc\n"
    },
    {
      "commit": "2a20b02c055a14eb60ac8da737d79dc940bb9ee0",
      "tree": "1cf09a5e13f8ed24bc66386c153969ad49f8f098",
      "parents": [
        "839767e79e7bdf06f241a47701f0f64b8e2d3f61",
        "45daae575e08bbf7405c5a3633e956fa364d1b4f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:53:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:53:09 2011 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf, x86: Complain louder about BIOSen corrupting CPU/PMU state and continue\n  perf, x86: P4 PMU - Read proper MSR register to catch unflagged overflows\n  perf symbols: Look at .dynsym again if .symtab not found\n  perf build-id: Add quirk to deal with perf.data file format breakage\n  perf session: Pass evsel in event_ops-\u003esample()\n  perf: Better fit max unprivileged mlock pages for tools needs\n  perf_events: Fix stale -\u003ecgrp pointer in update_cgrp_time_from_cpuctx()\n  perf top: Fix uninitialized \u0027counter\u0027 variable\n  tracing: Fix set_ftrace_filter probe function display\n  perf, x86: Fix Intel fixed counters base initialization\n"
    },
    {
      "commit": "839767e79e7bdf06f241a47701f0f64b8e2d3f61",
      "tree": "779e50183bac6bd4b87b6d0d1be0f444bca17428",
      "parents": [
        "94df491c4a01b39d81279a68386158eb02656712",
        "a2e8461a2ce5e8140b7374eb68af0d09e36e07ff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:52:53 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:52:53 2011 -0700"
      },
      "message": "Merge branch \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq: Provide locked setter for chip, handler, name\n  genirq: Provide a lockdep helper\n  genirq; Remove the last leftovers of the old sparse irq code\n"
    },
    {
      "commit": "94df491c4a01b39d81279a68386158eb02656712",
      "tree": "ba431d9d74f11a7117883df54908ea39e4ef7c5c",
      "parents": [
        "26ff6801f751cd47e44c2e9507ec08b447f2d2b9",
        "29096202176ceaa5016a17ea2dd1aea19a4e90e2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:52:22 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:52:22 2011 -0700"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  futex: Fix WARN_ON() test for UP\n  WARN_ON_SMP(): Allow use in if() statements on UP\n  x86, dumpstack: Use %pB format specifier for stack trace\n  vsprintf: Introduce %pB format specifier\n  lockdep: Remove unused \u0027factor\u0027 variable from lockdep_stats_show()\n"
    },
    {
      "commit": "0d3db28daed2529ab90933a3aaaaf46446fdfda8",
      "tree": "1d8d490d4c2f96fdd5e4359640ac021e9d2f9072",
      "parents": [
        "21431c2900a0b669080b5bfaae2a7d9d9c026e9b"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Mar 15 07:28:00 2010 -0500"
      },
      "committer": {
        "name": "Jason Wessel",
        "email": "jason.wessel@windriver.com",
        "time": "Fri Mar 25 16:37:31 2011 -0500"
      },
      "message": "kdb: add usage string of \u0027per_cpu\u0027 command\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jason Wessel \u003cjason.wessel@windriver.com\u003e\n"
    },
    {
      "commit": "27029c339b1beebe79bb4e64422ad1bb8d0b6440",
      "tree": "8b4be0918813649ad50fb7ab26f376fee00e21dd",
      "parents": [
        "adb4b83c12f9d966ea3478aa14c60511467c9916"
      ],
      "author": {
        "name": "Jovi Zhang",
        "email": "bookjovi@gmail.com",
        "time": "Mon Mar 15 07:28:00 2010 -0500"
      },
      "committer": {
        "name": "Jason Wessel",
        "email": "jason.wessel@windriver.com",
        "time": "Fri Mar 25 16:37:30 2011 -0500"
      },
      "message": "kdb: code cleanup to use macro instead of value\n\nIt\u0027s better to use macro KDB_BASE_CMD_MAX instead of 50\n\nSigned-off-by: Jovi Zhang \u003cbookjovi@gmail.com\u003e\nSigned-off-by: Jason Wessel \u003cjason.wessel@windriver.com\u003e\n"
    },
    {
      "commit": "ab7798ffcf98b11a9525cf65bacdae3fd58d357f",
      "tree": "834ed73e8ab309895934bcf8bfe9e531ec10b32b",
      "parents": [
        "08f1b807355c8d355885a71e7fd462fe9d499411"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 25 16:48:50 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 25 17:04:20 2011 +0100"
      },
      "message": "genirq: Expand generic show_interrupts()\n\nSome archs want to print extra information for certain irq_chips which\nis per irq and not per chip. Allow them to provide a chip callback to\nprint the chip name and the extra information.\n\nPowerPC wants to print the LEVEL/EDGE type information. Make it configurable.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "29096202176ceaa5016a17ea2dd1aea19a4e90e2",
      "tree": "1350963a65beec5d9677b7e295c5ad9eb718b64e",
      "parents": [
        "2092e6be82ec71ecbf5a8ceeef004bbcbdb78812"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 17 15:21:07 2011 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 25 11:32:11 2011 +0100"
      },
      "message": "futex: Fix WARN_ON() test for UP\n\nAn update of the futex code had a\n\n\tWARN_ON(!spin_is_locked(q-\u003elock_ptr))\n\nBut on UP, spin_is_locked() is always false, and will\ntrigger this warning, and even worse, it will exit the function\nwithout doing the necessary work.\n\nConverting this to a WARN_ON_SMP() fixes the problem.\n\nReported-by: Richard Weinberger \u003crichard@nod.at\u003e\nTested-by: Richard Weinberger \u003crichard@nod.at\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Darren Hart \u003cdvhart@linux.intel.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c20110317192208.682654502@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
      "tree": "893e9bc5041e7f722722fe13a3b145396f2554d8",
      "parents": [
        "6d1e9a42e7176bbce9348274784b2e5f69223936",
        "5a4b65ab506398ba5a35c37e06edddd387cc0add"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:07:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:07:50 2011 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300:\n  MN10300: gcc 4.6 vs am33 inline assembly\n  MN10300: Deprecate gdbstub\n  MN10300: Allow KGDB to use the MN10300 serial ports\n  MN10300: Emulate single stepping in KGDB on MN10300\n  MN10300: Generalise kernel debugger kernel halt, reboot or power off hook\n  KGDB: Notify GDB of machine halt, reboot or power off\n  MN10300: Use KGDB\n  MN10300: Create generic kernel debugger hooks\n  MN10300: Create general kernel debugger cache flushing\n  MN10300: Introduce a general config option for kernel debugger hooks\n  MN10300: The icache invalidate functions should disable the icache first\n  MN10300: gdbstub: Restrict single-stepping to non-preemptable non-SMP configs\n"
    },
    {
      "commit": "0f77a8d378254f27df4a114a5da67223af1fe93f",
      "tree": "edc37c211adce744100d4776e4a28fb868c8b3c0",
      "parents": [
        "dec2960827c85253d76938dbfa909df3be34958b"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Mar 24 11:42:29 2011 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 24 08:36:10 2011 +0100"
      },
      "message": "vsprintf: Introduce %pB format specifier\n\nThe %pB format specifier is for stack backtrace. Its handler\nsprint_backtrace() does symbol lookup using (address-1) to\nensure the address will not point outside of the function.\n\nIf there is a tail-call to the function marked \"noreturn\",\ngcc optimized out the code after the call then causes saved\nreturn address points outside of the function (i.e. the start\nof the next function), so pollutes call trace somewhat.\n\nThis patch adds the %pB printk mechanism that allows architecture\ncall-trace printout functions to improve backtrace printouts.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: linux-arch@vger.kernel.org\nLKML-Reference: \u003c1300934550-21394-1-git-send-email-namhyung@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "93a72052be81823fa1584b9be037d51924f9efa4",
      "tree": "4f5c824c8fe3fb737e27b91bfd60c10d092dc3e9",
      "parents": [
        "8547727756a7322b99aa313ce50fe15d8f858872"
      ],
      "author": {
        "name": "Olaf Hering",
        "email": "olaf@aepfle.de",
        "time": "Wed Mar 23 16:43:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:19 2011 -0700"
      },
      "message": "crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn\n\nThe Xen PV drivers in a crashed HVM guest can not connect to the dom0\nbackend drivers because both frontend and backend drivers are still in\nconnected state.  To run the connection reset function only in case of a\ncrashdump, the is_kdump_kernel() function needs to be available for the PV\ndriver modules.\n\nConsolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn into\nkernel/crash_dump.c Also export elfcorehdr_addr to make is_kdump_kernel()\nusable for modules.\n\nLeave \u0027elfcorehdr\u0027 as early_param().  This changes powerpc from __setup()\nto early_param().  It adds an address range check from x86 also on ia64\nand powerpc.\n\n[akpm@linux-foundation.org: additional #includes]\n[akpm@linux-foundation.org: remove elfcorehdr_addr export]\n[akpm@linux-foundation.org: fix for Tejun\u0027s mm/nobootmem.c changes]\nSigned-off-by: Olaf Hering \u003colaf@aepfle.de\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9b182e24ecb2b3bb33340f053ba31c8c4e1d895",
      "tree": "17964defa2bd5104dc49994385f627d70c5dfdef",
      "parents": [
        "2e1496707560ecf98e9b0604622c0990f94861d3"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@chromium.org",
        "time": "Wed Mar 23 16:43:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:14 2011 -0700"
      },
      "message": "taskstats: use appropriate printk priority level\n\nprintk()s without a priority level default to KERN_WARNING.  To reduce\nnoise at KERN_WARNING, this patch set the priority level appriopriately\nfor unleveled printks()s.  This should be useful to folks that look at\ndmesg warnings closely.\n\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b0e77598f87107001a00b8a4ece9c95e4254ccc4",
      "tree": "2738276570e4faa7c92a64521c192f04dca93801",
      "parents": [
        "b515498f5bb5f38fc0e390b4ff7d00b6077de127"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:08 2011 -0700"
      },
      "message": "userns: user namespaces: convert several capable() calls\n\nCAP_IPC_OWNER and CAP_IPC_LOCK can be checked against current_user_ns(),\nbecause the resource comes from current\u0027s own ipc namespace.\n\nsetuid/setgid are to uids in own namespace, so again checks can be against\ncurrent_user_ns().\n\nChangelog:\n\tJan 11: Use task_ns_capable() in place of sched_capable().\n\tJan 11: Use nsown_capable() as suggested by Bastian Blank.\n\tJan 11: Clarify (hopefully) some logic in futex and sched.c\n\tFeb 15: use ns_capable for ipc, not nsown_capable\n\tFeb 23: let copy_ipcs handle setting ipc_ns-\u003euser_ns\n\tFeb 23: pass ns down rather than taking it from current\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b515498f5bb5f38fc0e390b4ff7d00b6077de127",
      "tree": "b76dfc56415adee9aec5d8619124059ed3ab02a5",
      "parents": [
        "fc832ad3645f0507f24d11752544525a50a83c71"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:07 2011 -0700"
      },
      "message": "userns: add a user namespace owner of ipc ns\n\nChangelog:\n\tFeb 15: Don\u0027t set new ipc-\u003euser_ns if we didn\u0027t create a new\n\t\tipc_ns.\n\tFeb 23: Move extern declaration to ipc_namespace.h, and group\n\t\tfwd declarations at top.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc832ad3645f0507f24d11752544525a50a83c71",
      "tree": "d02dd477d94cdeaa42286dbeffcb60467fb30fb7",
      "parents": [
        "3263245de48344ad7bdd0e7256bf1606d2592f88"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:22 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:06 2011 -0700"
      },
      "message": "userns: user namespaces: convert all capable checks in kernel/sys.c\n\nThis allows setuid/setgid in containers.  It also fixes some corner cases\nwhere kernel logic foregoes capability checks when uids are equivalent.\nThe latter will need to be done throughout the whole kernel.\n\nChangelog:\n\tJan 11: Use nsown_capable() as suggested by Bastian Blank.\n\tJan 11: Fix logic errors in uid checks pointed out by Bastian.\n\tFeb 15: allow prlimit to current (was regression in previous version)\n\tFeb 23: remove debugging printks, uninline set_one_prio_perm and\n\t\tmake it bool, and document its return value.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3263245de48344ad7bdd0e7256bf1606d2592f88",
      "tree": "a6fa31305f5b6558d882b2dad29ed9a720167ee0",
      "parents": [
        "8409cca7056113bee3236cb6a8e4d8d4d1eef102"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge.hallyn@canonical.com",
        "time": "Wed Mar 23 16:43:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:06 2011 -0700"
      },
      "message": "userns: make has_capability* into real functions\n\nSo we can let type safety keep things sane, and as a bonus we can remove\nthe declaration of init_user_ns in capability.h.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8409cca7056113bee3236cb6a8e4d8d4d1eef102",
      "tree": "d9f1ced0d47070fcdf8b399021f33770c150b1ec",
      "parents": [
        "39fd33933b0209e4b6254743f2cede07c5ad4c52"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:05 2011 -0700"
      },
      "message": "userns: allow ptrace from non-init user namespaces\n\nptrace is allowed to tasks in the same user namespace according to the\nusual rules (i.e.  the same rules as for two tasks in the init user\nnamespace).  ptrace is also allowed to a user namespace to which the\ncurrent task the has CAP_SYS_PTRACE capability.\n\nChangelog:\n\tDec 31: Address feedback by Eric:\n\t\t. Correct ptrace uid check\n\t\t. Rename may_ptrace_ns to ptrace_capable\n\t\t. Also fix the cap_ptrace checks.\n\tJan  1: Use const cred struct\n\tJan 11: use task_ns_capable() in place of ptrace_capable().\n\tFeb 23: same_or_ancestore_user_ns() was not an appropriate\n\t\tcheck to constrain cap_issubset.  Rather, cap_issubset()\n\t\tonly is meaningful when both capsets are in the same\n\t\tuser_ns.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39fd33933b0209e4b6254743f2cede07c5ad4c52",
      "tree": "394f09178324fd1e31847a6c71d81f01e6236b02",
      "parents": [
        "bb96a6f50be27390dc959ff67d9ea0ea0cfbe177"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:04 2011 -0700"
      },
      "message": "userns: allow killing tasks in your own or child userns\n\nChangelog:\n\tDec  8: Fixed bug in my check_kill_permission pointed out by\n\t        Eric Biederman.\n\tDec 13: Apply Eric\u0027s suggestion to pass target task into kill_ok_by_cred()\n\t        for clarity\n\tDec 31: address comment by Eric Biederman:\n\t\tdon\u0027t need cred/tcred in check_kill_permission.\n\tJan  1: use const cred struct.\n\tJan 11: Per Bastian Blank\u0027s advice, clean up kill_ok_by_cred().\n\tFeb 16: kill_ok_by_cred: fix bad parentheses\n\tFeb 23: per akpm, let compiler inline kill_ok_by_cred\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb96a6f50be27390dc959ff67d9ea0ea0cfbe177",
      "tree": "478253434235baeb1e4760a25c0a0f01293fbb8a",
      "parents": [
        "3486740a4f32a6a466f5ac931654d154790ba648"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:03 2011 -0700"
      },
      "message": "userns: allow sethostname in a container\n\nChangelog:\n\tFeb 23: let clone_uts_ns() handle setting uts-\u003euser_ns\n\t\tTo do so we need to pass in the task_struct who\u0027ll\n\t\tget the utsname, so we can get its user_ns.\n\tFeb 23: As per Oleg\u0027s coment, just pass in tsk, instead of two\n\t\tof its members.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3486740a4f32a6a466f5ac931654d154790ba648",
      "tree": "ac5d968a66057fa84933b8f89fd3e916270dffed",
      "parents": [
        "59607db367c57f515183cb203642291bb14d9c40"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:17 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:02 2011 -0700"
      },
      "message": "userns: security: make capabilities relative to the user namespace\n\n- Introduce ns_capable to test for a capability in a non-default\n  user namespace.\n- Teach cap_capable to handle capabilities in a non-default\n  user namespace.\n\nThe motivation is to get to the unprivileged creation of new\nnamespaces.  It looks like this gets us 90% of the way there, with\nonly potential uid confusion issues left.\n\nI still need to handle getting all caps after creation but otherwise I\nthink I have a good starter patch that achieves all of your goals.\n\nChangelog:\n\t11/05/2010: [serge] add apparmor\n\t12/14/2010: [serge] fix capabilities to created user namespaces\n\tWithout this, if user serge creates a user_ns, he won\u0027t have\n\tcapabilities to the user_ns he created.  THis is because we\n\twere first checking whether his effective caps had the caps\n\the needed and returning -EPERM if not, and THEN checking whether\n\the was the creator.  Reverse those checks.\n\t12/16/2010: [serge] security_real_capable needs ns argument in !security case\n\t01/11/2011: [serge] add task_ns_capable helper\n\t01/11/2011: [serge] add nsown_capable() helper per Bastian Blank suggestion\n\t02/16/2011: [serge] fix a logic bug: the root user is always creator of\n\t\t    init_user_ns, but should not always have capabilities to\n\t\t    it!  Fix the check in cap_capable().\n\t02/21/2011: Add the required user_ns parameter to security_capable,\n\t\t    fixing a compile failure.\n\t02/23/2011: Convert some macros to functions as per akpm comments.  Some\n\t\t    couldn\u0027t be converted because we can\u0027t easily forward-declare\n\t\t    them (they are inline if !SECURITY, extern if SECURITY).  Add\n\t\t    a current_user_ns function so we can use it in capability.h\n\t\t    without #including cred.h.  Move all forward declarations\n\t\t    together to the top of the #ifdef __KERNEL__ section, and use\n\t\t    kernel-doc format.\n\t02/23/2011: Per dhowells, clean up comment in cap_capable().\n\t02/23/2011: Per akpm, remove unreachable \u0027return -EPERM\u0027 in cap_capable.\n\n(Original written and signed off by Eric;  latest, modified version\nacked by him)\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: export current_user_ns() for ecryptfs]\n[serge.hallyn@canonical.com: remove unneeded extra argument in selinux\u0027s task_has_capability]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59607db367c57f515183cb203642291bb14d9c40",
      "tree": "9097cfc3a72820c5624de6a24c9fa9cf28b6cb35",
      "parents": [
        "52e9fc76d0d4b1e8adeee736172c6c23180059b2"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:59 2011 -0700"
      },
      "message": "userns: add a user_namespace as creator/owner of uts_namespace\n\nThe expected course of development for user namespaces targeted\ncapabilities is laid out at https://wiki.ubuntu.com/UserNamespace.\n\nGoals:\n\n- Make it safe for an unprivileged user to unshare namespaces.  They\n  will be privileged with respect to the new namespace, but this should\n  only include resources which the unprivileged user already owns.\n\n- Provide separate limits and accounting for userids in different\n  namespaces.\n\nStatus:\n\n  Currently (as of 2.6.38) you can clone with the CLONE_NEWUSER flag to\n  get a new user namespace if you have the CAP_SYS_ADMIN, CAP_SETUID, and\n  CAP_SETGID capabilities.  What this gets you is a whole new set of\n  userids, meaning that user 500 will have a different \u0027struct user\u0027 in\n  your namespace than in other namespaces.  So any accounting information\n  stored in struct user will be unique to your namespace.\n\n  However, throughout the kernel there are checks which\n\n  - simply check for a capability.  Since root in a child namespace\n    has all capabilities, this means that a child namespace is not\n    constrained.\n\n  - simply compare uid1 \u003d\u003d uid2.  Since these are the integer uids,\n    uid 500 in namespace 1 will be said to be equal to uid 500 in\n    namespace 2.\n\n  As a result, the lxc implementation at lxc.sf.net does not use user\n  namespaces.  This is actually helpful because it leaves us free to\n  develop user namespaces in such a way that, for some time, user\n  namespaces may be unuseful.\n\nBugs aside, this patchset is supposed to not at all affect systems which\nare not actively using user namespaces, and only restrict what tasks in\nchild user namespace can do.  They begin to limit privilege to a user\nnamespace, so that root in a container cannot kill or ptrace tasks in the\nparent user namespace, and can only get world access rights to files.\nSince all files currently belong to the initila user namespace, that means\nthat child user namespaces can only get world access rights to *all*\nfiles.  While this temporarily makes user namespaces bad for system\ncontainers, it starts to get useful for some sandboxing.\n\nI\u0027ve run the \u0027runltplite.sh\u0027 with and without this patchset and found no\ndifference.\n\nThis patch:\n\ncopy_process() handles CLONE_NEWUSER before the rest of the namespaces.\nSo in the case of clone(CLONE_NEWUSER|CLONE_NEWUTS) the new uts namespace\nwill have the new user namespace as its owner.  That is what we want,\nsince we want root in that new userns to be able to have privilege over\nit.\n\nChangelog:\n\tFeb 15: don\u0027t set uts_ns-\u003euser_ns if we didn\u0027t create\n\t\ta new uts_ns.\n\tFeb 23: Move extern init_user_ns declaration from\n\t\tinit/version.c to utsname.h.\n\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4308eebbeb2026827d4492ce8c23d99f7f144a82",
      "tree": "3781e227988b4d986bf98dcc0390df17c6fe8f10",
      "parents": [
        "45a68628d37222e655219febce9e91b6484789b2"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Mar 23 16:43:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:58 2011 -0700"
      },
      "message": "pidns: call pid_ns_prepare_proc() from create_pid_namespace()\n\nReorganize proc_get_sb() so it can be called before the struct pid of the\nfirst process is allocated.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Serge E. Hallyn \u003cserge@hallyn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45a68628d37222e655219febce9e91b6484789b2",
      "tree": "6acb5c45e8b11022358a1c28691c9b2c75a7df91",
      "parents": [
        "bfdc0b497faa82a0ba2f9dddcf109231dd519fcc"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Mar 23 16:43:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:57 2011 -0700"
      },
      "message": "pid: remove the child_reaper special case in init/main.c\n\nThis patchset is a cleanup and a preparation to unshare the pid namespace.\nThese prerequisites prepare for Eric\u0027s patchset to give a file descriptor\nto a namespace and join an existing namespace.\n\nThis patch:\n\nIt turns out that the existing assignment in copy_process of the\nchild_reaper can handle the initial assignment of child_reaper we just\nneed to generalize the test in kernel/fork.c\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Serge E. Hallyn \u003cserge@hallyn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bfdc0b497faa82a0ba2f9dddcf109231dd519fcc",
      "tree": "932897262447dacb7158b81209748a295d93e20b",
      "parents": [
        "cb16e95fa2996743a6e80a665ed2ed0590bd38cf"
      ],
      "author": {
        "name": "Richard Weinberger",
        "email": "richard@nod.at",
        "time": "Wed Mar 23 16:43:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:54 2011 -0700"
      },
      "message": "sysctl: restrict write access to dmesg_restrict\n\nWhen dmesg_restrict is set to 1 CAP_SYS_ADMIN is needed to read the kernel\nring buffer.  But a root user without CAP_SYS_ADMIN is able to reset\ndmesg_restrict to 0.\n\nThis is an issue when e.g.  LXC (Linux Containers) are used and complete\nuser space is running without CAP_SYS_ADMIN.  A unprivileged and jailed\nroot user can bypass the dmesg_restrict protection.\n\nWith this patch writing to dmesg_restrict is only allowed when root has\nCAP_SYS_ADMIN.\n\nSigned-off-by: Richard Weinberger \u003crichard@nod.at\u003e\nAcked-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nAcked-by: Serge E. Hallyn \u003cserge@hallyn.com\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: Kees Cook \u003ckees.cook@canonical.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Eugene Teo \u003ceugeneteo@kernel.org\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": "cb16e95fa2996743a6e80a665ed2ed0590bd38cf",
      "tree": "7128a7d03a94a68dd9550f33ac66876bf6854ad0",
      "parents": [
        "256c53a65128cbc8a766b1503f3f25a52a8d07cb"
      ],
      "author": {
        "name": "Petr Holasek",
        "email": "pholasek@redhat.com",
        "time": "Wed Mar 23 16:43:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:51 2011 -0700"
      },
      "message": "sysctl: add some missing input constraint checks\n\nAdd boundaries of allowed input ranges for: dirty_expire_centisecs,\ndrop_caches, overcommit_memory, page-cluster and panic_on_oom.\n\nSigned-off-by: Petr Holasek \u003cpholasek@redhat.com\u003e\nAcked-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.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": "256c53a65128cbc8a766b1503f3f25a52a8d07cb",
      "tree": "aa15c1cd93ad2d99609016fa0bcf46f305d64d58",
      "parents": [
        "814ecf6e5b7854504ae83255173e53836c5d8420"
      ],
      "author": {
        "name": "Denis Kirjanov",
        "email": "dkirjanov@kernel.org",
        "time": "Wed Mar 23 16:43:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:51 2011 -0700"
      },
      "message": "sysctl_check: drop dead code\n\nDrop dead code.\n\nSigned-off-by: Denis Kirjanov \u003cdkirjanov@kernel.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "814ecf6e5b7854504ae83255173e53836c5d8420",
      "tree": "0e6ba9405264833b672b5b640aadc93e4050d56d",
      "parents": [
        "ad4ac17ad1e2f0bd0ce38b2585c5d7fa2b0780dc"
      ],
      "author": {
        "name": "Denis Kirjanov",
        "email": "dkirjanov@kernel.org",
        "time": "Wed Mar 23 16:43:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:50 2011 -0700"
      },
      "message": "sysctl_check: drop table-\u003eprocname checks\n\nSince the for loop checks for the table-\u003eprocname drop useless\ntable-\u003eprocname checks inside the loop body\n\nSigned-off-by: Denis Kirjanov \u003cdkirjanov@kernel.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "523fb486bfd94e3a3b16a42bcb21b1959cf14df8",
      "tree": "34c1b15a9bc55ef7a3bafb87cce3d3d184d78906",
      "parents": [
        "ee24d3797780eee6ffe581a7b78d27896f9b494a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:35 2011 -0700"
      },
      "message": "cpuset: hold callback_mutex in cpuset_post_clone()\n\nChaning cpuset-\u003emems/cpuset-\u003ecpus should be protected under\ncallback_mutex.\n\ncpuset_clone() doesn\u0027t follow this rule. It\u0027s ok because it\u0027s\ncalled when creating and initializing a cgroup, but we\u0027d better\nhold the lock to avoid subtil break in the future.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.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": "ee24d3797780eee6ffe581a7b78d27896f9b494a",
      "tree": "8034dac124ab8f0a29bc6f238c030915b2e08398",
      "parents": [
        "c8163ca8afcac0fc54593fc60d1e1110edbd0eb2"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:35 2011 -0700"
      },
      "message": "cpuset: fix unchecked calls to NODEMASK_ALLOC()\n\nThose functions that use NODEMASK_ALLOC() can\u0027t propagate errno\nto users, but will fail silently.\n\nFix it by using a static nodemask_t variable for each function, and\nthose variables are protected by cgroup_mutex;\n\n[akpm@linux-foundation.org: fix comment spelling, strengthen cgroup_lock comment]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.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": "c8163ca8afcac0fc54593fc60d1e1110edbd0eb2",
      "tree": "55a363ed73b91d8350d2df7083abf49c5c97b20d",
      "parents": [
        "9303e0c4814d2a6afca878cc35433291e862169c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:34 2011 -0700"
      },
      "message": "cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_attach()\n\noldcs-\u003emems_allowed is not modified during cpuset_attach(), so we don\u0027t\nhave to copy it to a buffer allocated by NODEMASK_ALLOC().  Just pass it\nto cpuset_migrate_mm().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.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": "9303e0c4814d2a6afca878cc35433291e862169c",
      "tree": "786866f6f0639edcc2996d4157ea7128b2400898",
      "parents": [
        "f9434ad1552427fab49336e1a6e3ef121895b9d1"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 23 16:42:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:34 2011 -0700"
      },
      "message": "cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_sprintf_memlist()\n\nIt\u0027s not necessary to copy cpuset-\u003emems_allowed to a buffer allocated by\nNODEMASK_ALLOC().  Just pass it to nodelist_scnprintf().\n\nAs spotted by Paul, a side effect is we fix a bug that the function can\nreturn -ENOMEM but the caller doesn\u0027t expect negative return value.\nTherefore change the return value of cpuset_sprintf_cpulist() and\ncpuset_sprintf_memlist() from int to size_t.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.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": "6b3ae58efca06623c197fd6d91ded4aa3a8fe039",
      "tree": "6460e4e1ce206d391b862a3d398a9e22e33ecb3c",
      "parents": [
        "5564e88ba6fd2f6dcd83a592771810cd84b5ae80"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Wed Mar 23 16:42:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:28 2011 -0700"
      },
      "message": "memcg: remove direct page_cgroup-to-page pointer\n\nIn struct page_cgroup, we have a full word for flags but only a few are\nreserved.  Use the remaining upper bits to encode, depending on\nconfiguration, the node or the section, to enable page_cgroup-to-page\nlookups without a direct pointer.\n\nThis saves a full word for every page in a system with memory cgroups\nenabled.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c191cd01a935e5b53ef43c9403c771bb7a32b60",
      "tree": "70c49b4cb52406ea1d8c60f73ad7733f60f9cee9",
      "parents": [
        "61f2e7b0f474225b4226772830ae4b29a3a21f8d"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 23 16:42:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:22 2011 -0700"
      },
      "message": "memcg: res_counter_read_u64(): fix potential races on 32-bit machines\n\nres_counter_read_u64 reads u64 value without lock.  It\u0027s dangerous in a\n32bit environment.  Add locking.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@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": "e1a85b2c519551d4792180cdab4074d7e99bf2c9",
      "tree": "ee53aed254043d06a7e30151af6500eab3bf0407",
      "parents": [
        "f3c6ea1b06c71b43f751b36bd99345369fe911af"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Mar 23 22:16:04 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Mar 23 22:16:04 2011 +0100"
      },
      "message": "timekeeping: Use syscore_ops instead of sysdev class and sysdev\n\nThe timekeeping subsystem uses a sysdev class and a sysdev for\nexecuting timekeeping_suspend() after interrupts have been turned off\non the boot CPU (during system suspend) and for executing\ntimekeeping_resume() before turning on interrupts on the boot CPU\n(during system resume).  However, since both of these functions\nignore their arguments, the entire mechanism may be replaced with a\nstruct syscore_ops object which is simpler.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "cae5d39032acf26c265f6b1dc73d7ce6ff4bc387",
      "tree": "9c89bcab3f4c17fb34eb44342d1f67bb4230d632",
      "parents": [
        "83b964bbf82eb13a8f31bb49ca420787fe01f7a6"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:55 2011 -0400"
      },
      "message": "mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm\n\nNow that gate vma\u0027s are referenced with respect to a particular mm and not a\nparticular task it only makes sense to propagate the change to this predicate as\nwell.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "880f57318450dbead6a03f9e31a1468924d6dd88",
      "tree": "35cea396cf2025946ace53f887386d1e85be6bdf",
      "parents": [
        "68cacd29167b1926d237bd1b153aa2a990201729"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Mar 23 19:29:39 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 23 20:57:04 2011 +0100"
      },
      "message": "perf: Better fit max unprivileged mlock pages for tools needs\n\nThe maximum kilobytes of locked memory that an unprivileged user\ncan reserve is of 512 kB \u003d 128 pages by default, scaled to the\nnumber of onlined CPUs, which fits well with the tools that use\n128 data pages by default.\n\nHowever tools actually use 129 pages, because they need one more\nfor the user control page. Thus the default mlock threshold is\nnot sufficient for the default tools needs and we always end up\nto evaluate the constant mlock rlimit policy, which doesn\u0027t have\nthis scaling with the number of online CPUs.\n\nHence, on systems that have more than 16 CPUs, we overlap the\nrlimit threshold and fail to mmap:\n\n\t$ perf record ls\n\tError: failed to mmap with 1 (Operation not permitted)\n\nJust increase the max unprivileged mlock threshold by one page\nso that it supports well perf tools even after 16 CPUs.\n\nReported-by: Han Pingtian \u003cphan@redhat.com\u003e\nReported-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReported-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Stable \u003cstable@kernel.org\u003e\nLKML-Reference: \u003c1300904979-5508-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3b9038912828384e38d82409c281124631c8533b",
      "tree": "68e41aeda588e7363ad252d108b5fce39a587ec6",
      "parents": [
        "6447f55da90b77faec1697d499ed7986bb4f6de6"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 23 00:24:11 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 23 20:22:06 2011 +0100"
      },
      "message": "genirq; Remove the last leftovers of the old sparse irq code\n\nAll users converted. Get rid of it.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "68cacd29167b1926d237bd1b153aa2a990201729",
      "tree": "d4359e9e0a1fa88b569e0c8a20aede435d916fee",
      "parents": [
        "ce2d17ca7f85dcade62cd608601a0d52ccdaf0e6"
      ],
      "author": {
        "name": "Stephane Eranian",
        "email": "eranian@google.com",
        "time": "Wed Mar 23 16:03:06 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 23 16:07:22 2011 +0100"
      },
      "message": "perf_events: Fix stale -\u003ecgrp pointer in update_cgrp_time_from_cpuctx()\n\nThis patch solves a stale pointer problem in\nupdate_cgrp_time_from_cpuctx(). The cpuctx-\u003ecgrp\nwas not cleared on all possible event exit paths,\nincluding:\n\n   close()\n     perf_release()\n       perf_release_kernel()\n         list_del_event()\n\nThis patch fixes list_del_event() to clear cpuctx-\u003ecgrp\nwhen there are no cgroup events left in the context.\n\n[ This second version makes the code compile when\n  CONFIG_CGROUP_PERF is not enabled. We unconditionally define\n  perf_cpu_context-\u003ecgrp. ]\n\nSigned-off-by: Stephane Eranian \u003ceranian@google.com\u003e\nCc: peterz@infradead.org\nCc: perfmon2-devel@lists.sf.net\nCc: paulus@samba.org\nCc: davem@davemloft.net\nLKML-Reference: \u003c20110323150306.GA1580@quad\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1232d6132a986125f6a687ab9b61a4330e319270",
      "tree": "6d429c469011820865b81dabbf6037c95697bb4c",
      "parents": [
        "20dd67407160eac577656cd2f8ee9a1fead960b8"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "borislav.petkov@amd.com",
        "time": "Tue Mar 22 18:46:18 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 23 14:09:41 2011 +0100"
      },
      "message": "sched, doc: Update sched-design-CFS.txt\n\nCorrect -\u003edequeue_tree() thinko into sched_class-\u003edequeue_task\nand drop all references to -\u003etask_new() since it is obviously\ngone.\n\nSigned-off-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nLKML-Reference: \u003c1300815978-16618-1-git-send-email-bp@amd64.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dec2960827c85253d76938dbfa909df3be34958b",
      "tree": "5532c5dc36cf0294d46567a55a9a2572cbc21ca9",
      "parents": [
        "a44f99c7efdb88fa41128065c9a9445c19894e34"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Mar 23 14:38:28 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 23 13:54:47 2011 +0100"
      },
      "message": "lockdep: Remove unused \u0027factor\u0027 variable from lockdep_stats_show()\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20110323123828.GB4244@swordfish.minsk.epam.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20dd67407160eac577656cd2f8ee9a1fead960b8",
      "tree": "c3598a848330b8b23e243288f5672c6ef2660333",
      "parents": [
        "e815f0a84fc9a98e5cc3ef0b520122e5e18520e7"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Mar 23 13:17:23 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 23 13:27:58 2011 +0100"
      },
      "message": "sched: Remove unused \u0027rq\u0027 variable and cpu_rq() call from alloc_fair_sched_group()\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c20110323111722.GA4244@swordfish.minsk.epam.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "244056f9dbbc6dc4126a301c745fa3dd67d8af3c",
      "tree": "dced7105f53b5d5ed34e170d77f5c6ab0172542a",
      "parents": [
        "ceb6bd67f9b9db765e1c29405f26e8460391badd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Don\u0027t send duplicate job control stop notification while ptraced\n\nJust as group_exit_code shouldn\u0027t be generated when a PTRACE_CONT\u0027d\ntask re-enters job control stop, notifiction for the event should be\nsuppressed too.  The logic is the same as the group_exit_code\ngeneration suppression in do_signal_stop(), if SIGNAL_STOP_STOPPED is\nalready set, the task is re-entering job control stop without\nintervening SIGCONT and the notifications should be suppressed.\n\nTest case follows.\n\n  #include \u003cstdio.h\u003e\n  #include \u003cunistd.h\u003e\n  #include \u003csignal.h\u003e\n  #include \u003ctime.h\u003e\n  #include \u003csys/ptrace.h\u003e\n  #include \u003csys/wait.h\u003e\n\n  static const struct timespec ts100ms \u003d { .tv_nsec \u003d 100000000 };\n  static pid_t tracee, tracer;\n\n  static const char *pid_who(pid_t pid)\n  {\n\t  return pid \u003d\u003d tracee ? \"tracee\" : (pid \u003d\u003d tracer ? \"tracer\" : \"mommy \");\n  }\n\n  static void sigchld_sigaction(int signo, siginfo_t *si, void *ucxt)\n  {\n\t  printf(\"%s: SIG status\u003d%02d code\u003d%02d (%s)\\n\",\n\t\t pid_who(getpid()), si-\u003esi_status, si-\u003esi_code,\n\t\t pid_who(si-\u003esi_pid));\n  }\n\n  int main(void)\n  {\n\t  const struct sigaction chld_sa \u003d { .sa_sigaction \u003d sigchld_sigaction,\n\t\t\t\t\t     .sa_flags \u003d SA_SIGINFO|SA_RESTART };\n\t  siginfo_t si;\n\n\t  sigaction(SIGCHLD, \u0026chld_sa, NULL);\n\n\t  tracee \u003d fork();\n\t  if (!tracee) {\n\t\t  tracee \u003d getpid();\n\t\t  while (1)\n\t\t\t  pause();\n\t  }\n\n\t  kill(tracee, SIGSTOP);\n\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\n\t  tracer \u003d fork();\n\t  if (!tracer) {\n\t\t  tracer \u003d getpid();\n\t\t  ptrace(PTRACE_ATTACH, tracee, NULL, NULL);\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t  ptrace(PTRACE_CONT, tracee, NULL, (void *)(long)si.si_status);\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t  ptrace(PTRACE_CONT, tracee, NULL, (void *)(long)si.si_status);\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t  printf(\"tracer: detaching\\n\");\n\t\t  ptrace(PTRACE_DETACH, tracee, NULL, NULL);\n\t\t  return 0;\n\t  }\n\n\t  while (1)\n\t\t  pause();\n\t  return 0;\n  }\n\nBefore the patch, the parent gets the second notification for the\ntracee after the tracer detaches.  si_status is zero because\ngroup_exit_code is not set by the group stop completion which\ntriggered this notification.\n\n  mommy : SIG status\u003d19 code\u003d05 (tracee)\n  tracer: SIG status\u003d00 code\u003d05 (tracee)\n  tracer: SIG status\u003d19 code\u003d04 (tracee)\n  tracer: SIG status\u003d00 code\u003d05 (tracee)\n  tracer: detaching\n  mommy : SIG status\u003d00 code\u003d05 (tracee)\n  mommy : SIG status\u003d00 code\u003d01 (tracer)\n  ^C\n\nAfter the patch, the duplicate notification is gone.\n\n  mommy : SIG status\u003d19 code\u003d05 (tracee)\n  tracer: SIG status\u003d00 code\u003d05 (tracee)\n  tracer: SIG status\u003d19 code\u003d04 (tracee)\n  tracer: SIG status\u003d00 code\u003d05 (tracee)\n  tracer: detaching\n  mommy : SIG status\u003d00 code\u003d01 (tracer)\n  ^C\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "ceb6bd67f9b9db765e1c29405f26e8460391badd",
      "tree": "d4db6cfe58bf2d84bf6af8f1079619050f6c8adc",
      "parents": [
        "62bcf9d992ecc19ea4f37ff57ee0b3333e3e843e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Notify the real parent of job control events regardless of ptrace\n\nWith recent changes, job control and ptrace stopped states are\nproperly separated and accessible to the real parent and the ptracer\nrespectively; however, notifications of job control stopped/continued\nevents to the real parent while ptraced are still missing.\n\nA ptracee participates in group stop in ptrace_stop() but the\ncompletion isn\u0027t notified.  If participation results in completion of\ngroup stop, notify the real parent of the event.  The ptrace and group\nstops are separate and can be handled as such.\n\nHowever, when the real parent and the ptracer are in the same thread\ngroup, only the ptrace stop event is visible through wait(2) and the\nduplicate notifications are different from the current behavior and\nare confusing.  Suppress group stop notification in such cases.\n\nThe continued state is shared between the real parent and the ptracer\nbut is only meaningful to the real parent.  Always notify the real\nparent and notify the ptracer too for backward compatibility.  Similar\nto stop notification, if the real parent is the ptracer, suppress a\nduplicate notification.\n\nTest case follows.\n\n  #include \u003cstdio.h\u003e\n  #include \u003cunistd.h\u003e\n  #include \u003ctime.h\u003e\n  #include \u003cerrno.h\u003e\n  #include \u003csys/types.h\u003e\n  #include \u003csys/ptrace.h\u003e\n  #include \u003csys/wait.h\u003e\n\n  int main(void)\n  {\n\t  const struct timespec ts100ms \u003d { .tv_nsec \u003d 100000000 };\n\t  pid_t tracee, tracer;\n\t  siginfo_t si;\n\t  int i;\n\n\t  tracee \u003d fork();\n\t  if (tracee \u003d\u003d 0) {\n\t\t  while (1) {\n\t\t\t  printf(\"tracee: SIGSTOP\\n\");\n\t\t\t  raise(SIGSTOP);\n\t\t\t  nanosleep(\u0026ts100ms, NULL);\n\t\t\t  printf(\"tracee: SIGCONT\\n\");\n\t\t\t  raise(SIGCONT);\n\t\t\t  nanosleep(\u0026ts100ms, NULL);\n\t\t  }\n\t  }\n\n\t  waitid(P_PID, tracee, \u0026si, WSTOPPED | WNOHANG | WNOWAIT);\n\n\t  tracer \u003d fork();\n\t  if (tracer \u003d\u003d 0) {\n\t\t  nanosleep(\u0026ts100ms, NULL);\n\t\t  ptrace(PTRACE_ATTACH, tracee, NULL, NULL);\n\n\t\t  for (i \u003d 0; i \u003c 11; i++) {\n\t\t\t  si.si_pid \u003d 0;\n\t\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t\t  if (si.si_pid \u0026\u0026 si.si_code \u003d\u003d CLD_TRAPPED)\n\t\t\t\t  ptrace(PTRACE_CONT, tracee, NULL,\n\t\t\t\t\t (void *)(long)si.si_status);\n\t\t  }\n\t\t  printf(\"tracer: EXITING\\n\");\n\t\t  return 0;\n\t  }\n\n\t  while (1) {\n\t\t  si.si_pid \u003d 0;\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED | WCONTINUED | WEXITED);\n\t\t  if (si.si_pid)\n\t\t\t  printf(\"mommy : WAIT status\u003d%02d code\u003d%02d\\n\",\n\t\t\t\t si.si_status, si.si_code);\n\t  }\n\t  return 0;\n  }\n\nBefore this patch, while ptraced, the real parent doesn\u0027t get\nnotifications for job control events, so although it can access those\nevents, the later waitid(2) call never wakes up.\n\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  tracee: SIGSTOP\n  tracee: SIGCONT\n  tracee: SIGSTOP\n  tracee: SIGCONT\n  tracee: SIGSTOP\n  tracer: EXITING\n  mommy : WAIT status\u003d19 code\u003d05\n  ^C\n\nAfter this patch, it works as expected.\n\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  mommy : WAIT status\u003d18 code\u003d06\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  mommy : WAIT status\u003d18 code\u003d06\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  mommy : WAIT status\u003d18 code\u003d06\n  tracee: SIGSTOP\n  tracer: EXITING\n  mommy : WAIT status\u003d19 code\u003d05\n  ^C\n\n-v2: Oleg pointed out that\n\n     * Group stop notification to the real parent should also happen\n       when ptracer detach races with ptrace_stop().\n\n     * real_parent_is_ptracer() should be testing thread group\n       equality not the task itself as wait(2) and stop/cont\n       notifications are normally thread-group wide.\n\n     Both issues are fixed accordingly.\n\n-v3: real_parent_is_ptracer() updated to test child-\u003ereal_parent\n     instead of child-\u003egroup_leader-\u003ereal_parent per Oleg\u0027s\n     suggestion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "62bcf9d992ecc19ea4f37ff57ee0b3333e3e843e",
      "tree": "a02286c9afffcda9361e0422370b78fe953df7de",
      "parents": [
        "75b95953a56969a990e6ce154b260be83818fe71"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Job control stop notifications should always go to the real parent\n\nThe stopped notifications in do_signal_stop() and exit_signals() are\nalways for the completion of job control.  The one in do_signal_stop()\nmay be delivered to the ptracer if PTRACE_ATTACH races with\nnotification and the one in exit_signals() if task exits while\nptraced.\n\nIn both cases, the notifications are meaningless and confusing to the\nptracer as it never accesses the group stop state while the real\nparent would miss notifications for the events it is watching.\n\nMake sure these notifications always go to the real parent by calling\ndo_notify_parent_cld_stop() with %false @for_ptrace.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "75b95953a56969a990e6ce154b260be83818fe71",
      "tree": "a6a78c433a1ace907511f71be289cdd16ec1137f",
      "parents": [
        "45cb24a1da53beb70f09efccc0373f6a47a9efe0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Add @for_ptrace to do_notify_parent_cldstop()\n\nCurrently, do_notify_parent_cldstop() determines whether the\nnotification is for the real parent or ptracer.  Move the decision to\nthe caller by adding @for_ptrace parameter to\ndo_notify_parent_cldstop().  All the callers are updated to pass\ntask_ptrace(target_task), so this patch doesn\u0027t cause any behavior\ndifference.\n\nWhile at it, add function comment to do_notify_parent_cldstop().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "45cb24a1da53beb70f09efccc0373f6a47a9efe0",
      "tree": "f27b2a6ca76f9b4e17f2adddfcf27b3d988152ed",
      "parents": [
        "9b84cca2564b9a5b2d064fb44d2a55a5b44473a0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Allow access to job control events through ptracees\n\nCurrently a real parent can\u0027t access job control stopped/continued\nevents through a ptraced child.  This utterly breaks job control when\nthe children are ptraced.\n\nFor example, if a program is run from an interactive shell and then\nstrace(1) attaches to it, pressing ^Z would send SIGTSTP and strace(1)\nwould notice it but the shell has no way to tell whether the child\nentered job control stop and thus can\u0027t tell when to take over the\nterminal - leading to awkward lone ^Z on the terminal.\n\nBecause the job control and ptrace stopped states are independent,\nthere is no reason to prevent real parents from accessing the stopped\nstate regardless of ptrace.  The continued state isn\u0027t separate but\nptracers don\u0027t have any use for them as ptracees can never resume\nwithout explicit command from their ptracers, so as long as ptracers\ndon\u0027t consume it, it should be fine.\n\nAlthough this is a behavior change, because the previous behavior is\nutterly broken when viewed from real parents and the change is only\nvisible to real parents, I don\u0027t think it\u0027s necessary to make this\nbehavior optional.\n\nOne situation to be careful about is when a task from the real\nparent\u0027s group is ptracing.  The parent group is the recipient of both\nptrace and job control stop events and one stop can be reported as\nboth job control and ptrace stops.  As this can break the current\nptrace users, suppress job control stopped events for these cases.\n\nIf a real parent ptracer wants to know about both job control and\nptrace stops, it can create a separate process to serve the role of\nreal parent.\n\nNote that this only updates wait(2) side of things.  The real parent\ncan access the states via wait(2) but still is not properly notified\n(woken up and delivered signal).  Test case polls wait(2) with WNOHANG\nto work around.  Notification will be updated by future patches.\n\nTest case follows.\n\n  #include \u003cstdio.h\u003e\n  #include \u003cunistd.h\u003e\n  #include \u003ctime.h\u003e\n  #include \u003cerrno.h\u003e\n  #include \u003csys/types.h\u003e\n  #include \u003csys/ptrace.h\u003e\n  #include \u003csys/wait.h\u003e\n\n  int main(void)\n  {\n\t  const struct timespec ts100ms \u003d { .tv_nsec \u003d 100000000 };\n\t  pid_t tracee, tracer;\n\t  siginfo_t si;\n\t  int i;\n\n\t  tracee \u003d fork();\n\t  if (tracee \u003d\u003d 0) {\n\t\t  while (1) {\n\t\t\t  printf(\"tracee: SIGSTOP\\n\");\n\t\t\t  raise(SIGSTOP);\n\t\t\t  nanosleep(\u0026ts100ms, NULL);\n\t\t\t  printf(\"tracee: SIGCONT\\n\");\n\t\t\t  raise(SIGCONT);\n\t\t\t  nanosleep(\u0026ts100ms, NULL);\n\t\t  }\n\t  }\n\n\t  waitid(P_PID, tracee, \u0026si, WSTOPPED | WNOHANG | WNOWAIT);\n\n\t  tracer \u003d fork();\n\t  if (tracer \u003d\u003d 0) {\n\t\t  nanosleep(\u0026ts100ms, NULL);\n\t\t  ptrace(PTRACE_ATTACH, tracee, NULL, NULL);\n\n\t\t  for (i \u003d 0; i \u003c 11; i++) {\n\t\t\t  si.si_pid \u003d 0;\n\t\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t\t  if (si.si_pid \u0026\u0026 si.si_code \u003d\u003d CLD_TRAPPED)\n\t\t\t\t  ptrace(PTRACE_CONT, tracee, NULL,\n\t\t\t\t\t (void *)(long)si.si_status);\n\t\t  }\n\t\t  printf(\"tracer: EXITING\\n\");\n\t\t  return 0;\n\t  }\n\n\t  while (1) {\n\t\t  si.si_pid \u003d 0;\n\t\t  waitid(P_PID, tracee, \u0026si,\n\t\t\t WSTOPPED | WCONTINUED | WEXITED | WNOHANG);\n\t\t  if (si.si_pid)\n\t\t\t  printf(\"mommy : WAIT status\u003d%02d code\u003d%02d\\n\",\n\t\t\t\t si.si_status, si.si_code);\n\t\t  nanosleep(\u0026ts100ms, NULL);\n\t  }\n\t  return 0;\n  }\n\nBefore the patch, while ptraced, the parent can\u0027t see any job control\nevents.\n\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  tracee: SIGSTOP\n  tracee: SIGCONT\n  tracee: SIGSTOP\n  tracee: SIGCONT\n  tracee: SIGSTOP\n  tracer: EXITING\n  mommy : WAIT status\u003d19 code\u003d05\n  ^C\n\nAfter the patch,\n\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  mommy : WAIT status\u003d18 code\u003d06\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  mommy : WAIT status\u003d18 code\u003d06\n  tracee: SIGSTOP\n  mommy : WAIT status\u003d19 code\u003d05\n  tracee: SIGCONT\n  mommy : WAIT status\u003d18 code\u003d06\n  tracee: SIGSTOP\n  tracer: EXITING\n  mommy : WAIT status\u003d19 code\u003d05\n  ^C\n\n-v2: Oleg pointed out that wait(2) should be suppressed for the real\n     parent\u0027s group instead of only the real parent task itself.\n     Updated accordingly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "9b84cca2564b9a5b2d064fb44d2a55a5b44473a0",
      "tree": "376808993d708f23830ff069fdf157e99bfb7516",
      "parents": [
        "823b018e5b1196d810790559357447948f644548"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Fix ptracer wait(2) hang and explain notask_error clearing\n\nwait(2) and friends allow access to stopped/continued states through\nzombies, which is required as the states are process-wide and should\nbe accessible whether the leader task is alive or undead.\nwait_consider_task() implements this by always clearing notask_error\nand going through wait_task_stopped/continued() for unreaped zombies.\n\nHowever, while ptraced, the stopped state is per-task and as such if\nthe ptracee became a zombie, there\u0027s no further stopped event to\nlisten to and wait(2) and friends should return -ECHILD on the tracee.\n\nFix it by clearing notask_error only if WCONTINUED | WEXITED is set\nfor ptraced zombies.  While at it, document why clearing notask_error\nis safe for each case.\n\nTest case follows.\n\n  #include \u003cstdio.h\u003e\n  #include \u003cunistd.h\u003e\n  #include \u003cpthread.h\u003e\n  #include \u003ctime.h\u003e\n  #include \u003csys/types.h\u003e\n  #include \u003csys/ptrace.h\u003e\n  #include \u003csys/wait.h\u003e\n\n  static void *nooper(void *arg)\n  {\n\t  pause();\n\t  return NULL;\n  }\n\n  int main(void)\n  {\n\t  const struct timespec ts1s \u003d { .tv_sec \u003d 1 };\n\t  pid_t tracee, tracer;\n\t  siginfo_t si;\n\n\t  tracee \u003d fork();\n\t  if (tracee \u003d\u003d 0) {\n\t\t  pthread_t thr;\n\n\t\t  pthread_create(\u0026thr, NULL, nooper, NULL);\n\t\t  nanosleep(\u0026ts1s, NULL);\n\t\t  printf(\"tracee exiting\\n\");\n\t\t  pthread_exit(NULL);\t/* let subthread run */\n\t  }\n\n\t  tracer \u003d fork();\n\t  if (tracer \u003d\u003d 0) {\n\t\t  ptrace(PTRACE_ATTACH, tracee, NULL, NULL);\n\t\t  while (1) {\n\t\t\t  if (waitid(P_PID, tracee, \u0026si, WSTOPPED) \u003c 0) {\n\t\t\t\t  perror(\"waitid\");\n\t\t\t\t  break;\n\t\t\t  }\n\t\t\t  ptrace(PTRACE_CONT, tracee, NULL,\n\t\t\t\t (void *)(long)si.si_status);\n\t\t  }\n\t\t  return 0;\n\t  }\n\n\t  waitid(P_PID, tracer, \u0026si, WEXITED);\n\t  kill(tracee, SIGKILL);\n\t  return 0;\n  }\n\nBefore the patch, after the tracee becomes a zombie, the tracer\u0027s\nwaitid(WSTOPPED) never returns and the program doesn\u0027t terminate.\n\n  tracee exiting\n  ^C\n\nAfter the patch, tracee exiting triggers waitid() to fail.\n\n  tracee exiting\n  waitid: No child processes\n\n-v2: Oleg pointed out that exited in addition to continued can happen\n     for ptraced dead group leader.  Clear notask_error for ptraced\n     child on WEXITED too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "823b018e5b1196d810790559357447948f644548",
      "tree": "a7bb20bc487a08943c25e789c51c790aef14d169",
      "parents": [
        "408a37de6c95832a4880a88a742f89f0cc554d06"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Small reorganization of wait_consider_task()\n\nMove EXIT_DEAD test in wait_consider_task() above ptrace check.  As\nptraced tasks can\u0027t be EXIT_DEAD, this change doesn\u0027t cause any\nbehavior change.  This is to prepare for further changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "408a37de6c95832a4880a88a742f89f0cc554d06",
      "tree": "14e89583cd01a91a75e93b262e162e623847d2ef",
      "parents": [
        "0e9f0a4abfd80f8adca624538d479d95159b16d8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "job control: Don\u0027t set group_stop exit_code if re-entering job control stop\n\nWhile ptraced, a task may be resumed while the containing process is\nstill job control stopped.  If the task receives another stop signal\nin this state, it will still initiate group stop, which generates\ngroup_exit_code, which the real parent would be able to see once the\nptracer detaches.\n\nIn this scenario, the real parent may see two consecutive CLD_STOPPED\nevents from two stop signals without intervening SIGCONT, which\nnormally is impossible.\n\nTest case follows.\n\n  #include \u003cstdio.h\u003e\n  #include \u003cunistd.h\u003e\n  #include \u003csys/ptrace.h\u003e\n  #include \u003csys/wait.h\u003e\n\n  int main(void)\n  {\n\t  pid_t tracee;\n\t  siginfo_t si;\n\n\t  tracee \u003d fork();\n\t  if (!tracee)\n\t\t  while (1)\n\t\t\t  pause();\n\n\t  kill(tracee, SIGSTOP);\n\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\n\t  if (!fork()) {\n\t\t  ptrace(PTRACE_ATTACH, tracee, NULL, NULL);\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t  ptrace(PTRACE_CONT, tracee, NULL, (void *)(long)si.si_status);\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t  ptrace(PTRACE_CONT, tracee, NULL, (void *)(long)si.si_status);\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t\t  ptrace(PTRACE_DETACH, tracee, NULL, NULL);\n\t\t  return 0;\n\t  }\n\n\t  while (1) {\n\t\t  si.si_pid \u003d 0;\n\t\t  waitid(P_PID, tracee, \u0026si, WSTOPPED | WNOHANG);\n\t\t  if (si.si_pid)\n\t\t\t  printf(\"st\u003d%02d c\u003d%02d\\n\", si.si_status, si.si_code);\n\t  }\n\t  return 0;\n  }\n\nBefore the patch, the latter waitid() in polling mode reports the\nsecond stopped event generated by the implied SIGSTOP of\nPTRACE_ATTACH.\n\n  st\u003d19 c\u003d05\n  ^C\n\nAfter the patch, the second event is not reported.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "0e9f0a4abfd80f8adca624538d479d95159b16d8",
      "tree": "6b9910140f4755cd95970a5c559e8f00d60dfede",
      "parents": [
        "e3bd058f62896ec7a2c605ed62a0a811e9147947"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "ptrace: Always put ptracee into appropriate execution state\n\nCurrently, __ptrace_unlink() wakes up the tracee iff it\u0027s in\nTASK_TRACED.  For unlinking from PTRACE_DETACH, this is correct as the\ntracee is guaranteed to be in TASK_TRACED or dead; however, unlinking\nalso happens when the ptracer exits and in this case the ptracee can\nbe in any state and ptrace might be left running even if the group it\nbelongs to is stopped.\n\nThis patch updates __ptrace_unlink() such that GROUP_STOP_PENDING is\nreinstated regardless of the ptracee\u0027s current state as long as it\u0027s\nalive and makes sure that signal_wake_up() is called if execution\nstate transition is necessary.\n\nTest case follows.\n\n  #include \u003cunistd.h\u003e\n  #include \u003ctime.h\u003e\n  #include \u003csys/types.h\u003e\n  #include \u003csys/ptrace.h\u003e\n  #include \u003csys/wait.h\u003e\n\n  static const struct timespec ts1s \u003d { .tv_sec \u003d 1 };\n\n  int main(void)\n  {\n\t  pid_t tracee;\n\t  siginfo_t si;\n\n\t  tracee \u003d fork();\n\t  if (tracee \u003d\u003d 0) {\n\t\t  while (1) {\n\t\t\t  nanosleep(\u0026ts1s, NULL);\n\t\t\t  write(1, \".\", 1);\n\t\t  }\n\t  }\n\n\t  ptrace(PTRACE_ATTACH, tracee, NULL, NULL);\n\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t  ptrace(PTRACE_CONT, tracee, NULL, (void *)(long)si.si_status);\n\t  waitid(P_PID, tracee, \u0026si, WSTOPPED);\n\t  ptrace(PTRACE_CONT, tracee, NULL, (void *)(long)si.si_status);\n\t  write(1, \"exiting\", 7);\n\t  return 0;\n  }\n\nBefore the patch, after the parent process exits, the child is left\nrunning and prints out \".\" every second.\n\n  exiting..... (continues)\n\nAfter the patch, the group stop initiated by the implied SIGSTOP from\nPTRACE_ATTACH is re-established when the parent exits.\n\n  exiting\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "e3bd058f62896ec7a2c605ed62a0a811e9147947",
      "tree": "bd7b5d3e495221c78666421af1f73ee15af7531b",
      "parents": [
        "d79fdd6d96f46fabb779d86332e3677c6f5c2a4f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:01 2011 +0100"
      },
      "message": "ptrace: Collapse ptrace_untrace() into __ptrace_unlink()\n\nRemove the extra task_is_traced() check in __ptrace_unlink() and\ncollapse ptrace_untrace() into __ptrace_unlink().  This is to prepare\nfor further changes.\n\nWhile at it, drop the comment on top of ptrace_untrace() and convert\n__ptrace_unlink() comment to docbook format.  Detailed comment will be\nadded by the next patch.\n\nThis patch doesn\u0027t cause any visible behavior changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "d79fdd6d96f46fabb779d86332e3677c6f5c2a4f",
      "tree": "2797e34888c687b47997b7c7ea3150468bcbb737",
      "parents": [
        "5224fa3660ad3881d2f2ad726d22614117963f10"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "message": "ptrace: Clean transitions between TASK_STOPPED and TRACED\n\nCurrently, if the task is STOPPED on ptrace attach, it\u0027s left alone\nand the state is silently changed to TRACED on the next ptrace call.\nThe behavior breaks the assumption that arch_ptrace_stop() is called\nbefore any task is poked by ptrace and is ugly in that a task\nmanipulates the state of another task directly.\n\nWith GROUP_STOP_PENDING, the transitions between TASK_STOPPED and\nTRACED can be made clean.  The tracer can use the flag to tell the\ntracee to retry stop on attach and detach.  On retry, the tracee will\nenter the desired state in the correct way.  The lower 16bits of\ntask-\u003egroup_stop is used to remember the signal number which caused\nthe last group stop.  This is used while retrying for ptrace attach as\nthe original group_exit_code could have been consumed with wait(2) by\nthen.\n\nAs the real parent may wait(2) and consume the group_exit_code\nanytime, the group_exit_code needs to be saved separately so that it\ncan be used when switching from regular sleep to ptrace_stop().  This\nis recorded in the lower 16bits of task-\u003egroup_stop.\n\nIf a task is already stopped and there\u0027s no intervening SIGCONT, a\nptrace request immediately following a successful PTRACE_ATTACH should\nalways succeed even if the tracer doesn\u0027t wait(2) for attach\ncompletion; however, with this change, the tracee might still be\nTASK_RUNNING trying to enter TASK_TRACED which would cause the\nfollowing request to fail with -ESRCH.\n\nThis intermediate state is hidden from the ptracer by setting\nGROUP_STOP_TRAPPING on attach and making ptrace_check_attach() wait\nfor it to clear on its signal-\u003ewait_chldexit.  Completing the\ntransition or getting killed clears TRAPPING and wakes up the tracer.\n\nNote that the STOPPED -\u003e RUNNING -\u003e TRACED transition is still visible\nto other threads which are in the same group as the ptracer and the\nreverse transition is visible to all.  Please read the comments for\ndetails.\n\nOleg:\n\n* Spotted a race condition where a task may retry group stop without\n  proper bookkeeping.  Fixed by redoing bookkeeping on retry.\n\n* Spotted that the transition is visible to userland in several\n  different ways.  Most are fixed with GROUP_STOP_TRAPPING.  Unhandled\n  corner case is documented.\n\n* Pointed out not setting GROUP_STOP_SIGMASK on an already stopped\n  task would result in more consistent behavior.\n\n* Pointed out that calling ptrace_stop() from do_signal_stop() in\n  TASK_STOPPED can race with group stop start logic and then confuse\n  the TRAPPING wait in ptrace_check_attach().  ptrace_stop() is now\n  called with TASK_RUNNING.\n\n* Suggested using signal-\u003ewait_chldexit instead of bit wait.\n\n* Spotted a race condition between TRACED transition and clearing of\n  TRAPPING.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Jan Kratochvil \u003cjan.kratochvil@redhat.com\u003e\n"
    },
    {
      "commit": "5224fa3660ad3881d2f2ad726d22614117963f10",
      "tree": "1e8806eda6058bf019f06c8500ec293a757f9331",
      "parents": [
        "0ae8ce1c8c5b9007ce6bfc83ec2aa0dfce5bbed3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "message": "ptrace: Make do_signal_stop() use ptrace_stop() if the task is being ptraced\n\nA ptraced task would still stop at do_signal_stop() when it\u0027s stopping\nfor stop signals and do_signal_stop() behaves the same whether the\ntask is ptraced or not.  However, in addition to stopping,\nptrace_stop() also does ptrace specific stuff like calling\narchitecture specific callbacks, so this behavior makes the code more\nfragile and difficult to understand.\n\nThis patch makes do_signal_stop() test whether the task is ptraced and\nuse ptrace_stop() if so.  This renders tracehook_notify_jctl() rather\npointless as the ptrace notification is now handled by ptrace_stop()\nregardless of the return value from the tracehook.  It probably is a\ngood idea to update it.\n\nThis doesn\u0027t solve the whole problem as tasks already in stopped state\nwould stay in the regular stop when ptrace attached.  That part will\nbe handled by the next patch.\n\nOleg pointed out that this makes a userland-visible change.  Before,\nSIGCONT would be able to wake up a task in group stop even if the task\nis ptraced if the tracer hasn\u0027t issued another ptrace command\nafterwards (as the next ptrace commands transitions the state into\nTASK_TRACED which ignores SIGCONT wakeups).  With this and the next\npatch, SIGCONT may race with the transition into TASK_TRACED and is\nignored if the tracee already entered TASK_TRACED.\n\nAnother userland visible change of this and the next patch is that the\nptracee\u0027s state would now be TASK_TRACED where it used to be\nTASK_STOPPED, which is visible via fs/proc.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Jan Kratochvil \u003cjan.kratochvil@redhat.com\u003e\n"
    },
    {
      "commit": "0ae8ce1c8c5b9007ce6bfc83ec2aa0dfce5bbed3",
      "tree": "f92abf6b41e9524966849972427fadcb7a7ef3f7",
      "parents": [
        "39efa3ef3a376a4e53de2f82fc91182459d34200"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "message": "ptrace: Participate in group stop from ptrace_stop() iff the task is trapping for group stop\n\nCurrently, ptrace_stop() unconditionally participates in group stop\nbookkeeping.  This is unnecessary and inaccurate.  Make it only\nparticipate if the task is trapping for group stop - ie. if @why is\nCLD_STOPPED.  As ptrace_stop() currently is not used when trapping for\ngroup stop, this equals to disabling group stop participation from\nptrace_stop().\n\nA visible behavior change is increased likelihood of delayed group\nstop completion if the thread group contains one or more ptraced\ntasks.\n\nThis is to preapre for further cleanup of the interaction between\ngroup stop and ptrace.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "39efa3ef3a376a4e53de2f82fc91182459d34200",
      "tree": "f75a44fa77396edcf74e41686912554f96681340",
      "parents": [
        "e5c1902e9260a0075ea52cb5ef627a8d9aaede89"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 23 10:37:00 2011 +0100"
      },
      "message": "signal: Use GROUP_STOP_PENDING to stop once for a single group stop\n\nCurrently task-\u003esignal-\u003egroup_stop_count is used to decide whether to\nstop for group stop.  However, if there is a task in the group which\nis taking a long time to stop, other tasks which are continued by\nptrace would repeatedly stop for the same group stop until the group\nstop is complete.\n\nConversely, if a ptraced task is in TASK_TRACED state, the debugger\nwon\u0027t get notified of group stops which is inconsistent compared to\nthe ptraced task in any other state.\n\nThis patch introduces GROUP_STOP_PENDING which tracks whether a task\nis yet to stop for the group stop in progress.  The flag is set when a\ngroup stop starts and cleared when the task stops the first time for\nthe group stop, and consulted whenever whether the task should\nparticipate in a group stop needs to be determined.  Note that now\ntasks in TASK_TRACED also participate in group stop.\n\nThis results in the following behavior changes.\n\n* For a single group stop, a ptracer would see at most one stop\n  reported.\n\n* A ptracee in TASK_TRACED now also participates in group stop and the\n  tracer would get the notification.  However, as a ptraced task could\n  be in TASK_STOPPED state or any ptrace trap could consume group\n  stop, the notification may still be missing.  These will be\n  addressed with further patches.\n\n* A ptracee may start a group stop while one is still in progress if\n  the tracer let it continue with stop signal delivery.  Group stop\n  code handles this correctly.\n\nOleg:\n\n* Spotted that a task might skip signal check even when its\n  GROUP_STOP_PENDING is set.  Fixed by updating\n  recalc_sigpending_tsk() to check GROUP_STOP_PENDING instead of\n  group_stop_count.\n\n* Pointed out that task-\u003egroup_stop should be cleared whenever\n  task-\u003esignal-\u003egroup_stop_count is cleared.  Fixed accordingly.\n\n* Pointed out the behavior inconsistency between TASK_TRACED and\n  RUNNING and the last behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\n"
    }
  ],
  "next": "e5c1902e9260a0075ea52cb5ef627a8d9aaede89"
}
