Skip to content

Commit 044cd97

Browse files
sjp38torvalds
authored andcommitted
mm/damon/vaddr-test: split a test function having >1024 bytes frame size
On some configuration[1], 'damon_test_split_evenly()' kunit test function has >1024 bytes frame size, so below build warning is triggered: CC mm/damon/vaddr.o In file included from mm/damon/vaddr.c:672: mm/damon/vaddr-test.h: In function 'damon_test_split_evenly': mm/damon/vaddr-test.h:309:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=] 309 | } | ^ This commit fixes the warning by separating the common logic in the function. [1] https://lore.kernel.org/linux-mm/[email protected]/ Link: https://lkml.kernel.org/r/[email protected] Fixes: 17ccae8 ("mm/damon: add kunit tests") Signed-off-by: SeongJae Park <[email protected]> Reported-by: kernel test robot <[email protected]> Cc: Brendan Higgins <[email protected]> Cc: Shuah Khan <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 09e1228 commit 044cd97

File tree

1 file changed

+40
-37
lines changed

1 file changed

+40
-37
lines changed

mm/damon/vaddr-test.h

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -252,59 +252,62 @@ static void damon_test_apply_three_regions4(struct kunit *test)
252252
new_three_regions, expected, ARRAY_SIZE(expected));
253253
}
254254

255-
static void damon_test_split_evenly(struct kunit *test)
255+
static void damon_test_split_evenly_fail(struct kunit *test,
256+
unsigned long start, unsigned long end, unsigned int nr_pieces)
256257
{
257-
struct damon_ctx *c = damon_new_ctx();
258-
struct damon_target *t;
259-
struct damon_region *r;
260-
unsigned long i;
261-
262-
KUNIT_EXPECT_EQ(test, damon_va_evenly_split_region(NULL, NULL, 5),
263-
-EINVAL);
264-
265-
t = damon_new_target(42);
266-
r = damon_new_region(0, 100);
267-
KUNIT_EXPECT_EQ(test, damon_va_evenly_split_region(t, r, 0), -EINVAL);
258+
struct damon_target *t = damon_new_target(42);
259+
struct damon_region *r = damon_new_region(start, end);
268260

269261
damon_add_region(r, t);
270-
KUNIT_EXPECT_EQ(test, damon_va_evenly_split_region(t, r, 10), 0);
271-
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 10u);
262+
KUNIT_EXPECT_EQ(test,
263+
damon_va_evenly_split_region(t, r, nr_pieces), -EINVAL);
264+
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 1u);
272265

273-
i = 0;
274266
damon_for_each_region(r, t) {
275-
KUNIT_EXPECT_EQ(test, r->ar.start, i++ * 10);
276-
KUNIT_EXPECT_EQ(test, r->ar.end, i * 10);
267+
KUNIT_EXPECT_EQ(test, r->ar.start, start);
268+
KUNIT_EXPECT_EQ(test, r->ar.end, end);
277269
}
270+
278271
damon_free_target(t);
272+
}
273+
274+
static void damon_test_split_evenly_succ(struct kunit *test,
275+
unsigned long start, unsigned long end, unsigned int nr_pieces)
276+
{
277+
struct damon_target *t = damon_new_target(42);
278+
struct damon_region *r = damon_new_region(start, end);
279+
unsigned long expected_width = (end - start) / nr_pieces;
280+
unsigned long i = 0;
279281

280-
t = damon_new_target(42);
281-
r = damon_new_region(5, 59);
282282
damon_add_region(r, t);
283-
KUNIT_EXPECT_EQ(test, damon_va_evenly_split_region(t, r, 5), 0);
284-
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 5u);
283+
KUNIT_EXPECT_EQ(test,
284+
damon_va_evenly_split_region(t, r, nr_pieces), 0);
285+
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), nr_pieces);
285286

286-
i = 0;
287287
damon_for_each_region(r, t) {
288-
if (i == 4)
288+
if (i == nr_pieces - 1)
289289
break;
290-
KUNIT_EXPECT_EQ(test, r->ar.start, 5 + 10 * i++);
291-
KUNIT_EXPECT_EQ(test, r->ar.end, 5 + 10 * i);
290+
KUNIT_EXPECT_EQ(test,
291+
r->ar.start, start + i++ * expected_width);
292+
KUNIT_EXPECT_EQ(test, r->ar.end, start + i * expected_width);
292293
}
293-
KUNIT_EXPECT_EQ(test, r->ar.start, 5 + 10 * i);
294-
KUNIT_EXPECT_EQ(test, r->ar.end, 59ul);
294+
KUNIT_EXPECT_EQ(test, r->ar.start, start + i * expected_width);
295+
KUNIT_EXPECT_EQ(test, r->ar.end, end);
295296
damon_free_target(t);
297+
}
296298

297-
t = damon_new_target(42);
298-
r = damon_new_region(5, 6);
299-
damon_add_region(r, t);
300-
KUNIT_EXPECT_EQ(test, damon_va_evenly_split_region(t, r, 2), -EINVAL);
301-
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), 1u);
299+
static void damon_test_split_evenly(struct kunit *test)
300+
{
301+
struct damon_ctx *c = damon_new_ctx();
302+
303+
KUNIT_EXPECT_EQ(test, damon_va_evenly_split_region(NULL, NULL, 5),
304+
-EINVAL);
305+
306+
damon_test_split_evenly_fail(test, 0, 100, 0);
307+
damon_test_split_evenly_succ(test, 0, 100, 10);
308+
damon_test_split_evenly_succ(test, 5, 59, 5);
309+
damon_test_split_evenly_fail(test, 5, 6, 2);
302310

303-
damon_for_each_region(r, t) {
304-
KUNIT_EXPECT_EQ(test, r->ar.start, 5ul);
305-
KUNIT_EXPECT_EQ(test, r->ar.end, 6ul);
306-
}
307-
damon_free_target(t);
308311
damon_destroy_ctx(c);
309312
}
310313

0 commit comments

Comments
 (0)