summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShiraz Saleem <shiraz.saleem@intel.com>2016-08-22 18:16:37 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-10-07 15:21:20 +0200
commite4df513333e73291e130a44dd0a4bd664d5ac6c4 (patch)
tree31a8f7a9fa3b88b1c3ef17e8358ad3d43fc93059
parent0bdb4f53663f5b218f2db48d7344845e569b7169 (diff)
downloadlwn-e4df513333e73291e130a44dd0a4bd664d5ac6c4.tar.gz
lwn-e4df513333e73291e130a44dd0a4bd664d5ac6c4.zip
i40iw: Add missing NULL check for MPA private data
commit 5dfd5e5e3bc68ab3912acc712c8180942094fc69 upstream. Add NULL check for pdata and pdata->addr before the memcpy in i40iw_form_cm_frame(). This fixes a NULL pointer de-reference which occurs when the MPA private data pointer is NULL. Also only copy pdata->size bytes in the memcpy to prevent reading past the length of the private data buffer provided by upper layer. Fixes: f27b4746f378 ("i40iw: add connection management code") Reported-by: Stefan Assmann <sassmann@redhat.com> Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com> Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_cm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c
index d2fa72516960..d2f6a068c60e 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
@@ -535,8 +535,8 @@ static struct i40iw_puda_buf *i40iw_form_cm_frame(struct i40iw_cm_node *cm_node,
buf += hdr_len;
}
- if (pd_len)
- memcpy(buf, pdata->addr, pd_len);
+ if (pdata && pdata->addr)
+ memcpy(buf, pdata->addr, pdata->size);
atomic_set(&sqbuf->refcount, 1);