| From bd17cc5a20ae9aaa3ed775f360b75ff93cd66a1d Mon Sep 17 00:00:00 2001 |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| Date: Wed, 15 May 2019 12:33:22 +0300 |
| Subject: test_firmware: Use correct snprintf() limit |
| |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| |
| commit bd17cc5a20ae9aaa3ed775f360b75ff93cd66a1d 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: c92316bf8e94 ("test_firmware: add batched firmware tests") |
| Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| lib/test_firmware.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/lib/test_firmware.c |
| +++ b/lib/test_firmware.c |
| @@ -223,30 +223,30 @@ static ssize_t config_show(struct device |
| |
| mutex_lock(&test_fw_mutex); |
| |
| - len += snprintf(buf, PAGE_SIZE, |
| + len += scnprintf(buf, PAGE_SIZE - len, |
| "Custom trigger configuration for: %s\n", |
| dev_name(dev)); |
| |
| if (test_fw_config->name) |
| - len += snprintf(buf+len, PAGE_SIZE, |
| + len += scnprintf(buf+len, PAGE_SIZE - len, |
| "name:\t%s\n", |
| test_fw_config->name); |
| else |
| - len += snprintf(buf+len, PAGE_SIZE, |
| + len += scnprintf(buf+len, PAGE_SIZE - len, |
| "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); |
| |
| - len += snprintf(buf+len, PAGE_SIZE, |
| + len += scnprintf(buf+len, PAGE_SIZE - len, |
| "send_uevent:\t\t%s\n", |
| test_fw_config->send_uevent ? |
| "FW_ACTION_HOTPLUG" : |
| "FW_ACTION_NOHOTPLUG"); |
| - len += snprintf(buf+len, PAGE_SIZE, |
| + len += scnprintf(buf+len, PAGE_SIZE - len, |
| "sync_direct:\t\t%s\n", |
| 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); |
| |
| mutex_unlock(&test_fw_mutex); |