)]}'
{
  "commit": "5b1d07ed0e5b2707f786957c7a40eb2f399c84a8",
  "tree": "3cfb5d2004dd9858ef9d4d08f6cdc42b886354fb",
  "parents": [
    "da60682c116855cf342926b4f3427079400ee7e6"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Wed Apr 15 19:35:01 2009 +0100"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Apr 15 13:55:14 2009 -0700"
  },
  "message": "RCU: Don\u0027t try and predeclare inline funcs as it upsets some versions of gcc\n\nDon\u0027t try and predeclare inline funcs like this:\n\n\tstatic inline void wait_migrated_callbacks(void)\n\t...\n\tstatic void _rcu_barrier(enum rcu_barrier type)\n\t{\n\t\t...\n\t\twait_migrated_callbacks();\n\t}\n\t...\n\tstatic inline void wait_migrated_callbacks(void)\n\t{\n\t\twait_event(rcu_migrate_wq, !atomic_read(\u0026rcu_migrate_type_count));\n\t}\n\nas it upsets some versions of gcc under some circumstances:\n\n\tkernel/rcupdate.c: In function `_rcu_barrier\u0027:\n\tkernel/rcupdate.c:125: sorry, unimplemented: inlining failed in call to \u0027wait_migrated_callbacks\u0027: function body not available\n\tkernel/rcupdate.c:152: sorry, unimplemented: called from here\n\nThis can be dealt with by simply putting the static variables (rcu_migrate_*)\nat the top, and moving the implementation of the function up so that it\nreplaces its forward declaration.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c7b8457d0d234203517f7aa6a1ddc6b724ef447",
      "old_mode": 33188,
      "old_path": "kernel/rcupdate.c",
      "new_id": "a967c9feb90a045f4f7f3631dbc93ad5aebf67f9",
      "new_mode": 33188,
      "new_path": "kernel/rcupdate.c"
    }
  ]
}
