)]}'
{
  "commit": "ca4787b779dd698a2a33a328aa5fa90a3e954077",
  "tree": "678eddc5cfd0b366b1ef5662cf6ccdd7b7b2f135",
  "parents": [
    "a327ca2c2674c5a9a0073421df19bfc362698136"
  ],
  "author": {
    "name": "Tim Abbott",
    "email": "tabbott@MIT.EDU",
    "time": "Mon Jan 05 08:40:10 2009 -0600"
  },
  "committer": {
    "name": "Rusty Russell",
    "email": "rusty@rustcorp.com.au",
    "time": "Mon Jan 05 08:40:11 2009 +1030"
  },
  "message": "kernel/module.c: compare symbol values when marking symbols as exported in /proc/kallsyms.\n\nWhen there are two symbols in a module with the same name, one of which is\nexported, both will be marked as exported in /proc/kallsyms.  There aren\u0027t\nany instances of this in the current kernel, but it is easy to construct a\nsimple module with two compilation units that exhibits the problem.\n\n$ objdump -j .text -t testmod.ko | grep foo\n00000000 l     F .text\t00000032 foo\n00000080 g     F .text\t00000001 foo\n$ sudo insmod testmod.ko\n$ grep \"T foo\" /proc/kallsyms\nc28e8000 T foo\t[testmod]\nc28e8080 T foo\t[testmod]\n\nFix this by comparing the symbol values once we\u0027ve found the exported\nsymbol table entry matching the symbol name.  Tested using Ksplice:\n\n$ ksplice-create --patch\u003dthis_commit.patch --id\u003dbar .\n$ sudo ksplice-apply ksplice-bar.tar.gz\nDone!\n$ grep \"T foo\" /proc/kallsyms\nc28e8080 T foo\t[testmod]\n\nSigned-off-by: Tim Abbott \u003ctabbott@mit.edu\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd2a54155b54ab45df7ac5a9e7e13344e4611b1e",
      "old_mode": 33188,
      "old_path": "kernel/module.c",
      "new_id": "895c5675edb7e4f4b692937e1e071f4135336e67",
      "new_mode": 33188,
      "new_path": "kernel/module.c"
    }
  ]
}
