)]}'
{
  "commit": "65afac7d80ab3bc9f81e75eafb71eeb92a3ebdef",
  "tree": "544c1e9192d8e47f1d1b1d54e36365f393ec7be0",
  "parents": [
    "964fe080d94db82a3268443e9b9ece4c60246414"
  ],
  "author": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Thu Oct 29 08:56:16 2009 -0600"
  },
  "committer": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Thu Oct 29 08:56:17 2009 +1030"
  },
  "message": "param: fix lots of bugs with writing charp params from sysfs, by leaking mem.\n\ne180a6b7759a \"param: fix charp parameters set via sysfs\" fixed the case\nwhere charp parameters written via sysfs were freed, leaving drivers\naccessing random memory.\n\nUnfortunately, storing a flag in the kparam struct was a bad idea: it\u0027s\nrodata so setting it causes an oops on some archs.  But that\u0027s not all:\n\n1) module_param_array() on charp doesn\u0027t work reliably, since we use an\n   uninitialized temporary struct kernel_param.\n2) there\u0027s a fundamental race if a module uses this parameter and then\n   it\u0027s changed: they will still access the old, freed, memory.\n\nThe simplest fix (ie. for 2.6.32) is to never free the memory.  This\nprevents all these problems, at cost of a memory leak.  In practice, there\nare only 18 places where a charp is writable via sysfs, and all are\nroot-only writable.\n\nReported-by: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christof Schmitt \u003cchristof.schmitt@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: stable@kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6547c3cdbc4c17cddda61d0f92fe83352de2f77c",
      "old_mode": 33188,
      "old_path": "include/linux/moduleparam.h",
      "new_id": "82a9124f7d758ae74ea04812da2cb51732dde893",
      "new_mode": 33188,
      "new_path": "include/linux/moduleparam.h"
    },
    {
      "type": "modify",
      "old_id": "9da58eabdcb246dd3b156d7799ca49bf2799a304",
      "old_mode": 33188,
      "old_path": "kernel/params.c",
      "new_id": "95ef27cf8e82e95c8f5a1e6adf4cad82589b6865",
      "new_mode": 33188,
      "new_path": "kernel/params.c"
    }
  ]
}
