diff mbox series

mm/damon: fix stringop-overread warning in kunit test

Message ID 20210920100132.1390409-1-arnd@kernel.org (mailing list archive)
State New
Headers show
Series mm/damon: fix stringop-overread warning in kunit test | expand

Commit Message

Arnd Bergmann Sept. 20, 2021, 10:01 a.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

gcc-11 points out that strnlen() with a fixed length on a constant
input makes no sense:

In file included from mm/damon/dbgfs.c:623:
mm/damon/dbgfs-test.h: In function 'damon_dbgfs_test_str_to_target_ids':
mm/damon/dbgfs-test.h:23:47: error: 'strnlen' specified bound 128 exceeds source size 4 [-Werror=stringop-overread]
   23 |         answers = str_to_target_ids(question, strnlen(question, 128),
      |                                               ^~~~~~~~~~~~~~~~~~~~~~
mm/damon/dbgfs-test.h:30:47: error: 'strnlen' specified bound 128 exceeds source size 7 [-Werror=stringop-overread]
   30 |         answers = str_to_target_ids(question, strnlen(question, 128),
      |                                               ^~~~~~~~~~~~~~~~~~~~~~
mm/damon/dbgfs-test.h:37:47: error: 'strnlen' specified bound 128 exceeds source size 5 [-Werror=stringop-overread]
   37 |         answers = str_to_target_ids(question, strnlen(question, 128),
      |                                               ^~~~~~~~~~~~~~~~~~~~~~

Use a plain strlen() instead.

Fixes: 17ccae8bb5c9 ("mm/damon: add kunit tests")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 mm/damon/dbgfs-test.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

SeongJae Park Sept. 20, 2021, 3:18 p.m. UTC | #1
On Mon, 20 Sep 2021 12:01:23 +0200 Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
> 
> gcc-11 points out that strnlen() with a fixed length on a constant
> input makes no sense:
> 
> In file included from mm/damon/dbgfs.c:623:
> mm/damon/dbgfs-test.h: In function 'damon_dbgfs_test_str_to_target_ids':
> mm/damon/dbgfs-test.h:23:47: error: 'strnlen' specified bound 128 exceeds source size 4 [-Werror=stringop-overread]
>    23 |         answers = str_to_target_ids(question, strnlen(question, 128),
>       |                                               ^~~~~~~~~~~~~~~~~~~~~~
> mm/damon/dbgfs-test.h:30:47: error: 'strnlen' specified bound 128 exceeds source size 7 [-Werror=stringop-overread]
>    30 |         answers = str_to_target_ids(question, strnlen(question, 128),
>       |                                               ^~~~~~~~~~~~~~~~~~~~~~
> mm/damon/dbgfs-test.h:37:47: error: 'strnlen' specified bound 128 exceeds source size 5 [-Werror=stringop-overread]
>    37 |         answers = str_to_target_ids(question, strnlen(question, 128),
>       |                                               ^~~~~~~~~~~~~~~~~~~~~~
> 
> Use a plain strlen() instead.
> 
> Fixes: 17ccae8bb5c9 ("mm/damon: add kunit tests")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thank you for the patch!  However, a same change has already merged[1] in -mm.
Sorry for that.

[1] https://lore.kernel.org/mm-commits/20210915033531.IdrhacHQk%25akpm@linux-foundation.org/


Thanks,
SJ

[...]
diff mbox series

Patch

diff --git a/mm/damon/dbgfs-test.h b/mm/damon/dbgfs-test.h
index 930e83bceef0..4eddcfa73996 100644
--- a/mm/damon/dbgfs-test.h
+++ b/mm/damon/dbgfs-test.h
@@ -20,27 +20,27 @@  static void damon_dbgfs_test_str_to_target_ids(struct kunit *test)
 	ssize_t nr_integers = 0, i;
 
 	question = "123";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)1, nr_integers);
 	KUNIT_EXPECT_EQ(test, 123ul, answers[0]);
 	kfree(answers);
 
 	question = "123abc";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)1, nr_integers);
 	KUNIT_EXPECT_EQ(test, 123ul, answers[0]);
 	kfree(answers);
 
 	question = "a123";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)0, nr_integers);
 	kfree(answers);
 
 	question = "12 35";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)2, nr_integers);
 	for (i = 0; i < nr_integers; i++)
@@ -48,7 +48,7 @@  static void damon_dbgfs_test_str_to_target_ids(struct kunit *test)
 	kfree(answers);
 
 	question = "12 35 46";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)3, nr_integers);
 	for (i = 0; i < nr_integers; i++)
@@ -56,7 +56,7 @@  static void damon_dbgfs_test_str_to_target_ids(struct kunit *test)
 	kfree(answers);
 
 	question = "12 35 abc 46";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)2, nr_integers);
 	for (i = 0; i < 2; i++)
@@ -64,13 +64,13 @@  static void damon_dbgfs_test_str_to_target_ids(struct kunit *test)
 	kfree(answers);
 
 	question = "";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)0, nr_integers);
 	kfree(answers);
 
 	question = "\n";
-	answers = str_to_target_ids(question, strnlen(question, 128),
+	answers = str_to_target_ids(question, strlen(question),
 			&nr_integers);
 	KUNIT_EXPECT_EQ(test, (ssize_t)0, nr_integers);
 	kfree(answers);