Skip to content

Commit

Permalink
ntb_tool: BUG: Ensure the buffer size is large enough to return all s…
Browse files Browse the repository at this point in the history
…pads

On hardware with 32 scratchpad registers the spad field in ntb tool
could chop off the end. The maximum buffer size is increased from
256 to 15 times the number or scratchpads.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Acked-by: Allen Hubbe <Allen.Hubbe@emc.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
  • Loading branch information
Logan Gunthorpe authored and Jon Mason committed Aug 5, 2016
1 parent c792eba commit 625f080
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/ntb/test/ntb_tool.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,15 +239,21 @@ static ssize_t tool_spadfn_read(struct tool_ctx *tc, char __user *ubuf,
if (!spad_read_fn)
return -EINVAL;

buf_size = min_t(size_t, size, 0x100);
spad_count = ntb_spad_count(tc->ntb);

/*
* We multiply the number of spads by 15 to get the buffer size
* this is from 3 for the %d, 10 for the largest hex value
* (0x00000000) and 2 for the tab and line feed.
*/
buf_size = min_t(size_t, size, spad_count * 15);

buf = kmalloc(buf_size, GFP_KERNEL);
if (!buf)
return -ENOMEM;

pos = 0;

spad_count = ntb_spad_count(tc->ntb);
for (i = 0; i < spad_count; ++i) {
pos += scnprintf(buf + pos, buf_size - pos, "%d\t%#x\n",
i, spad_read_fn(tc->ntb, i));
Expand Down

0 comments on commit 625f080

Please sign in to comment.