summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2019-05-15 05:33:22 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-05-24 15:03:28 -0400
commitbd17cc5a20ae9aaa3ed775f360b75ff93cd66a1d (patch)
treec3b0dd4722b8fe45db470145875937c91cb0b9f9
parent110080cea0d0e4dfdb0b536e7f8a5633ead6a781 (diff)
test_firmware: Use correct snprintf() limit
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>
-rw-r--r--lib/test_firmware.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/test_firmware.c b/lib/test_firmware.c
index 7222093ee00b..b5487ed829d7 100644
--- a/lib/test_firmware.c
+++ b/lib/test_firmware.c
@@ -223,30 +223,30 @@ static ssize_t config_show(struct device *dev,
223 223
224 mutex_lock(&test_fw_mutex); 224 mutex_lock(&test_fw_mutex);
225 225
226 len += snprintf(buf, PAGE_SIZE, 226 len += scnprintf(buf, PAGE_SIZE - len,
227 "Custom trigger configuration for: %s\n", 227 "Custom trigger configuration for: %s\n",
228 dev_name(dev)); 228 dev_name(dev));
229 229
230 if (test_fw_config->name) 230 if (test_fw_config->name)
231 len += snprintf(buf+len, PAGE_SIZE, 231 len += scnprintf(buf+len, PAGE_SIZE - len,
232 "name:\t%s\n", 232 "name:\t%s\n",
233 test_fw_config->name); 233 test_fw_config->name);
234 else 234 else
235 len += snprintf(buf+len, PAGE_SIZE, 235 len += scnprintf(buf+len, PAGE_SIZE - len,
236 "name:\tEMTPY\n"); 236 "name:\tEMTPY\n");
237 237
238 len += snprintf(buf+len, PAGE_SIZE, 238 len += scnprintf(buf+len, PAGE_SIZE - len,
239 "num_requests:\t%u\n", test_fw_config->num_requests); 239 "num_requests:\t%u\n", test_fw_config->num_requests);
240 240
241 len += snprintf(buf+len, PAGE_SIZE, 241 len += scnprintf(buf+len, PAGE_SIZE - len,
242 "send_uevent:\t\t%s\n", 242 "send_uevent:\t\t%s\n",
243 test_fw_config->send_uevent ? 243 test_fw_config->send_uevent ?
244 "FW_ACTION_HOTPLUG" : 244 "FW_ACTION_HOTPLUG" :
245 "FW_ACTION_NOHOTPLUG"); 245 "FW_ACTION_NOHOTPLUG");
246 len += snprintf(buf+len, PAGE_SIZE, 246 len += scnprintf(buf+len, PAGE_SIZE - len,
247 "sync_direct:\t\t%s\n", 247 "sync_direct:\t\t%s\n",
248 test_fw_config->sync_direct ? "true" : "false"); 248 test_fw_config->sync_direct ? "true" : "false");
249 len += snprintf(buf+len, PAGE_SIZE, 249 len += scnprintf(buf+len, PAGE_SIZE - len,
250 "read_fw_idx:\t%u\n", test_fw_config->read_fw_idx); 250 "read_fw_idx:\t%u\n", test_fw_config->read_fw_idx);
251 251
252 mutex_unlock(&test_fw_mutex); 252 mutex_unlock(&test_fw_mutex);