)]}'
{
  "commit": "35df17c57cecb08f0120fb18926325f1093dc429",
  "tree": "dc79780b3133e55dc591e35238fdb313e8e0219e",
  "parents": [
    "30f3174d1c506db2c6d2c1dddc9c064e741d6b76"
  ],
  "author": {
    "name": "Shailabh Nagar",
    "email": "nagar@watson.ibm.com",
    "time": "Thu Aug 31 21:27:38 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Sep 01 11:39:08 2006 -0700"
  },
  "message": "[PATCH] task delay accounting fixes\n\nCleanup allocation and freeing of tsk-\u003edelays used by delay accounting.\nThis solves two problems reported for delay accounting:\n\n1. oops in __delayacct_blkio_ticks\nhttp://www.uwsg.indiana.edu/hypermail/linux/kernel/0608.2/1844.html\n\nCurrently tsk-\u003edelays is getting freed too early in task exit which can\ncause a NULL tsk-\u003edelays to get accessed via reading of /proc/\u003ctgid\u003e/stats.\n The patch fixes this problem by freeing tsk-\u003edelays closer to when\ntask_struct itself is freed up.  As a result, it also eliminates the use of\ntsk-\u003edelays_lock which was only being used (inadequately) to safeguard\naccess to tsk-\u003edelays while a task was exiting.\n\n2. Possible memory leak in kernel/delayacct.c\nhttp://www.uwsg.indiana.edu/hypermail/linux/kernel/0608.2/1389.html\n\nThe patch cleans up tsk-\u003edelays allocations after a bad fork which was\nmissing earlier.\n\nThe patch has been tested to fix the problems listed above and stress\ntested with rapid calls to delay accounting\u0027s taskstats command interface\n(which is the other path that can access the same data, besides the /proc\ninterface causing the oops above).\n\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "11487b6e7127ff68ec12cada74c672af72efcffb",
      "old_mode": 33188,
      "old_path": "include/linux/delayacct.h",
      "new_id": "561e2a77805c582fdebcd3d588a222d8adec9a6c",
      "new_mode": 33188,
      "new_path": "include/linux/delayacct.h"
    },
    {
      "type": "modify",
      "old_id": "6674fc1e51bf3dfe0677633e489231a91c271dac",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "34ed0d99b1bd1ccde1dee28a164bfded8fb1fc37",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "57ca3730205d75f0734ac7ad418d85cced3025ef",
      "old_mode": 33188,
      "old_path": "kernel/delayacct.c",
      "new_id": "36752f124c6a1897809edd3788a6ed88a3072ba8",
      "new_mode": 33188,
      "new_path": "kernel/delayacct.c"
    },
    {
      "type": "modify",
      "old_id": "dba194a8d41619d689d4e53f9819bb51583cb72c",
      "old_mode": 33188,
      "old_path": "kernel/exit.c",
      "new_id": "a4c19a52ce46dbee40cfa0d67e37f406cf9329ed",
      "new_mode": 33188,
      "new_path": "kernel/exit.c"
    },
    {
      "type": "modify",
      "old_id": "aa36c43783cc01f296eb1c755cc4f17b51b55ccc",
      "old_mode": 33188,
      "old_path": "kernel/fork.c",
      "new_id": "f9b014e3e7002e243ca8120f8f81aa33bf0f0f81",
      "new_mode": 33188,
      "new_path": "kernel/fork.c"
    }
  ]
}
