aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/sysfs.c
diff options
context:
space:
mode:
authorDoug Ledford <dledford@redhat.com>2016-06-06 19:52:55 -0400
committerDoug Ledford <dledford@redhat.com>2016-06-07 09:42:21 -0400
commit41aaa99fab6ceaa4b533c2b6ad4913987ddb3ddc (patch)
treeac82511a648fc9eab5c35010b39578a72aa779b7 /drivers/infiniband/core/sysfs.c
parentIB/hfi1: Suppress sparse warnings (diff)
downloadlinux-dev-41aaa99fab6ceaa4b533c2b6ad4913987ddb3ddc.tar.xz
linux-dev-41aaa99fab6ceaa4b533c2b6ad4913987ddb3ddc.zip
IB/core: Fix array length allocation
The new sysfs hw_counters code had an off by one in its array allocation length. Fix that and the comment along with it. Reported-by: Mark Bloch <markb@mellanox.com> Fixes: b40f4757daa1 (IB/core: Make device counter infrastructure dynamic) Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/core/sysfs.c')
-rw-r--r--drivers/infiniband/core/sysfs.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index ed04a7bd4481..2bc43444841b 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -901,9 +901,12 @@ static void setup_hw_stats(struct ib_device *device, struct ib_port *port,
if (!stats->names || stats->num_counters <= 0)
goto err_free_stats;
+ /*
+ * Two extra attribue elements here, one for the lifespan entry and
+ * one to NULL terminate the list for the sysfs core code
+ */
hsag = kzalloc(sizeof(*hsag) +
- // 1 extra for the lifespan config entry
- sizeof(void *) * (stats->num_counters + 1),
+ sizeof(void *) * (stats->num_counters + 2),
GFP_KERNEL);
if (!hsag)
goto err_free_stats;