)]}'
{
  "commit": "8e7199c2c50fff1969302643171eaa33f1ca148f",
  "tree": "1eda919447d1599037fc2216ea27682f05953df4",
  "parents": [
    "57480484f9f7631738ef28b952eca3c9081c4291"
  ],
  "author": {
    "name": "Daniel Stone",
    "email": "daniels@collabora.com",
    "time": "Mon Feb 08 21:12:58 2016 +0000"
  },
  "committer": {
    "name": "Russell King",
    "email": "rmk+kernel@arm.linux.org.uk",
    "time": "Thu Feb 11 09:42:09 2016 +0000"
  },
  "message": "component: remove device from master match list on failed add\n\nCalling component_add() may result in the completion of a set of\ndevices, which will try to bring up a master. In bringing the master\nup, we populate its match array with the current set of children.\n\nIf binding any of the devices fails, component_add() itself will fail,\nfree the struct component entry, and return to the caller. The\nnow-freed entry is never removed from the master\u0027s match array, and\nwill later be used in a futile attempt to bind to freed memory.\n\nBring component_add\u0027s behaviour on failure to bring up a master into\nline with component_del by removing the (to-be-freed) component from\nthe master\u0027s match array.\n\nThe specific case which broke was:\n  - rockchip_drm_drv adds a component master\n  - dwhdmi_rockchip adds a child component in probe (master incomplete)\n  - rockchip_drm_vop adds two children in probe, which completes the\n    set\n  - inside component_add, we try to bring up the master, having\n    populated the master\u0027s match array, and fail with EPROBE_DEFER from\n    dwhdmi_rockchip; we delete the putative component\n  - rockchip_drm_vop\u0027s probe fails and returns EPROBE_DEFER\n  - we later re-probe rockchip_drm_vop and add the component; the\n    master is complete, so we attempt to bring it up again\n  - walking the match array, we find the previous child, whose master\n    pointer doesn\u0027t match (as it has been freed in the meantime)\n  - rockchip_drm_vop probe fails, and will never be attempted again\n\nFixes: ffc30b74fd6d01588bd3fdebc3b1acc0857e6fc8\nSigned-off-by: Daniel Stone \u003cdaniels@collabora.com\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: Thierry Reding \u003ctreding@nvidia.com\u003e\nCc: Laurent Pinchart \u003claurent.pinchart@ideasonboard.com\u003e\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2738039aae9eea49f1ce6c593dc0392199f7ebb9",
      "old_mode": 33188,
      "old_path": "drivers/base/component.c",
      "new_id": "04a1582e80bb83d00fa80c3fb95d325bb165b261",
      "new_mode": 33188,
      "new_path": "drivers/base/component.c"
    }
  ]
}
