]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xsigo: Fix spinlock release in case of error
authorPradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Tue, 14 Mar 2017 00:04:57 +0000 (17:04 -0700)
committerChuck Anderson <chuck.anderson@oracle.com>
Tue, 30 May 2017 05:40:12 +0000 (22:40 -0700)
Orabug: 25779803

In forwarding table lookup function, xve_fwt_lookup(),
in case of error condition xve_fwt lock is not released.
This commit fixes this bug by releasing xve_fwt lock on error.

Reviewed-by: Chien Yen <chien.yen@oracle.com>
Signed-off-by: Pradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
drivers/infiniband/ulp/xsigo/xscore/Makefile
drivers/infiniband/ulp/xsigo/xsvhba/Makefile
drivers/infiniband/ulp/xsigo/xsvnic/Makefile
drivers/infiniband/ulp/xsigo/xve/Makefile
drivers/infiniband/ulp/xsigo/xve/xve_tables.c

index 38c3460185ffb0cc056509175c9523ed83531275..91c0ef4a6a4d0a1272a19d49ccd405ef5a647f4d 100644 (file)
@@ -2,7 +2,7 @@ obj-$(CONFIG_INFINIBAND_XSCORE) := xscore.o
 xscore-y := xscore_impl.o xs_ud.o xscore_api.o xsmp.o \
            xscore_stats.o xscore_uadm.o
 
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8042\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8043\"
 ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
 ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
 ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
index f123c1dc0e6dea0d55876ef8284f331eded05b56..20c710673132b6eefcd910a926702838a4e63d6b 100644 (file)
@@ -3,7 +3,7 @@ xsvhba-y := vhba_main.o vhba_xsmp.o vhba_create.o vhba_init.o vhba_delete.o \
            vhba_attr.o vhba_wq.o vhba_proc.o vhba_stats.o vhba_ib.o        \
            vhba_scsi_intf.o vhba_align.o
 
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8042\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8043\"
 ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
 ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
 ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
index a443cd9f9fc77637c8114cc29ee6a0292d80d3a6..31aa91e34845856d582145e345975cbc3697af35 100644 (file)
@@ -1,7 +1,7 @@
 obj-$(CONFIG_INFINIBAND_XSVNIC) := xsvnic.o
 xsvnic-y := xsvnic_main.o xsvnic_stats.o
 
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8042\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8043\"
 ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
 ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
 ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
index d373bde1165ced22baaac853ee77681989bfed4e..e1fba082ed07bd3c74937f778dc0793b837c1b9d 100644 (file)
@@ -2,7 +2,7 @@ obj-$(CONFIG_INFINIBAND_XVE) := xve.o
 xve-y := xve_main.o xve_verbs.o xve_multicast.o xve_ib.o xve_tables.o \
         xve_ethtool.o xve_cm.o xve_stats.o
 
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8042\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8043\"
 ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
 ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
 ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
index 5ccd0b98de5f47d6b80580b4c12889582b37de14..6e67f92816f0efb4b744c584230afc6db075265d 100644 (file)
@@ -196,6 +196,7 @@ struct xve_fwt_entry *xve_fwt_lookup(struct xve_dev_priv *priv, char *mac,
                if (atomic_read(&fwt_entry->del_inprogress)) {
                        xve_info(priv, "%p Table delete in progress mac%pM",
                                        fwt_entry, mac);
+                       spin_unlock_irqrestore(&xve_fwt->lock, flags);
                        return NULL;
                }
                atomic_inc(&fwt_entry->ref_cnt);