|
@@ -239,7 +239,14 @@ 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)
|
|
@@ -247,7 +254,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));
|