aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorMichael Albaugh <Michael.Albaugh@Qlogic.com>2008-04-17 00:09:28 -0400
committerRoland Dreier <rolandd@cisco.com>2008-04-17 00:09:28 -0400
commitafd9970f957454782795b23c89fd6d7dde973cc0 (patch)
treedcaeb7d6c299afa22173e9866ccfacb607ce265c /drivers/infiniband
parent7ce5eacb45a7c819a6bec6ed486f27db9aab6ab6 (diff)
IB/ipath: Allow old and new diagnostic packet formats
This patch checks for old and new format writes to send a packet via the diagnostic interface. Signed-off-by: Michael Albaugh <Michael.Albaugh@Qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_diag.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_diag.c b/drivers/infiniband/hw/ipath/ipath_diag.c
index af59bf380ca2..c9bfd827e71b 100644
--- a/drivers/infiniband/hw/ipath/ipath_diag.c
+++ b/drivers/infiniband/hw/ipath/ipath_diag.c
@@ -332,12 +332,17 @@ static ssize_t ipath_diagpkt_write(struct file *fp,
332 u64 val; 332 u64 val;
333 u32 l_state, lt_state; /* LinkState, LinkTrainingState */ 333 u32 l_state, lt_state; /* LinkState, LinkTrainingState */
334 334
335 if (count != sizeof(dp)) { 335 if (count < sizeof(odp)) {
336 ret = -EINVAL; 336 ret = -EINVAL;
337 goto bail; 337 goto bail;
338 } 338 }
339 339
340 if (copy_from_user(&dp, data, sizeof(dp))) { 340 if (count == sizeof(dp)) {
341 if (copy_from_user(&dp, data, sizeof(dp))) {
342 ret = -EFAULT;
343 goto bail;
344 }
345 } else if (copy_from_user(&odp, data, sizeof(odp))) {
341 ret = -EFAULT; 346 ret = -EFAULT;
342 goto bail; 347 goto bail;
343 } 348 }