)]}'
{
  "commit": "ed2ddbf88c0ddeeae4c78bb306a116dfd867c55c",
  "tree": "de6d6828c03f98be6fc41e8acf3b3e52df28be9b",
  "parents": [
    "4b9fcb0ec60584d639ad105c42b75a3447071e47"
  ],
  "author": {
    "name": "Pierre Peiffer",
    "email": "pierre.peiffer@bull.net",
    "time": "Fri Feb 08 04:18:57 2008 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Fri Feb 08 09:22:26 2008 -0800"
  },
  "message": "IPC: make struct ipc_ids static in ipc_namespace\n\nEach ipc_namespace contains a table of 3 pointers to struct ipc_ids (3 for\nmsg, sem and shm, structure used to store all ipcs) These \u0027struct ipc_ids\u0027\nare dynamically allocated for each icp_namespace as the ipc_namespace\nitself (for the init namespace, they are initialized with pointers to\nstatic variables instead)\n\nIt is so for historical reason: in fact, before the use of idr to store the\nipcs, the ipcs were stored in tables of variable length, depending of the\nmaximum number of ipc allowed.  Now, these \u0027struct ipc_ids\u0027 have a fixed\nsize.  As they are allocated in any cases for each new ipc_namespace, there\nis no gain of memory in having them allocated separately of the struct\nipc_namespace.\n\nThis patch proposes to make this table static in the struct ipc_namespace.\nThus, we can allocate all in once and get rid of all the code needed to\nallocate and free these ipc_ids separately.\n\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nAcked-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\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": "a491fc9dd2319b7c90fa19b05a111abc7ba747c2",
      "old_mode": 33188,
      "old_path": "include/linux/ipc_namespace.h",
      "new_id": "6db5522eef5122859d1b39cbacc839b3ab9740b8",
      "new_mode": 33188,
      "new_path": "include/linux/ipc_namespace.h"
    },
    {
      "type": "modify",
      "old_id": "5879bfeb79ca77527b48b1e074ebe2aad0e2b8fa",
      "old_mode": 33188,
      "old_path": "ipc/msg.c",
      "new_id": "ab0c38b29533ca497b172edf301b24137e31d543",
      "new_mode": 33188,
      "new_path": "ipc/msg.c"
    },
    {
      "type": "modify",
      "old_id": "cef1139e6c96f49162cff04e32026257597d6f2d",
      "old_mode": 33188,
      "old_path": "ipc/namespace.c",
      "new_id": "1fed8922d475e6bed7c3ab998e3f12025399ab04",
      "new_mode": 33188,
      "new_path": "ipc/namespace.c"
    },
    {
      "type": "modify",
      "old_id": "7836edb0cf967f645470dfdac3239477f03bcb57",
      "old_mode": 33188,
      "old_path": "ipc/sem.c",
      "new_id": "1f7e28d1d25d944b9316f329e8674b2552b34755",
      "new_mode": 33188,
      "new_path": "ipc/sem.c"
    },
    {
      "type": "modify",
      "old_id": "07f4b7abc80a41024774c5ccd842a264f9159d8e",
      "old_mode": 33188,
      "old_path": "ipc/shm.c",
      "new_id": "fe92471e19c71ff3d7b107777c3533df7e02e5fb",
      "new_mode": 33188,
      "new_path": "ipc/shm.c"
    },
    {
      "type": "modify",
      "old_id": "910db7748199a42d32e6408ad940af1063e5185d",
      "old_mode": 33188,
      "old_path": "ipc/util.c",
      "new_id": "fd1b50da9db8858793a11c0e6c503fb523280786",
      "new_mode": 33188,
      "new_path": "ipc/util.c"
    },
    {
      "type": "modify",
      "old_id": "ca245fae2f98f2892cbd29427433804f6337f651",
      "old_mode": 33188,
      "old_path": "ipc/util.h",
      "new_id": "f37d160c98fe7c5c42b44d9611979a4a79d793fc",
      "new_mode": 33188,
      "new_path": "ipc/util.h"
    }
  ]
}
