)]}'
{
  "commit": "9d65cb4a1718a072898c7a57a3bc61b2dc4bcd4d",
  "tree": "9e3fd1c9e61e8ed16959d115a9a3f6f7eb0bbf21",
  "parents": [
    "ffb45122766db220d0bf3d01848d575fbbcb6430"
  ],
  "author": {
    "name": "Alexey Dobriyan",
    "email": "adobriyan@sw.ru",
    "time": "Tue May 08 00:28:43 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue May 08 11:15:08 2007 -0700"
  },
  "message": "Fix race between cat /proc/*/wchan and rmmod et al\n\nkallsyms_lookup() can go iterating over modules list unprotected which is OK\nfor emergency situations (oops), but not OK for regular stuff like\n/proc/*/wchan.\n\nIntroduce lookup_symbol_name()/lookup_module_symbol_name() which copy symbol\nname into caller-supplied buffer or return -ERANGE.  All copying is done with\nmodule_mutex held, so...\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3b4fe21c7e948e482ced7f9d5a9dd738268f7e5f",
      "old_mode": 33188,
      "old_path": "fs/proc/base.c",
      "new_id": "0c2052c79243803dbc6674c590fd3f9ab44e13e4",
      "new_mode": 33188,
      "new_path": "fs/proc/base.c"
    },
    {
      "type": "modify",
      "old_id": "3e3b92dabe3bb08783df230036c2f2069a784317",
      "old_mode": 33188,
      "old_path": "include/linux/kallsyms.h",
      "new_id": "ae0117a95cfdcc85af7a2da57175def9e816d2ee",
      "new_mode": 33188,
      "new_path": "include/linux/kallsyms.h"
    },
    {
      "type": "modify",
      "old_id": "58d5a10cdf0d24a84543a373b33b9eb54dd3280f",
      "old_mode": 33188,
      "old_path": "include/linux/module.h",
      "new_id": "099ae5932c6838748c49f514e5e125857c80536e",
      "new_mode": 33188,
      "new_path": "include/linux/module.h"
    },
    {
      "type": "modify",
      "old_id": "f66da025cb7f40cb90ddeabc2bffde4878bdf02b",
      "old_mode": 33188,
      "old_path": "kernel/kallsyms.c",
      "new_id": "4e2ec191a127068f893e2b58f3662ec501872618",
      "new_mode": 33188,
      "new_path": "kernel/kallsyms.c"
    },
    {
      "type": "modify",
      "old_id": "bf4dccadf7b80885922116e758aa122f3424aa80",
      "old_mode": 33188,
      "old_path": "kernel/module.c",
      "new_id": "3da76ad32d78c4686aff4f705599ef207350e780",
      "new_mode": 33188,
      "new_path": "kernel/module.c"
    },
    {
      "type": "modify",
      "old_id": "fe9314a89f20c78b8df863d3011d87a1a453f9bd",
      "old_mode": 33188,
      "old_path": "kernel/time/timer_list.c",
      "new_id": "b734ca4bc75e2e80814b48602df3258058c69a0b",
      "new_mode": 33188,
      "new_path": "kernel/time/timer_list.c"
    },
    {
      "type": "modify",
      "old_id": "946ed45f7d2fd49cda8abe74fd6ec48c68c959dd",
      "old_mode": 33188,
      "old_path": "kernel/time/timer_stats.c",
      "new_id": "868f1bceb07ff60bfb87ec2be8d5729a70ece0bd",
      "new_mode": 33188,
      "new_path": "kernel/time/timer_stats.c"
    }
  ]
}
