On Fri, Mar 16, 2007 at 09:27:26AM -0500, James Bottomley wrote:
> On Fri, 2007-03-16 at 16:05 +0900, Horms wrote:
> > +       err = pci_enable_device(pdev);
> > +       if (err < 0)
> > +               return err;
> 
> Traditionally, this should be 
> 
> if (err)
>       return err;
> 
> The reason is that <0 is a signed comparison which can be slightly more
> expensive on some architectures and it's unnecessary if zero is the only
> successful return.

That isn't a tradition that I am familiar with, but it seems reasonable
to me.

Updated patch is below.

-- 
Horms
  H: http://www.vergenet.net/~horms/
  W: http://www.valinux.co.jp/en/

Honour the return value of pci_enable_device(), which
seems to be a desirable thing to do:

  2.6.20-rc4
  gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

    CC [M]  drivers/message/fusion/mptbase.o
    drivers/message/fusion/mptbase.c: In function `mpt_resume':
    drivers/message/fusion/mptbase.c:1541: warning: ignoring return value
    of `pci_enable_device', declared with attribute warn_unused_result

It also in turn has mptscsih_resume() honour the return value of
mpt_resume()

I'm not sure about the handling of the other potential error cases
in mpt_resume(), of which there appear to be many. But this does
seem to be a good start.

Signed-off-by: Simon Horman <[EMAIL PROTECTED]>

Index: linux-2.6/drivers/message/fusion/mptbase.c
===================================================================
--- linux-2.6.orig/drivers/message/fusion/mptbase.c     2007-03-19 
10:59:18.000000000 +0900
+++ linux-2.6/drivers/message/fusion/mptbase.c  2007-03-19 15:04:24.000000000 
+0900
@@ -1531,6 +1531,7 @@
        MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
        u32 device_state = pdev->current_state;
        int recovery_state;
+       int err;
 
        printk(MYIOC_s_INFO_FMT
        "pci-resume: pdev=0x%p, slot=%s, Previous operating state [D%d]\n",
@@ -1538,7 +1539,9 @@
 
        pci_set_power_state(pdev, 0);
        pci_restore_state(pdev);
-       pci_enable_device(pdev);
+       err = pci_enable_device(pdev);
+       if (err)
+               return err;
 
        /* enable interrupts */
        CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM);
Index: linux-2.6/drivers/message/fusion/mptscsih.c
===================================================================
--- linux-2.6.orig/drivers/message/fusion/mptscsih.c    2007-03-19 
15:03:22.000000000 +0900
+++ linux-2.6/drivers/message/fusion/mptscsih.c 2007-03-19 15:03:23.000000000 
+0900
@@ -1188,8 +1188,7 @@
 int
 mptscsih_resume(struct pci_dev *pdev)
 {
-       mpt_resume(pdev);
-       return 0;
+       return mpt_resume(pdev);
 }
 
 #endif

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to