)]}'
{
  "commit": "31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a",
  "tree": "f8805677487dadc415fb6008d8f995023f7b94cb",
  "parents": [
    "59a62ea4583e0f740bb3576ec210b23f39754327"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed May 13 11:37:18 2026 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu May 14 08:32:11 2026 -0700"
  },
  "message": "ptrace: slightly saner \u0027get_dumpable()\u0027 logic\n\nThe \u0027dumpability\u0027 of a task is fundamentally about the memory image of\nthe task - the concept comes from whether it can core dump or not - and\nmakes no sense when you don\u0027t have an associated mm.\n\nAnd almost all users do in fact use it only for the case where the task\nhas a mm pointer.\n\nBut we have one odd special case: ptrace_may_access() uses \u0027dumpable\u0027 to\ncheck various other things entirely independently of the MM (typically\nexplicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for\nthreads that no longer have a VM (and maybe never did, like most kernel\nthreads).\n\nIt\u0027s not what this flag was designed for, but it is what it is.\n\nThe ptrace code does check that the uid/gid matches, so you do have to\nbe uid-0 to see kernel thread details, but this means that the\ntraditional \"drop capabilities\" model doesn\u0027t make any difference for\nthis all.\n\nMake it all make a *bit* more sense by saying that if you don\u0027t have a\nMM pointer, we\u0027ll use a cached \"last dumpability\" flag if the thread\never had a MM (it will be zero for kernel threads since it is never\nset), and require a proper CAP_SYS_PTRACE capability to override.\n\nReported-by: Qualys Security Advisory \u003cqsa@qualys.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Kees Cook \u003ckees@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "368c7b4d7cb5105e6aa3e92d20a0bb856fb57d65",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "ee06cba5c6f538aac677b2c0847f93e44c5ab18a",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "9a909993ab1d8b9b3451e9d251eb8a97c323ba5c",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "f50d73c272d6ee8953f79e4157a74e278a2beff5",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "68c17daef8d40b5a119c87bda0c986cf5c7b276a",
      "old_mode": 33188,
      "old_path": "kernel/ptrace.c",
      "new_id": "130043bfc2091c12ccb0a90957baed75e9803735",
      "new_mode": 33188,
      "new_path": "kernel/ptrace.c"
    }
  ]
}
