]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
enic: fix an endian bug in enic_probe()
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 29 Feb 2012 21:19:54 +0000 (21:19 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 1 Mar 2012 22:23:42 +0000 (17:23 -0500)
"num_vfs" is a u32 but we only use the high 16 bits and the low 16bits
are left as zero.  That isn't a problem for little endian systems but it
will break on big endian ones.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cisco/enic/enic.h
drivers/net/ethernet/cisco/enic/enic_main.c

index ee93a2087fe6c0cfd116dcf3f4536185480ba362..c52295cd05ef009b368555e8b716bc082ad6caf5 100644 (file)
@@ -94,7 +94,7 @@ struct enic {
        u32 rx_coalesce_usecs;
        u32 tx_coalesce_usecs;
 #ifdef CONFIG_PCI_IOV
-       u32 num_vfs;
+       u16 num_vfs;
 #endif
        struct enic_port_profile *pp;
 
index ab3f67f980d8c3f7554d19bf3fdbaf275deefed3..0e4edd3b6bee0275cf3ca0c01ffd1f1f60ec9d49 100644 (file)
@@ -2370,7 +2370,7 @@ static int __devinit enic_probe(struct pci_dev *pdev,
        pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
        if (pos) {
                pci_read_config_word(pdev, pos + PCI_SRIOV_TOTAL_VF,
-                       (u16 *)&enic->num_vfs);
+                       &enic->num_vfs);
                if (enic->num_vfs) {
                        err = pci_enable_sriov(pdev, enic->num_vfs);
                        if (err) {