Commit 77f60833 authored by Ira Weiny's avatar Ira Weiny Committed by Doug Ledford

IB/mad: Change validate_mad signature arguments

validate_mad only needs read access to the MAD header, not write access
to the entire mad struct, so replace struct ib_mad with const struct
ib_mad_hdr
Reviewed-By: default avatarJason Gunthorpe <jgunthorpe@obsidianresearch.com>
Reviewed-by: default avatarSean Hefty <sean.hefty@intel.com>
Signed-off-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent b78d28a2
...@@ -1708,20 +1708,20 @@ find_mad_agent(struct ib_mad_port_private *port_priv, ...@@ -1708,20 +1708,20 @@ find_mad_agent(struct ib_mad_port_private *port_priv,
return mad_agent; return mad_agent;
} }
static int validate_mad(struct ib_mad *mad, u32 qp_num) static int validate_mad(const struct ib_mad_hdr *mad_hdr, u32 qp_num)
{ {
int valid = 0; int valid = 0;
/* Make sure MAD base version is understood */ /* Make sure MAD base version is understood */
if (mad->mad_hdr.base_version != IB_MGMT_BASE_VERSION) { if (mad_hdr->base_version != IB_MGMT_BASE_VERSION) {
pr_err("MAD received with unsupported base version %d\n", pr_err("MAD received with unsupported base version %d\n",
mad->mad_hdr.base_version); mad_hdr->base_version);
goto out; goto out;
} }
/* Filter SMI packets sent to other than QP0 */ /* Filter SMI packets sent to other than QP0 */
if ((mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED) || if ((mad_hdr->mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED) ||
(mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) { (mad_hdr->mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) {
if (qp_num == 0) if (qp_num == 0)
valid = 1; valid = 1;
} else { } else {
...@@ -1979,7 +1979,7 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv, ...@@ -1979,7 +1979,7 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv,
snoop_recv(qp_info, &recv->header.recv_wc, IB_MAD_SNOOP_RECVS); snoop_recv(qp_info, &recv->header.recv_wc, IB_MAD_SNOOP_RECVS);
/* Validate MAD */ /* Validate MAD */
if (!validate_mad(&recv->mad.mad, qp_info->qp->qp_num)) if (!validate_mad(&recv->mad.mad.mad_hdr, qp_info->qp->qp_num))
goto out; goto out;
response = kmem_cache_alloc(ib_mad_cache, GFP_KERNEL); response = kmem_cache_alloc(ib_mad_cache, GFP_KERNEL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment