Skip to content

Commit ce75e06

Browse files
rfvirgilbroonie
authored andcommitted
regmap: kunit: Use a KUnit action to call regmap_exit()
Registert a KUnit action handler to call regmap_exit() when a test terminates. This ensures that regmap_exit() will be called if a test function returns early or aborts. Signed-off-by: Richard Fitzgerald <[email protected]> Link: https://msgid.link/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 7903d15 commit ce75e06

File tree

1 file changed

+7
-55
lines changed

1 file changed

+7
-55
lines changed

drivers/base/regmap/regmap-kunit.c

Lines changed: 7 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
// Copyright 2023 Arm Ltd
66

77
#include <kunit/device.h>
8+
#include <kunit/resource.h>
89
#include <kunit/test.h>
910
#include "internal.h"
1011

1112
#define BLOCK_TEST_SIZE 12
1213

14+
KUNIT_DEFINE_ACTION_WRAPPER(regmap_exit_action, regmap_exit, struct regmap *);
15+
1316
struct regmap_test_priv {
1417
struct device *dev;
1518
};
@@ -190,6 +193,8 @@ static struct regmap *gen_regmap(struct kunit *test,
190193
if (IS_ERR(ret)) {
191194
kfree(buf);
192195
kfree(*data);
196+
} else {
197+
kunit_add_action(test, regmap_exit_action, ret);
193198
}
194199

195200
return ret;
@@ -226,8 +231,6 @@ static void basic_read_write(struct kunit *test)
226231

227232
/* If using a cache the cache satisfied the read */
228233
KUNIT_EXPECT_EQ(test, config.cache_type == REGCACHE_NONE, data->read[0]);
229-
230-
regmap_exit(map);
231234
}
232235

233236
static void bulk_write(struct kunit *test)
@@ -261,8 +264,6 @@ static void bulk_write(struct kunit *test)
261264
/* If using a cache the cache satisfied the read */
262265
for (i = 0; i < BLOCK_TEST_SIZE; i++)
263266
KUNIT_EXPECT_EQ(test, config.cache_type == REGCACHE_NONE, data->read[i]);
264-
265-
regmap_exit(map);
266267
}
267268

268269
static void bulk_read(struct kunit *test)
@@ -292,8 +293,6 @@ static void bulk_read(struct kunit *test)
292293
/* If using a cache the cache satisfied the read */
293294
for (i = 0; i < BLOCK_TEST_SIZE; i++)
294295
KUNIT_EXPECT_EQ(test, config.cache_type == REGCACHE_NONE, data->read[i]);
295-
296-
regmap_exit(map);
297296
}
298297

299298
static void write_readonly(struct kunit *test)
@@ -325,8 +324,6 @@ static void write_readonly(struct kunit *test)
325324
/* Did that match what we see on the device? */
326325
for (i = 0; i < BLOCK_TEST_SIZE; i++)
327326
KUNIT_EXPECT_EQ(test, i != 5, data->written[i]);
328-
329-
regmap_exit(map);
330327
}
331328

332329
static void read_writeonly(struct kunit *test)
@@ -363,8 +360,6 @@ static void read_writeonly(struct kunit *test)
363360

364361
/* Did we trigger a hardware access? */
365362
KUNIT_EXPECT_FALSE(test, data->read[5]);
366-
367-
regmap_exit(map);
368363
}
369364

370365
static void reg_defaults(struct kunit *test)
@@ -471,8 +466,6 @@ static void register_patch(struct kunit *test)
471466
break;
472467
}
473468
}
474-
475-
regmap_exit(map);
476469
}
477470

478471
static void stride(struct kunit *test)
@@ -512,8 +505,6 @@ static void stride(struct kunit *test)
512505
KUNIT_EXPECT_TRUE(test, data->written[i]);
513506
}
514507
}
515-
516-
regmap_exit(map);
517508
}
518509

519510
static struct regmap_range_cfg test_range = {
@@ -612,8 +603,6 @@ static void basic_ranges(struct kunit *test)
612603
KUNIT_EXPECT_FALSE(test, data->read[i]);
613604
KUNIT_EXPECT_FALSE(test, data->written[i]);
614605
}
615-
616-
regmap_exit(map);
617606
}
618607

619608
/* Try to stress dynamic creation of cache data structures */
@@ -665,8 +654,6 @@ static void stress_insert(struct kunit *test)
665654
KUNIT_EXPECT_EQ(test, rval, vals[i]);
666655
KUNIT_EXPECT_EQ(test, config.cache_type == REGCACHE_NONE, data->read[i]);
667656
}
668-
669-
regmap_exit(map);
670657
}
671658

672659
static void cache_bypass(struct kunit *test)
@@ -702,8 +689,6 @@ static void cache_bypass(struct kunit *test)
702689
regcache_cache_bypass(map, false);
703690
KUNIT_EXPECT_EQ(test, 0, regmap_read(map, param->from_reg, &rval));
704691
KUNIT_EXPECT_EQ(test, val, rval);
705-
706-
regmap_exit(map);
707692
}
708693

709694
static void cache_sync_marked_dirty(struct kunit *test)
@@ -739,8 +724,6 @@ static void cache_sync_marked_dirty(struct kunit *test)
739724
KUNIT_EXPECT_MEMEQ(test, &data->vals[param->from_reg], val, sizeof(val));
740725
for (i = 0; i < BLOCK_TEST_SIZE; i++)
741726
KUNIT_EXPECT_EQ(test, true, data->written[param->from_reg + i]);
742-
743-
regmap_exit(map);
744727
}
745728

746729
static void cache_sync_after_cache_only(struct kunit *test)
@@ -790,8 +773,6 @@ static void cache_sync_after_cache_only(struct kunit *test)
790773
KUNIT_EXPECT_MEMEQ(test, &data->vals[param->from_reg], val, sizeof(val));
791774
for (i = 0; i < BLOCK_TEST_SIZE; i++)
792775
KUNIT_EXPECT_TRUE(test, data->written[param->from_reg + i]);
793-
794-
regmap_exit(map);
795776
}
796777

797778
static void cache_sync_defaults_marked_dirty(struct kunit *test)
@@ -841,8 +822,6 @@ static void cache_sync_defaults_marked_dirty(struct kunit *test)
841822
KUNIT_EXPECT_EQ(test, 0, regcache_sync(map));
842823
for (i = 0; i < BLOCK_TEST_SIZE; i++)
843824
KUNIT_EXPECT_FALSE(test, data->written[param->from_reg + i]);
844-
845-
regmap_exit(map);
846825
}
847826

848827
static void cache_sync_default_after_cache_only(struct kunit *test)
@@ -890,8 +869,6 @@ static void cache_sync_default_after_cache_only(struct kunit *test)
890869
KUNIT_EXPECT_EQ(test, 0, regcache_sync(map));
891870
KUNIT_EXPECT_TRUE(test, data->written[param->from_reg + 2]);
892871
KUNIT_EXPECT_EQ(test, data->vals[param->from_reg + 2], orig_val);
893-
894-
regmap_exit(map);
895872
}
896873

897874
static void cache_sync_readonly(struct kunit *test)
@@ -930,8 +907,6 @@ static void cache_sync_readonly(struct kunit *test)
930907
/* Did that match what we see on the device? */
931908
for (i = 0; i < BLOCK_TEST_SIZE; i++)
932909
KUNIT_EXPECT_EQ(test, i != 5, data->written[param->from_reg + i]);
933-
934-
regmap_exit(map);
935910
}
936911

937912
static void cache_sync_patch(struct kunit *test)
@@ -990,8 +965,6 @@ static void cache_sync_patch(struct kunit *test)
990965
break;
991966
}
992967
}
993-
994-
regmap_exit(map);
995968
}
996969

997970
static void cache_drop(struct kunit *test)
@@ -1032,8 +1005,6 @@ static void cache_drop(struct kunit *test)
10321005
for (i = 0; i < BLOCK_TEST_SIZE; i++)
10331006
KUNIT_EXPECT_EQ(test, data->read[param->from_reg + i], i >= 3 && i <= 5);
10341007
KUNIT_EXPECT_MEMEQ(test, &data->vals[param->from_reg], rval, sizeof(rval));
1035-
1036-
regmap_exit(map);
10371008
}
10381009

10391010
static void cache_drop_all_and_sync_marked_dirty(struct kunit *test)
@@ -1075,8 +1046,6 @@ static void cache_drop_all_and_sync_marked_dirty(struct kunit *test)
10751046
KUNIT_EXPECT_EQ(test, 0, regcache_sync(map));
10761047
for (i = 0; i <= config.max_register; i++)
10771048
KUNIT_EXPECT_FALSE(test, data->written[i]);
1078-
1079-
regmap_exit(map);
10801049
}
10811050

10821051
static void cache_drop_all_and_sync_no_defaults(struct kunit *test)
@@ -1119,8 +1088,6 @@ static void cache_drop_all_and_sync_no_defaults(struct kunit *test)
11191088
KUNIT_EXPECT_EQ(test, 0, regcache_sync(map));
11201089
for (i = 0; i <= config.max_register; i++)
11211090
KUNIT_EXPECT_FALSE(test, data->written[i]);
1122-
1123-
regmap_exit(map);
11241091
}
11251092

11261093
static void cache_drop_all_and_sync_has_defaults(struct kunit *test)
@@ -1164,8 +1131,6 @@ static void cache_drop_all_and_sync_has_defaults(struct kunit *test)
11641131
KUNIT_EXPECT_EQ(test, 0, regcache_sync(map));
11651132
for (i = 0; i <= config.max_register; i++)
11661133
KUNIT_EXPECT_FALSE(test, data->written[i]);
1167-
1168-
regmap_exit(map);
11691134
}
11701135

11711136
static void cache_present(struct kunit *test)
@@ -1202,8 +1167,6 @@ static void cache_present(struct kunit *test)
12021167
/* Now everything should be cached */
12031168
for (i = 0; i < BLOCK_TEST_SIZE; i++)
12041169
KUNIT_ASSERT_TRUE(test, regcache_reg_cached(map, param->from_reg + i));
1205-
1206-
regmap_exit(map);
12071170
}
12081171

12091172
/* Check that caching the window register works with sync */
@@ -1350,6 +1313,8 @@ static struct regmap *gen_raw_regmap(struct kunit *test,
13501313
if (IS_ERR(ret)) {
13511314
kfree(buf);
13521315
kfree(*data);
1316+
} else {
1317+
kunit_add_action(test, regmap_exit_action, ret);
13531318
}
13541319

13551320
return ret;
@@ -1375,8 +1340,6 @@ static void raw_read_defaults_single(struct kunit *test)
13751340
KUNIT_EXPECT_EQ(test, 0, regmap_read(map, i, &rval));
13761341
KUNIT_EXPECT_EQ(test, config.reg_defaults[i].def, rval);
13771342
}
1378-
1379-
regmap_exit(map);
13801343
}
13811344

13821345
static void raw_read_defaults(struct kunit *test)
@@ -1414,7 +1377,6 @@ static void raw_read_defaults(struct kunit *test)
14141377
}
14151378

14161379
kfree(rval);
1417-
regmap_exit(map);
14181380
}
14191381

14201382
static void raw_write_read_single(struct kunit *test)
@@ -1438,8 +1400,6 @@ static void raw_write_read_single(struct kunit *test)
14381400
KUNIT_EXPECT_EQ(test, 0, regmap_write(map, 0, val));
14391401
KUNIT_EXPECT_EQ(test, 0, regmap_read(map, 0, &rval));
14401402
KUNIT_EXPECT_EQ(test, val, rval);
1441-
1442-
regmap_exit(map);
14431403
}
14441404

14451405
static void raw_write(struct kunit *test)
@@ -1489,8 +1449,6 @@ static void raw_write(struct kunit *test)
14891449

14901450
/* The values should appear in the "hardware" */
14911451
KUNIT_EXPECT_MEMEQ(test, &hw_buf[2], val, sizeof(val));
1492-
1493-
regmap_exit(map);
14941452
}
14951453

14961454
static bool reg_zero(struct device *dev, unsigned int reg)
@@ -1548,8 +1506,6 @@ static void raw_noinc_write(struct kunit *test)
15481506
/* Make sure we didn't touch the register after the noinc register */
15491507
KUNIT_EXPECT_EQ(test, 0, regmap_read(map, 1, &val));
15501508
KUNIT_ASSERT_EQ(test, val_test, val);
1551-
1552-
regmap_exit(map);
15531509
}
15541510

15551511
static void raw_sync(struct kunit *test)
@@ -1625,8 +1581,6 @@ static void raw_sync(struct kunit *test)
16251581

16261582
/* The values should now appear in the "hardware" */
16271583
KUNIT_EXPECT_MEMEQ(test, &hw_buf[2], &val[0], sizeof(val));
1628-
1629-
regmap_exit(map);
16301584
}
16311585

16321586
static void raw_ranges(struct kunit *test)
@@ -1689,8 +1643,6 @@ static void raw_ranges(struct kunit *test)
16891643
KUNIT_EXPECT_FALSE(test, data->read[i]);
16901644
KUNIT_EXPECT_FALSE(test, data->written[i]);
16911645
}
1692-
1693-
regmap_exit(map);
16941646
}
16951647

16961648
static struct kunit_case regmap_test_cases[] = {

0 commit comments

Comments
 (0)