• Stephen M. Cameron's avatar
    [SCSI] hpsa: return 0 from driver probe function on success, not 1 · 88bf6d62
    Stephen M. Cameron authored
    A return value of 1 is interpreted as an error.  See pci_driver.
    in local_pci_probe().  If you're wondering how this ever could
    have worked, it's because it used to be the case that only return
    values less than zero were interpreted as failure.  But even in
    the current kernel if the driver registers its various entry
    points with the kernel, and then returns a value which is
    interpreted as failure, those registrations aren't undone, so
    the driver still mostly works.  However, the driver's remove
    function wouldn't be called on rmmod, and pci power management
    functions wouldn't work.  In the case of Smart Array, since it
    has a battery backed cache (or else no cache) even if the driver
    is not shut down properly as long as there is no outstanding
    i/o, nothing too bad happens, which is why it took so long to
    notice.
    
    Requesting backport to stable because the change to pci-driver.c
    which requires driver probe functions to return 0 occurred between
    2.6.35 and 2.6.36 (the pci power management breakage) and again
    between 3.7 and 3.8 (pci_dev->driver getting set to NULL in
    local_pci_probe() preventing driver remove function from being
    called on rmmod.)
    Signed-off-by: default avatarStephen M. Cameron <scameron@beardog.cce.hp.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    88bf6d62
hpsa.c 146 KB