[PATCH 5/8] ntb_tool: BUG: Ensure the buffer size is large enough to return all spads

5 views
Skip to first unread message

Logan Gunthorpe

unread,
Jun 10, 2016, 6:55:29 PM6/10/16
to Jon Mason, Dave Jiang, Allen Hubbe, Shuah Khan, Sudip Mukherjee, Arnd Bergmann, linux-...@vger.kernel.org, linu...@googlegroups.com, linux-k...@vger.kernel.org, Logan Gunthorpe
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 <log...@deltatee.com>
---
drivers/ntb/test/ntb_tool.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/ntb/test/ntb_tool.c b/drivers/ntb/test/ntb_tool.c
index 4c01057..954e1d5 100644
--- a/drivers/ntb/test/ntb_tool.c
+++ b/drivers/ntb/test/ntb_tool.c
@@ -368,7 +368,9 @@ 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);
+
+ buf_size = min_t(size_t, size, spad_count * 15);

buf = kmalloc(buf_size, GFP_KERNEL);
if (!buf)
@@ -376,7 +378,6 @@ static ssize_t tool_spadfn_read(struct tool_ctx *tc, char __user *ubuf,

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));
--
2.1.4

Allen Hubbe

unread,
Jun 10, 2016, 10:35:51 PM6/10/16
to Logan Gunthorpe, Jon Mason, Dave Jiang, Shuah Khan, Sudip Mukherjee, Arnd Bergmann, linux-...@vger.kernel.org, linu...@googlegroups.com, linux-k...@vger.kernel.org
On Fri, Jun 10, 2016 at 6:54 PM, Logan Gunthorpe <log...@deltatee.com> wrote:
> 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 <log...@deltatee.com>

It could be marginally better if there was an explanation to accompany
the magic number 15, but it's not a big deal. One might guess it has
something to do with the expected length of the formatted string.

Acked-by: Allen Hubbe <Allen...@emc.com>

> ---
> drivers/ntb/test/ntb_tool.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/ntb/test/ntb_tool.c b/drivers/ntb/test/ntb_tool.c
> index 4c01057..954e1d5 100644
> --- a/drivers/ntb/test/ntb_tool.c
> +++ b/drivers/ntb/test/ntb_tool.c
> @@ -368,7 +368,9 @@ 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);
> +
> + buf_size = min_t(size_t, size, spad_count * 15);
>
> buf = kmalloc(buf_size, GFP_KERNEL);
> if (!buf)
> @@ -376,7 +378,6 @@ static ssize_t tool_spadfn_read(struct tool_ctx *tc, char __user *ubuf,
>
> 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));
> --
> 2.1.4
>
> --
> You received this message because you are subscribed to the Google Groups "linux-ntb" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-ntb+...@googlegroups.com.
> To post to this group, send email to linu...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/linux-ntb/d9488f2c946644c2b1258a78929d3543747283ec.1465598632.git.logang%40deltatee.com.
> For more options, visit https://groups.google.com/d/optout.

Logan Gunthorpe

unread,
Jun 11, 2016, 11:29:13 AM6/11/16
to Allen Hubbe, Jon Mason, Dave Jiang, Shuah Khan, Sudip Mukherjee, Arnd Bergmann, linux-...@vger.kernel.org, linu...@googlegroups.com, linux-k...@vger.kernel.org
Ok, I'll add a comment.

Logan
Reply all
Reply to author
Forward
0 new messages