)]}'
{
  "commit": "91d2c34a4eed32876ca333b0ca44f3bc56645805",
  "tree": "26799e5cb1dff486a0695e1be8618064d12fe0bd",
  "parents": [
    "c18370f5b2949d9cca519355f33690b75e1e7c8b"
  ],
  "author": {
    "name": "Herbert Xu",
    "email": "herbert@gondor.apana.org.au",
    "time": "Thu Jun 10 16:12:50 2010 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Tue Jun 15 11:00:40 2010 -0700"
  },
  "message": "bridge: Fix netpoll support\n\nThere are multiple problems with the newly added netpoll support:\n\n1) Use-after-free on each netpoll packet.\n2) Invoking unsafe code on netpoll/IRQ path.\n3) Breaks when netpoll is enabled on the underlying device.\n\nThis patch fixes all of these problems.  In particular, we now\nallocate proper netpoll structures for each underlying device.\n\nWe only allow netpoll to be enabled on the bridge when all the\ndevices underneath it support netpoll.  Once it is enabled, we\ndo not allow non-netpoll devices to join the bridge (until netpoll\nis disabled again).\n\nThis allows us to do away with the npinfo juggling that caused\nproblem number 1.\n\nIncidentally this patch fixes number 2 by bypassing unsafe code\nsuch as multicast snooping and netfilter.\n\nReported-by: Qianfeng Zhang \u003cfrzhang@redhat.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f8cb908db81fb9217484d9f7a2c444cae4f2c7fa",
      "old_mode": 33188,
      "old_path": "net/bridge/br_device.c",
      "new_id": "6f3a9279be3047554d1c67c3b9e447a597037793",
      "new_mode": 33188,
      "new_path": "net/bridge/br_device.c"
    },
    {
      "type": "modify",
      "old_id": "a98ef13930979a129a8d0195e5a94dee3ec7bd2a",
      "old_mode": 33188,
      "old_path": "net/bridge/br_forward.c",
      "new_id": "6e97711fd2c54fac0899447d2c15651709cadc78",
      "new_mode": 33188,
      "new_path": "net/bridge/br_forward.c"
    },
    {
      "type": "modify",
      "old_id": "d9242342837e4d4857e0e89bc8b51bb7f0f7b27e",
      "old_mode": 33188,
      "old_path": "net/bridge/br_if.c",
      "new_id": "97ac9da4d76c739a537a2c576e57a1748a0f967e",
      "new_mode": 33188,
      "new_path": "net/bridge/br_if.c"
    },
    {
      "type": "modify",
      "old_id": "c83519b555bb49085336f745653fb339b6dc8093",
      "old_mode": 33188,
      "old_path": "net/bridge/br_private.h",
      "new_id": "0f5394c4f2f1d976536c3060cfa2a0fc924a0da0",
      "new_mode": 33188,
      "new_path": "net/bridge/br_private.h"
    }
  ]
}
