)]}'
{
  "commit": "5054e67c7d87f25a9eb7b647adaee5e1c9c7cc5b",
  "tree": "632334186ab923780686bd7ac456f8ac0ea0e620",
  "parents": [
    "6348b5dee54f24f2e78872948653942336f4c14e"
  ],
  "author": {
    "name": "Jens Axboe",
    "email": "axboe@kernel.dk",
    "time": "Fri Nov 08 10:57:08 2013 -0700"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "axboe@kernel.dk",
    "time": "Fri Nov 08 10:57:08 2013 -0700"
  },
  "message": "Fix access-outside-array of o-\u003erwmix[]\n\ngcc 4.9 rightfully complains about it, though in a very obtuse way:\n\n     CC cconv.o\nIn file included from thread_options.h:5:0,\n                  from cconv.c:3:\ncconv.c: In function \u0027convert_thread_options_to_cpu\u0027:\nos/os.h:197:16: warning: iteration 2u invokes undefined behavior\n[-Waggressive-loop-optimizations]\n   __le32_to_cpu(*__val);   \\\n                 ^\nos/os.h:176:28: note: in definition of macro \u0027__le32_to_cpu\u0027\n  #define __le32_to_cpu(x)  (x)\n                             ^\ncconv.c:78:17: note: in expansion of macro \u0027le32_to_cpu\u0027\n    o-\u003erwmix[i] \u003d le32_to_cpu(top-\u003erwmix[i]);\n                  ^\ncconv.c:63:2: note: containing loop\n   for (i \u003d 0; i \u003c DDIR_RWDIR_CNT; i++) {\n   ^\nIn file included from thread_options.h:5:0,\n                  from cconv.c:3:\ncconv.c: In function \u0027convert_thread_options_to_net\u0027:\nos/os.h:209:16: warning: iteration 2u invokes undefined behavior\n[-Waggressive-loop-optimizations]\n   __cpu_to_le32(*__val);   \\\n                 ^\nos/os.h:179:28: note: in definition of macro \u0027__cpu_to_le32\u0027\n  #define __cpu_to_le32(x)  (x)\n                             ^\ncconv.c:372:19: note: in expansion of macro \u0027cpu_to_le32\u0027\n    top-\u003erwmix[i] \u003d cpu_to_le32(o-\u003erwmix[i]);\n                    ^\ncconv.c:352:2: note: containing loop\n   for (i \u003d 0; i \u003c DDIR_RWDIR_CNT; i++) {\n   ^\nIn file included from thread_options.h:5:0,\n                  from cconv.c:3:\ncconv.c: In function \u0027fio_test_cconv\u0027:\nos/os.h:209:16: warning: iteration 2u invokes undefined behavior\n[-Waggressive-loop-optimizations]\n   __cpu_to_le32(*__val);   \\\n                 ^\nos/os.h:179:28: note: in definition of macro \u0027__cpu_to_le32\u0027\n  #define __cpu_to_le32(x)  (x)\n                             ^\ncconv.c:372:19: note: in expansion of macro \u0027cpu_to_le32\u0027\n    top-\u003erwmix[i] \u003d cpu_to_le32(o-\u003erwmix[i]);\n                    ^\ncconv.c:352:2: note: containing loop\n   for (i \u003d 0; i \u003c DDIR_RWDIR_CNT; i++) {\n   ^\nIn file included from thread_options.h:5:0,\n                  from cconv.c:3:\nos/os.h:197:16: warning: iteration 2u invokes undefined behavior\n[-Waggressive-loop-optimizations]\n   __le32_to_cpu(*__val);   \\\n                 ^\nos/os.h:176:28: note: in definition of macro \u0027__le32_to_cpu\u0027\n  #define __le32_to_cpu(x)  (x)\n                             ^\ncconv.c:78:17: note: in expansion of macro \u0027le32_to_cpu\u0027\n    o-\u003erwmix[i] \u003d le32_to_cpu(top-\u003erwmix[i]);\n                  ^\ncconv.c:63:2: note: containing loop\n   for (i \u003d 0; i \u003c DDIR_RWDIR_CNT; i++) {\n   ^\n\nFix it by extending the rwmix indexes to the full rwdir count,\neven though it doesn\u0027t support trim as part of the mix (yet).\n\nReported-by: Bruce Cran \u003cbruce@cran.org.uk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aefd4183248313a190973759b353f2bc433cb782",
      "old_mode": 33188,
      "old_path": "server.h",
      "new_id": "5d9b6ccadae36c8114918466f9e8b52f794c79bd",
      "new_mode": 33188,
      "new_path": "server.h"
    },
    {
      "type": "modify",
      "old_id": "3f345c56b3bafaca9eb5acd1210e58633fb63f86",
      "old_mode": 33188,
      "old_path": "thread_options.h",
      "new_id": "484b16a56e7568dc42fd55847be967e469ae1070",
      "new_mode": 33188,
      "new_path": "thread_options.h"
    }
  ]
}
