)]}'
{
  "commit": "e4425815a8d45e730f3a0bd52b149ab65bbad73b",
  "tree": "dfde7c17421015d922718609b539f7b4d5e3e03f",
  "parents": [
    "e7ce7b473f9131b3073baa6dae63cd22de1c4d23"
  ],
  "author": {
    "name": "Cesar Eduardo Barros",
    "email": "cesarb@cesarb.eti.br",
    "time": "Mon Nov 25 22:00:41 2013 -0200"
  },
  "committer": {
    "name": "Zefan Li",
    "email": "lizefan@huawei.com",
    "time": "Mon Feb 02 17:04:53 2015 +0800"
  },
  "message": "crypto: more robust crypto_memneq\n\ncommit fe8c8a126806fea4465c43d62a1f9d273a572bf5 upstream.\n\n[Only use the compiler.h portion of this patch, to get the\nOPTIMIZER_HIDE_VAR() macro, which we need for other -stable patches\n- gregkh]\n\nDisabling compiler optimizations can be fragile, since a new\noptimization could be added to -O0 or -Os that breaks the assumptions\nthe code is making.\n\nInstead of disabling compiler optimizations, use a dummy inline assembly\n(based on RELOC_HIDE) to block the problematic kinds of optimization,\nwhile still allowing other optimizations to be applied to the code.\n\nThe dummy inline assembly is added after every OR, and has the\naccumulator variable as its input and output. The compiler is forced to\nassume that the dummy inline assembly could both depend on the\naccumulator variable and change the accumulator variable, so it is\nforced to compute the value correctly before the inline assembly, and\ncannot assume anything about its value after the inline assembly.\n\nThis change should be enough to make crypto_memneq work correctly (with\ndata-independent timing) even if it is inlined at its call sites. That\ncan be done later in a followup patch.\n\nCompile-tested on x86_64.\n\nSigned-off-by: Cesar Eduardo Barros \u003ccesarb@cesarb.eti.br\u003e\nAcked-by: Daniel Borkmann \u003cdborkman@redhat.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nSigned-off-by: Zefan Li \u003clizefan@huawei.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7970e31c8c0ef273b7ae053847ea7e79b9b0faf2",
      "old_mode": 33188,
      "old_path": "include/linux/compiler-gcc.h",
      "new_id": "ea9cffe22ec4afef7725d93f862a63e82bc97490",
      "new_mode": 33188,
      "new_path": "include/linux/compiler-gcc.h"
    },
    {
      "type": "modify",
      "old_id": "cba9593c40473f6cd22f603273cb5a1460cf6b0d",
      "old_mode": 33188,
      "old_path": "include/linux/compiler-intel.h",
      "new_id": "1a97cac7dcb2d4806d8db6bb6a43972bd6185325",
      "new_mode": 33188,
      "new_path": "include/linux/compiler-intel.h"
    }
  ]
}
