Orabug:
25165085
When accessing l2tables using /proc/driver/xve/devices/
system panics if path is created and there is no associated
Transmit QP. Added a check for validating tx structure before
using it.
Reported-by: Jie zhu <jie.x.zhu@oracle.com>
Signed-off-by: Pradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Reviewed-by: sajid zia <szia@oracle.com>
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.r8040\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8041\"
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
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.r8040\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8041\"
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
obj-$(CONFIG_INFINIBAND_XSVNIC) := xsvnic.o
xsvnic-y := xsvnic_main.o xsvnic_stats.o
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8040\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8041\"
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
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.r8040\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8041\"
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
return test_bit(XVE_FLAG_OPER_UP, &path->cm_ctx_tx->flags);
}
+static inline char *xve_cm_txstate(struct xve_cm_ctx *tx)
+{
+ if (test_bit(XVE_FLAG_OPER_UP, &tx->flags))
+ return "Connected";
+ else
+ return "Not Connected";
+}
+
static inline struct xve_cm_ctx *xve_get_cmctx(struct xve_path *path)
{
return path->cm_ctx_common;
k = 0;
hlist_for_each_entry_safe(fwt_entry, n, head, hlist) {
if (xve_fwt_entry_valid(xve_fwt, fwt_entry) == true) {
- char *cmstr = "Not Connected";
u16 printed = 0;
struct xve_cm_ctx *tx = NULL, *rx = NULL;
tx = xve_cmtx_get(fwt_entry->path);
rx = xve_cmrx_get(fwt_entry->path);
- if (test_bit(XVE_FLAG_OPER_UP,
- &tx->flags))
- cmstr = "Connected";
if (rx)
rx_rate = rx->stats.rx_rate;
if (tx) {
ALIGN_TO_FF(smac[3]),
ALIGN_TO_FF(smac[4]),
ALIGN_TO_FF(smac[5]),
- tmp_buf + 8, cmstr,
+ tmp_buf + 8,
+ xve_cm_txstate(tx),
tx->qp ? tx->qp->
qp_num : 0,
tx->version,