[lkml]   [2012]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: Incorrect uses of get_driver()/put_driver()
    On Mon, Jan 09, 2012 at 12:35:09PM -0500, Alan Stern wrote:
    > The get_driver() and put_driver() routines in the device core are not
    > documented well, and what they really do is quite different from what
    > people might think they do. In particular, get_driver() does not
    > prevent a driver from being unregistered or unloaded -- the API which
    > comes closest to doing that is try_module_get().
    > In fact, get_driver() and put_driver() are pretty much useless for
    > normal purposes, and Dmitry and I have been discussing getting rid of
    > them entirely. But first we need to make sure that doing so won't mess
    > anything up.
    > The purpose of this email is to check with the maintainers of the
    > various drivers that seem to be using these routines in questionable
    > ways, to make sure nothing will go wrong. Here are the places we have
    > identified:
    > lib/dma-debug.c:173: drv = get_driver(dev->driver);
    > lib/dma-debug.c:188: put_driver(drv);
    > Joerg, these calls don't seem to do anything, as far as I can tell.
    > Is there any reason to keep them?
    > drivers/pci/xen-pcifront.c:596: if (get_driver(&pdrv->driver)) {
    > drivers/pci/xen-pcifront.c:626: put_driver(&pdrv->driver);
    > Konrad, these calls don't seem to do anything either.

    Looks like they should be replaced with the try_module_get() equivalant
    for the 'struct pci_driver'? Is there such one?

     \ /
      Last update: 2012-01-09 19:03    [W:0.021 / U:0.152 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site