[ofw] RE: [PATCH 2/7] mthca/mlx: add check to validate output data size

Hefty, Sean sean.hefty at intel.com
Tue Jan 20 13:57:03 PST 2009


committed in svn 1858

>-----Original Message-----
>From: Hefty, Sean
>Sent: Friday, January 16, 2009 1:30 PM
>To: Hefty, Sean; ofw at lists.openfabrics.org
>Subject: [PATCH 2/7] mthca/mlx: add check to validate output data size
>
>Only the hardware drivers know what size the output data buffer must be for
>ndi_modify_qp.  Have the drivers verify that the provided data buffer is
>large enough.
>
>This fixes a crash if (say, a buggy) userspace (library under development) does
>not provide a response buffer.
>
>Signed-off-by: Sean Hefty <sean.hefty at intel.com>
>---
>To make things easier, I can commit this if approved.
>
>\winverbs/hw/mthca/kernel/hca_verbs.c
>--- trunk/hw/mthca/kernel/hca_verbs.c	2008-10-29 11:24:08.234375000 -0700
>+++ branches\winverbs/hw/mthca/kernel/hca_verbs.c	2009-01-13
>23:13:27.468750000 -0800
>@@ -1266,6 +1266,11 @@ mlnx_ndi_modify_qp (
>
> 	HCA_ENTER(HCA_DBG_QP);
>
>+	if (buf_size < sizeof(resp.qp_state)) {
>+		status = IB_INVALID_PARAMETER;
>+		goto out;
>+	}
>+
> 	/* imitate umv_buf */
> 	umv_buf.command = TRUE;	/* special case for NDI. Usually it's TRUE */
> 	umv_buf.input_size = 0;
>@@ -1279,6 +1284,7 @@ mlnx_ndi_modify_qp (
> 		*p_outbuf = resp.qp_state;
> 	}
>
>+out:
> 	HCA_EXIT(HCA_DBG_QP);
> 	return status;
> }
>diff -up -r -X trunk\docs\dontdiff.txt -I '\$Id:' trunk/hw/mlx4/kernel/hca/qp.c
>branches\winverbs/hw/mlx4/kernel/hca/qp.c
>--- trunk/hw/mlx4/kernel/hca/qp.c	2008-08-26 13:56:37.762625000 -0700
>+++ branches\winverbs/hw/mlx4/kernel/hca/qp.c	2009-01-07 14:21:38.945465400 -
>0800
>@@ -326,6 +326,11 @@ mlnx_ndi_modify_qp (
>
> 	HCA_ENTER(HCA_DBG_QP);
>
>+	if (buf_size < sizeof(resp.qp_state)) {
>+		status = IB_INVALID_PARAMETER;
>+		goto out;
>+	}
>+
> 	/* imitate umv_buf */
> 	umv_buf.command = TRUE;	/* special case for NDI. Usually it's TRUE */
> 	umv_buf.input_size = 0;
>@@ -339,6 +344,7 @@ mlnx_ndi_modify_qp (
> 		*p_outbuf = resp.qp_state;
> 	}
>
>+out:
> 	HCA_EXIT(HCA_DBG_QP);
> 	return status;
> }
>




More information about the ofw mailing list