)]}'
{
  "commit": "0696b711e4be45fa104c12329f617beb29c03f78",
  "tree": "96292fdc4ab443d6218077d363548532df6cbd8b",
  "parents": [
    "a9366e61b03f55a6e009e687ad10e706714c9907"
  ],
  "author": {
    "name": "Lin Ming",
    "email": "ming.m.lin@intel.com",
    "time": "Tue Nov 17 13:49:50 2009 +0800"
  },
  "committer": {
    "name": "Thomas Gleixner",
    "email": "tglx@linutronix.de",
    "time": "Tue Nov 17 11:52:34 2009 +0100"
  },
  "message": "timekeeping: Fix clock_gettime vsyscall time warp\n\nSince commit 0a544198 \"timekeeping: Move NTP adjusted clock multiplier\nto struct timekeeper\" the clock multiplier of vsyscall is updated with\nthe unmodified clock multiplier of the clock source and not with the\nNTP adjusted multiplier of the timekeeper.\n\nThis causes user space observerable time warps:\nnew CLOCK-warp maximum: 120 nsecs,  00000025c337c537 -\u003e 00000025c337c4bf\n\nAdd a new argument \"mult\" to update_vsyscall() and hand in the\ntimekeeping internal NTP adjusted multiplier.\n\nSigned-off-by: Lin Ming \u003cming.m.lin@intel.com\u003e\nCc: \"Zhang Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nLKML-Reference: \u003c1258436990.17765.83.camel@minggr.sh.intel.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4990495d753189933bebf64f18d1f52303b6e6cd",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/time.c",
      "new_id": "a35c661e5e89a544b097f731af1e65486c3077c2",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "a136a11c490d0f36a9b32812132e682c38262f8f",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/time.c",
      "new_id": "39713312fbc734a897d0b91fa9bc34ec2ca7bd22",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "34162a0b2caa6483f397306cc3e21a457b83b051",
      "old_mode": 33188,
      "old_path": "arch/s390/kernel/time.c",
      "new_id": "68e1ecf5ebabf657a6c7e053577752dc69d6046b",
      "new_mode": 33188,
      "new_path": "arch/s390/kernel/time.c"
    },
    {
      "type": "modify",
      "old_id": "8cb4974ff5990c19267077d473caeeb504fe5bae",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/vsyscall_64.c",
      "new_id": "62f39d79b7754557f0725d5b80b958e5d7c245d8",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/vsyscall_64.c"
    },
    {
      "type": "modify",
      "old_id": "83d2fbd81b93a056ab7a55c1a1323deb744ef75a",
      "old_mode": 33188,
      "old_path": "include/linux/clocksource.h",
      "new_id": "95e4995d99879f921b3f287ffae429671f9bba4d",
      "new_mode": 33188,
      "new_path": "include/linux/clocksource.h"
    },
    {
      "type": "modify",
      "old_id": "c3a4e2907eaaf3ec25941d0cc69b04ac35b8dc40",
      "old_mode": 33188,
      "old_path": "kernel/time/timekeeping.c",
      "new_id": "2a6d3e3e2c3eceedcbcf42c98439acb656e0dede",
      "new_mode": 33188,
      "new_path": "kernel/time/timekeeping.c"
    }
  ]
}
