)]}'
{
  "commit": "aeb398768345c74a9e4c01aa3ebf839e858312ec",
  "tree": "c7755f40260ccf89e8f3b765a9b44dcbebcae896",
  "parents": [
    "40bdac7dbc161639a498697f34fbd1ee800e51f4"
  ],
  "author": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Sun Feb 08 22:32:31 2009 -0800"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Sun Feb 08 22:32:31 2009 -0800"
  },
  "message": "sparc64: Fix probe_kernel_{read,write}().\n\nThis is based upon a report from Chris Torek and his initial patch.\nFrom Chris\u0027s report:\n\n--------------------\nThis came up in testing kgdb, using the built-in tests -- turn\non CONFIG_KGDB_TESTS, then\n\n    echo V1 \u003e /sys/module/kgdbts/parameters/kgdbts\n\n-- but it would affect using kgdb if you were debugging and looking\nat bad pointers.\n--------------------\n\nWhen we get a copy_{from,to}_user() request and the %asi is set to\nsomething other than ASI_AIUS (which is userspace) then we branch off\nto a routine called memcpy_user_stub().  It just does a straight\nmemcpy since we are copying from kernel to kernel in this case.\n\nThe logic was that since source and destination are both kernel\npointers we don\u0027t need to have exception checks.\n\nBut for what probe_kernel_{read,write}() is trying to do, we have to\nhave the checks, otherwise things like kgdb bad kernel pointer\naccesses don\u0027t do the right thing.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9b0e58f9f970c6f4964913c008020dda19bb8461",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/GENcopy_from_user.S",
      "new_id": "b7d0bd6b14063bc1e62cfed3c0e32f0b43799396",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/GENcopy_from_user.S"
    },
    {
      "type": "modify",
      "old_id": "ce79b495c65d0273e6e07f794c6ecf0da4d81276",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/GENcopy_to_user.S",
      "new_id": "780550e1afc74fd6efe38ef16f73a07ea021a8f2",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/GENcopy_to_user.S"
    },
    {
      "type": "modify",
      "old_id": "01ac546a86f4f5d620383f4741bcddbdac86f2d5",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/NG2copy_from_user.S",
      "new_id": "119ccb9a54f49e2ac2724650060eb7a1d70e8d9e",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/NG2copy_from_user.S"
    },
    {
      "type": "modify",
      "old_id": "c477e1594a72efc7c70131c46b61baf64ee8a57b",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/NG2copy_to_user.S",
      "new_id": "7fe1ccefd9d056a104407c8d1595095c7fc5add8",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/NG2copy_to_user.S"
    },
    {
      "type": "modify",
      "old_id": "39bb8912c6e7d5d4eeaf4d3de76cc0341202e1fe",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/NGcopy_from_user.S",
      "new_id": "5d1e4d1ac21edf09a664663dc005e1fcae805b6a",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/NGcopy_from_user.S"
    },
    {
      "type": "modify",
      "old_id": "bf62fc1a26c72e92e0437272e8edd714bdb51e72",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/NGcopy_to_user.S",
      "new_id": "ff630dcb273c9649de6fc9e145fce42e72667787",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/NGcopy_to_user.S"
    },
    {
      "type": "modify",
      "old_id": "f14efdd6d4a9371b91d18dbeb5f0a8b39fa8cef3",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/U1copy_from_user.S",
      "new_id": "a6ae2ea04bf5dfbffda2884a6a46b051ae2ac2a8",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/U1copy_from_user.S"
    },
    {
      "type": "modify",
      "old_id": "59d531b4a1a5f5104e6b86d37b715ad42ba5a9e7",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/U1copy_to_user.S",
      "new_id": "f4b970eeb485f838ce23dc5507a5bccd6defd348",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/U1copy_to_user.S"
    },
    {
      "type": "modify",
      "old_id": "b4cbfe5a97bafdee42c4dc0c9ce6dcde57ab8b04",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/U3copy_to_user.S",
      "new_id": "ef1e493afdfa900a1b32863c2bf2995560cbe0cd",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/U3copy_to_user.S"
    },
    {
      "type": "modify",
      "old_id": "884f46499d4e03b6957399dc99397ee698634bef",
      "old_mode": 33188,
      "old_path": "arch/sparc/lib/copy_in_user.S",
      "new_id": "302c0e60dc2ceb48a3212840ac7891f337419d14",
      "new_mode": 33188,
      "new_path": "arch/sparc/lib/copy_in_user.S"
    }
  ]
}
