• Stephen M. Cameron's avatar
    SCSI: hpsa: return 0 from driver probe function on success, not 1 · 3d486626
    Stephen M. Cameron authored
    commit 88bf6d62 upstream.
    
    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>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    3d486626
hpsa.c 132 KB