)]}'
{
  "log": [
    {
      "commit": "bf74ad5bc41727d5f2f1c6bedb2c1fac394de731",
      "tree": "1e46f41550a9fe6df40fedeace23f5aff656b478",
      "parents": [
        "6d20b035dee4300e9786c6e1cb77a765c7f9460a"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Thu Nov 17 16:54:12 2005 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 04 16:18:08 2006 -0800"
      },
      "message": "[PATCH] Hold the device\u0027s parent\u0027s lock during probe and remove\n\nThis patch (as604) makes the driver core hold a device\u0027s parent\u0027s lock\nas well as the device\u0027s lock during calls to the probe and remove\nmethods in a driver.  This facility is needed by USB device drivers,\nowing to the peculiar way USB devices work:\n\n\tA device provides multiple interfaces, and drivers are bound\n\tto interfaces rather than to devices;\n\n\tNevertheless a reset, reset-configuration, suspend, or resume\n\taffects the entire device and requires the caller to hold the\n\tlock for the device, not just a lock for one of the interfaces.\n\nSince a USB driver\u0027s probe method is always called with the interface\nlock held, the locking order rules (always lock parent before child)\nprevent these methods from acquiring the device lock.  The solution\nprovided here is to call all probe and remove methods, for all devices\n(not just USB), with the parent lock already acquired.\n\nAlthough currently only the USB subsystem requires these changes, people\nhave mentioned in prior discussion that the overhead of acquiring an\nextra semaphore in all the prove/remove sequences is not overly large.\n\nUp to now, the USB core has been using its own set of private\nsemaphores.  A followup patch will remove them, relying entirely on the\ndevice semaphores provided by the driver core.\n\nThe code paths affected by this patch are:\n\n\tdevice_add and device_del: The USB core already holds the parent\n\tlock, so no actual change is needed.\n\n\tdriver_register and driver_unregister: The driver core will now\n\tlock both the parent and the device before probing or removing.\n\n\tdriver_bind and driver_unbind (in sysfs): These routines will\n\tnow lock both the parent and the device before binding or\n\tunbinding.\n\n\tbus_rescan_devices: The helper routine will lock the parent\n\tbefore probing a device.\n\nI have not tested this patch for conflicts with other subsystems.  As\nfar as I can see, the only possibility of conflict would lie in the\nbus_rescan_devices pathway, and it seems pretty remote.  Nevertheless,\nit would be good for this to get a lot of testing in -mm.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "2b08c8d0468866f86da97f836c6ac14338cb81a9",
      "tree": "eca60a3b6811a825cd3642a666aa523a18fe484b",
      "parents": [
        "133747e8d1e912863edfb3869e36b97b9939d4fc"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Wed Nov 23 15:43:50 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 23 23:03:06 2005 -0800"
      },
      "message": "[PATCH] Small fixes to driver core\n\nThis patch (as603) makes a few small fixes to the driver core:\n\nChange spin_lock_irq for a klist lock to spin_lock;\n\nFix reference count leaks;\n\nMinor spelling and formatting changes.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c898c7f2f286b204fefc5dddb568f755d195d0c",
      "tree": "026fead9aef220a5fd994e2eaa269ed598651d39",
      "parents": [
        "0b50f81d5a63428f131ff20596f4e3d473e5b94f"
      ],
      "author": {
        "name": "Daniel Ritz",
        "email": "daniel.ritz@gmx.ch",
        "time": "Thu Sep 22 00:47:11 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 22 07:58:24 2005 -0700"
      },
      "message": "[PATCH] Driver Core: fis bus rescan devices race\n\nbus_rescan_devices_helper() does not hold the dev-\u003esem when it checks for\n!dev-\u003edriver().  device_attach() holds the sem, but calls again\ndevice_bind_driver() even when dev-\u003edriver is set.\n\nWhat happens is that a first device_attach() call (module insertion time)\nis on the way binding the device to a driver.  Another thread calls\nbus_rescan_devices().  Now when bus_rescan_devices_helper() checks for\ndev-\u003edriver it is still NULL \u0027cos the the prior device_attach() is not yet\nfinished.  But as soon as the first one releases the dev-\u003esem the second\ndevice_attach() tries to rebind the already bound device again.\ndevice_bind_driver() does this blindly which leads to a corrupt\ndriver-\u003eklist_devices list (the device links itself, the head points to the\ndevice).  Later a call to device_release_driver() sets dev-\u003edriver to NULL\nand breaks the link it has to itself on knode_driver.  Rmmoding the driver\nlater calls driver_detach() which leads to an endless loop \u0027cos the list\nhead in klist_devices still points to the device.  And since dev-\u003edriver is\nNULL it\u0027s stuck with the same device forever.  Boom.  And rmmod hangs.\n\nVery easy to reproduce with new-style pcmcia and a 16bit card.  Just loop\nmodprobe \u003cpcmcia-modules\u003e ;cardctl eject; rmmod \u003ccard driver, pcmcia\nmodules\u003e.\n\nEasiest fix is to check if the device is already bound to a driver in\ndevice_bind_driver().  This avoids the double binding.\n\nSigned-off-by: Daniel Ritz \u003cdaniel.ritz@gmx.ch\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d856f1e337782326c638c70c0b4df2b909350dec",
      "tree": "15c070e3909cbd260b2616001f0a6dde4a0c24fa",
      "parents": [
        "fef6ec8dd96205fb22e3cfe2e4abd69d89413631"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@SteelEye.com",
        "time": "Fri Aug 19 09:14:01 2005 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Sep 05 16:03:13 2005 -0700"
      },
      "message": "[PATCH] klist: fix klist to have the same klist_add semantics as list_head\n\nat the moment, the list_head semantics are\n\nlist_add(node, head)\n\nwhereas current klist semantics are\n\nklist_add(head, node)\n\nThis is bound to cause confusion, and since klist is the newcomer, it\nshould follow the list_head semantics.\n\nI also added missing include guards to klist.h\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "afdce75f1eaebcf358b7594ba7969aade105c3b0",
      "tree": "5374a0e85e03c8706a1dd95478b9d0a3312917e0",
      "parents": [
        "151ef38f7c0ec1b0420f04438b0316e3a30bf2e4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jun 22 16:09:05 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jun 29 22:48:04 2005 -0700"
      },
      "message": "[PATCH] driver core: Add the ability to bind drivers to devices from userspace\n\nThis adds a single file, \"bind\", to the sysfs directory of every driver\nregistered with the driver core.  To bind a device to a driver, write\nthe bus id of the device you wish to bind to that specific driver to the\n\"bind\" file (remember to not add a trailing \\n).  If that bus id matches\na device on that bus, and it does not currently have a driver bound to\nit, the probe sequence will be initiated with that driver and device.\n\nNote, this requires that the driver itself be willing and able to accept\nthat device (usually through a device id type table).  This patch does\nnot make it possible to override the driver\u0027s id table.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "ca2b94ba12f3c36fd3d6ed9d38b3798d4dad0d8b",
      "tree": "d9b85e0f423d1cd0a9ad1c72cec7464bcf50c126",
      "parents": [
        "acaefc25d21f850e47ecc5098d1e0bc442c526be"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed May 18 10:42:23 2005 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:31 2005 -0700"
      },
      "message": "[PATCH] driver core: fix error handling in bus_add_device\n\nThe error handling in bus_add_device() and device_attach() is simply\nnon-existing. This patch propagates any error from device_attach to\nthe upper layers to allow for a proper recovery.\n\nFrom: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "c95a6b057b108c2b7add35cba1354f9af921349e",
      "tree": "5a312f634b0aec295201a93020ba025d840e5f21",
      "parents": [
        "6623415687eaffef49429292ab062bb046ee3311"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Fri May 06 15:38:33 2005 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:28 2005 -0700"
      },
      "message": "[PATCH] driver core: Fix races in driver_detach()\n\nThis patch is intended for your \"driver\" tree.  It fixes several subtle\nraces in driver_detach() and device_release_driver() in the driver-model\ncore.\n\nThe major change is to use klist_remove() rather than klist_del() when\ntaking a device off its driver\u0027s list.  There\u0027s no other way to guarantee\nthat the list pointers will be updated before some other driver binds to\nthe device.  For this to work driver_detach() can\u0027t use a klist iterator,\nso the loop over the devices must be written out in full.  In addition the\npatch protects against the possibility that, when a driver and a device\nare unregistered at the same time, one may be unloaded from memory before\nthe other is finished using it.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "0d3e5a2e39b6ba2974e9e7c2a429018c45de8e76",
      "tree": "30e584b73c356adce49dcc9df75332abaef95470",
      "parents": [
        "b86c1df1f98d16c999423a3907eb40a9423f481e"
      ],
      "author": {
        "name": "Patrick Mochel",
        "email": "mochel@digitalimplant.org",
        "time": "Tue Apr 05 23:46:33 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:27 2005 -0700"
      },
      "message": "[PATCH] Driver Core: fix bk-driver-core kills ppc64\n\nThere\u0027s no check to see if the device is already bound to a driver, which\ncould do bad things.  The first thing to go wrong is that it will try to match\na driver with a device already bound to one.  In some cases (it appears with\nUSB with drivers/usb/core/usb.c::usb_match_id()), some drivers will match a\ndevice based on the class type, so it would be common (especially for HID\ndevices) to match a device that is already bound.\n\nThe fun comes when -\u003eprobe() is called, it fails, then\ndriver_probe_device() does this:\n\n\tdev-\u003edriver \u003d NULL;\n\nLater on, that pointer could be be dereferenced without checking and cause\nhell to break loose.\n\nThis problem could be nasty. It\u0027s very hardware dependent, since some\ndevices could have a different set of matching qualifiers than others.\n\nNow, I don\u0027t quite see exactly where/how you were getting that crash.\nYou\u0027re dereferencing bad memory, but I\u0027m not sure which pointer was bad\nand where it came from, but it could have come from a couple of different\nplaces.\n\nThe patch below will hopefully fix it all up for you. It\u0027s against\n2.6.12-rc2-mm1, and does the following:\n\n- Move logic to driver_probe_device() and comments uncommon returns:\n  1 - If device is bound\n  0 - If device not bound, and no error\n  error - If there was an error.\n\n- Move locking to caller of that function, since we want to lock a\n  device for the entire time we\u0027re trying to bind it to a driver (to\n  prevent against a driver being loaded at the same time).\n\n- Update __device_attach() and __driver_attach() to do that locking.\n\n- Check if device is already bound in __driver_attach()\n\n- Update the converse device_release_driver() so it locks the device\n  around all of the operations.\n\n- Mark driver_probe_device() as static and remove export. It\u0027s an\n  internal function, it should stay that way, and there are no other\n  callers. If there is ever a need to export it, we can audit it as\n  necessary.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n"
    },
    {
      "commit": "b86c1df1f98d16c999423a3907eb40a9423f481e",
      "tree": "02cf0b54f3c1d9b987268f2d4737af1a67dd4056",
      "parents": [
        "d0e2b4a0a9dd3eed71b56c47268bf4e40cff6d0f"
      ],
      "author": {
        "name": "gregkh@suse.de",
        "email": "gregkh@suse.de",
        "time": "Thu Mar 31 12:53:00 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:27 2005 -0700"
      },
      "message": "[PATCH] Driver core: Fix up the driver and device iterators to be quieter\n\nAlso stops looping over the lists when a match is found.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\n"
    },
    {
      "commit": "0956af53afea290c5676c75249fc2c180d831375",
      "tree": "43ba929157462d22b6320a8924823a56cb292569",
      "parents": [
        "63c4f204ffc8219696bda88eb20c9873d007a2fc"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Thu Mar 24 18:58:45 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:19 2005 -0700"
      },
      "message": "[PATCH] Call klist_del() instead of klist_remove().\n\n- Can\u0027t wait on removing the current item in the list (the positive refcount *because*\n  we are using it causes it to deadlock).\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "2287c322b61fced7e0c326a1a9606aa73147e3df",
      "tree": "8241c7cab4172969f38d8b55852aca2e071a494f",
      "parents": [
        "cb85b6f1cc811ecb9ed4b950206d8941ba710e68"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Thu Mar 24 10:50:24 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:17 2005 -0700"
      },
      "message": "[PATCH] Use bus_for_each_{dev,drv} for driver binding.\n\n- Now possible, since the lists are locked using the klist lock and not the\n  global rwsem.\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "94e7b1c5ff2055571703e38b059afffe17658432",
      "tree": "469dbd920087ec62acd88b4985437a78c6786c0e",
      "parents": [
        "38fdac3cdce276554b4484a41f8ec2daf81cb2ff"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Mon Mar 21 12:25:36 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:16 2005 -0700"
      },
      "message": "[PATCH] Add a klist to struct device_driver for the devices bound to it.\n\n- Use it in driver_for_each_device() instead of the regular list_head and stop using\n  the bus\u0027s rwsem for protection.\n- Use driver_for_each_device() in driver_detach() so we don\u0027t deadlock on the\n  bus\u0027s rwsem.\n- Remove -\u003edevices.\n- Move klist access and sysfs link access out from under device\u0027s semaphore, since\n  they\u0027re synchronized through other means.\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "07e4a3e27fe414980ddc85a358e5a56abc48b363",
      "tree": "eb32858e7facf8b24a2f0fc2d4e829d6ee715c09",
      "parents": [
        "af70316af182f4716cc5eec7e0d27fc731d164bd"
      ],
      "author": {
        "name": "mochel@digitalimplant.org",
        "email": "mochel@digitalimplant.org",
        "time": "Mon Mar 21 10:52:54 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:13 2005 -0700"
      },
      "message": "[PATCH] Move device/driver code to drivers/base/dd.c\n\nThis relocates the driver binding/unbinding code to drivers/base/dd.c. This is done\nfor two reasons: One, it\u0027s not code related to the bus_type itself; it uses some from\nthat, some from devices, and some from drivers. And Two, it will make it easier to do\nsome of the upcoming lock removal on that code..\n\nSigned-off-by: Patrick Mochel \u003cmochel@digitalimplant.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    }
  ]
}
