)]}'
{
  "commit": "139d025cda1da5484e7287b35c019fe1dcf9b650",
  "tree": "9cc8a5329e99b63f61711fceb0e4a53c581c2139",
  "parents": [
    "130d9c331bc59a8733b47c58ef197a2b1fa3ed43"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Mon Jul 29 16:05:15 2019 +0200"
  },
  "committer": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Thu Aug 08 09:09:30 2019 +0200"
  },
  "message": "sched: Clean up active_mm reference counting\n\nThe current active_mm reference counting is confusing and sub-optimal.\n\nRewrite the code to explicitly consider the 4 separate cases:\n\n    user -\u003e user\n\n\tWhen switching between two user tasks, all we need to consider\n\tis switch_mm().\n\n    user -\u003e kernel\n\n\tWhen switching from a user task to a kernel task (which\n\tdoesn\u0027t have an associated mm) we retain the last mm in our\n\tactive_mm. Increment a reference count on active_mm.\n\n  kernel -\u003e kernel\n\n\tWhen switching between kernel threads, all we need to do is\n\tpass along the active_mm reference.\n\n  kernel -\u003e user\n\n\tWhen switching between a kernel and user task, we must switch\n\tfrom the last active_mm to the next mm, hoping of course that\n\tthese are the same. Decrement a reference on the active_mm.\n\nThe code keeps a different order, because as you\u0027ll note, both \u0027to\nuser\u0027 cases require switch_mm().\n\nAnd where the old code would increment/decrement for the \u0027kernel -\u003e\nkernel\u0027 case, the new code observes this is a neutral operation and\navoids touching the reference count.\n\nSigned-off-by: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\nReviewed-by: Rik van Riel \u003criel@surriel.com\u003e\nReviewed-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: luto@kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "46f3ca9e392a37d88d9c212ef55d7f6bda0acf20",
      "old_mode": 33188,
      "old_path": "kernel/sched/core.c",
      "new_id": "b4a44bc8474906aa0abe63f2bb98ae98aeb80484",
      "new_mode": 33188,
      "new_path": "kernel/sched/core.c"
    }
  ]
}
