Commit 5f2d20a8 authored by Dan Carpenter's avatar Dan Carpenter Committed by Greg Kroah-Hartman

test_firmware: Use correct snprintf() limit

commit bd17cc5a upstream.

The limit here is supposed to be how much of the page is left, but it's
just using PAGE_SIZE as the limit.

The other thing to remember is that snprintf() returns the number of
bytes which would have been copied if we had had enough room.  So that
means that if we run out of space then this code would end up passing a
negative value as the limit and the kernel would print an error message.
I have change the code to use scnprintf() which returns the number of
bytes that were successfully printed (not counting the NUL terminator).

Fixes: c92316bf ("test_firmware: add batched firmware tests")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 06666ce1
...@@ -223,30 +223,30 @@ static ssize_t config_show(struct device *dev, ...@@ -223,30 +223,30 @@ static ssize_t config_show(struct device *dev,
mutex_lock(&test_fw_mutex); mutex_lock(&test_fw_mutex);
len += snprintf(buf, PAGE_SIZE, len += scnprintf(buf, PAGE_SIZE - len,
"Custom trigger configuration for: %s\n", "Custom trigger configuration for: %s\n",
dev_name(dev)); dev_name(dev));
if (test_fw_config->name) if (test_fw_config->name)
len += snprintf(buf+len, PAGE_SIZE, len += scnprintf(buf+len, PAGE_SIZE - len,
"name:\t%s\n", "name:\t%s\n",
test_fw_config->name); test_fw_config->name);
else else
len += snprintf(buf+len, PAGE_SIZE, len += scnprintf(buf+len, PAGE_SIZE - len,
"name:\tEMTPY\n"); "name:\tEMTPY\n");
len += snprintf(buf+len, PAGE_SIZE, len += scnprintf(buf+len, PAGE_SIZE - len,
"num_requests:\t%u\n", test_fw_config->num_requests); "num_requests:\t%u\n", test_fw_config->num_requests);
len += snprintf(buf+len, PAGE_SIZE, len += scnprintf(buf+len, PAGE_SIZE - len,
"send_uevent:\t\t%s\n", "send_uevent:\t\t%s\n",
test_fw_config->send_uevent ? test_fw_config->send_uevent ?
"FW_ACTION_HOTPLUG" : "FW_ACTION_HOTPLUG" :
"FW_ACTION_NOHOTPLUG"); "FW_ACTION_NOHOTPLUG");
len += snprintf(buf+len, PAGE_SIZE, len += scnprintf(buf+len, PAGE_SIZE - len,
"sync_direct:\t\t%s\n", "sync_direct:\t\t%s\n",
test_fw_config->sync_direct ? "true" : "false"); test_fw_config->sync_direct ? "true" : "false");
len += snprintf(buf+len, PAGE_SIZE, len += scnprintf(buf+len, PAGE_SIZE - len,
"read_fw_idx:\t%u\n", test_fw_config->read_fw_idx); "read_fw_idx:\t%u\n", test_fw_config->read_fw_idx);
mutex_unlock(&test_fw_mutex); mutex_unlock(&test_fw_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment