Remove the __init marks from the functions in the iov_iter kunit test so that they don't get removed after the module is loaded or if the test is built in as the tests can be triggered through debugfs too. Also remove the __refdata mark which is unnecessary if the table so marked doesn't point at any __init funcs. This was found by claude-opus-5-5 run locally. Fixes: 2d71340ff1d4 ("iov_iter: Kunit tests for copying to/from an iterator") Signed-off-by: David Howells cc: Paulo Alcantara (Red Hat) cc: Matthew Wilcox cc: Jens Axboe cc: Christoph Hellwig cc: linux-block@vger.kernel.org cc: netfs@lists.linux.dev cc: linux-fsdevel@vger.kernel.org --- lib/tests/kunit_iov_iter.c | 96 +++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/lib/tests/kunit_iov_iter.c b/lib/tests/kunit_iov_iter.c index 32e42d8c7ca1..b4ad38d1a4bd 100644 --- a/lib/tests/kunit_iov_iter.c +++ b/lib/tests/kunit_iov_iter.c @@ -48,9 +48,9 @@ static void iov_kunit_unmap(void *data) vfree(data); } -static void *__init iov_kunit_create_buffer(struct kunit *test, - struct page ***ppages, - size_t npages) +static void *iov_kunit_create_buffer(struct kunit *test, + struct page ***ppages, + size_t npages) { struct page **pages; unsigned long got, last; @@ -90,11 +90,11 @@ static void *__init iov_kunit_create_buffer(struct kunit *test, return buffer; } -static void __init iov_kunit_load_kvec(struct kunit *test, - struct iov_iter *iter, int dir, - struct kvec *kvec, unsigned int kvmax, - void *buffer, size_t bufsize, - const struct kvec_test_range *pr) +static void iov_kunit_load_kvec(struct kunit *test, + struct iov_iter *iter, int dir, + struct kvec *kvec, unsigned int kvmax, + void *buffer, size_t bufsize, + const struct kvec_test_range *pr) { size_t size = 0; int i; @@ -116,7 +116,7 @@ static void __init iov_kunit_load_kvec(struct kunit *test, /* * Test copying to a ITER_KVEC-type iterator. */ -static void __init iov_kunit_copy_to_kvec(struct kunit *test) +static void iov_kunit_copy_to_kvec(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -166,7 +166,7 @@ static void __init iov_kunit_copy_to_kvec(struct kunit *test) /* * Test copying from a ITER_KVEC-type iterator. */ -static void __init iov_kunit_copy_from_kvec(struct kunit *test) +static void iov_kunit_copy_from_kvec(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -234,12 +234,12 @@ static const struct bvec_test_range bvec_test_ranges[] = { { -1, -1, -1 } }; -static void __init iov_kunit_load_bvec(struct kunit *test, - struct iov_iter *iter, int dir, - struct bio_vec *bvec, unsigned int bvmax, - struct page **pages, size_t npages, - size_t bufsize, - const struct bvec_test_range *pr) +static void iov_kunit_load_bvec(struct kunit *test, + struct iov_iter *iter, int dir, + struct bio_vec *bvec, unsigned int bvmax, + struct page **pages, size_t npages, + size_t bufsize, + const struct bvec_test_range *pr) { struct page *can_merge = NULL, *page; size_t size = 0; @@ -275,7 +275,7 @@ static void __init iov_kunit_load_bvec(struct kunit *test, /* * Test copying to a ITER_BVEC-type iterator. */ -static void __init iov_kunit_copy_to_bvec(struct kunit *test) +static void iov_kunit_copy_to_bvec(struct kunit *test) { const struct bvec_test_range *pr; struct iov_iter iter; @@ -328,7 +328,7 @@ static void __init iov_kunit_copy_to_bvec(struct kunit *test) /* * Test copying from a ITER_BVEC-type iterator. */ -static void __init iov_kunit_copy_from_bvec(struct kunit *test) +static void iov_kunit_copy_from_bvec(struct kunit *test) { const struct bvec_test_range *pr; struct iov_iter iter; @@ -392,10 +392,10 @@ static void iov_kunit_destroy_folioq(void *data) } } -static void __init iov_kunit_load_folioq(struct kunit *test, - struct iov_iter *iter, int dir, - struct folio_queue *folioq, - struct page **pages, size_t npages) +static void iov_kunit_load_folioq(struct kunit *test, + struct iov_iter *iter, int dir, + struct folio_queue *folioq, + struct page **pages, size_t npages) { struct folio_queue *p = folioq; size_t size = 0; @@ -429,7 +429,7 @@ static struct folio_queue *iov_kunit_create_folioq(struct kunit *test) /* * Test copying to a ITER_FOLIOQ-type iterator. */ -static void __init iov_kunit_copy_to_folioq(struct kunit *test) +static void iov_kunit_copy_to_folioq(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -491,7 +491,7 @@ static void __init iov_kunit_copy_to_folioq(struct kunit *test) /* * Test copying from a ITER_FOLIOQ-type iterator. */ -static void __init iov_kunit_copy_from_folioq(struct kunit *test) +static void iov_kunit_copy_from_folioq(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -560,10 +560,10 @@ static void iov_kunit_destroy_xarray(void *data) kfree(xarray); } -static void __init iov_kunit_load_xarray(struct kunit *test, - struct iov_iter *iter, int dir, - struct xarray *xarray, - struct page **pages, size_t npages) +static void iov_kunit_load_xarray(struct kunit *test, + struct iov_iter *iter, int dir, + struct xarray *xarray, + struct page **pages, size_t npages) { size_t size = 0; int i; @@ -591,7 +591,7 @@ static struct xarray *iov_kunit_create_xarray(struct kunit *test) /* * Test copying to a ITER_XARRAY-type iterator. */ -static void __init iov_kunit_copy_to_xarray(struct kunit *test) +static void iov_kunit_copy_to_xarray(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -649,7 +649,7 @@ static void __init iov_kunit_copy_to_xarray(struct kunit *test) /* * Test copying from a ITER_XARRAY-type iterator. */ -static void __init iov_kunit_copy_from_xarray(struct kunit *test) +static void iov_kunit_copy_from_xarray(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -712,7 +712,7 @@ static void __init iov_kunit_copy_from_xarray(struct kunit *test) /* * Test the extraction of ITER_KVEC-type iterators. */ -static void __init iov_kunit_extract_pages_kvec(struct kunit *test) +static void iov_kunit_extract_pages_kvec(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -792,7 +792,7 @@ static void __init iov_kunit_extract_pages_kvec(struct kunit *test) /* * Test the extraction of ITER_BVEC-type iterators. */ -static void __init iov_kunit_extract_pages_bvec(struct kunit *test) +static void iov_kunit_extract_pages_bvec(struct kunit *test) { const struct bvec_test_range *pr; struct iov_iter iter; @@ -870,7 +870,7 @@ static void __init iov_kunit_extract_pages_bvec(struct kunit *test) /* * Test the extraction of ITER_FOLIOQ-type iterators. */ -static void __init iov_kunit_extract_pages_folioq(struct kunit *test) +static void iov_kunit_extract_pages_folioq(struct kunit *test) { const struct kvec_test_range *pr; struct folio_queue *folioq; @@ -949,7 +949,7 @@ static void __init iov_kunit_extract_pages_folioq(struct kunit *test) /* * Test the extraction of ITER_XARRAY-type iterators. */ -static void __init iov_kunit_extract_pages_xarray(struct kunit *test) +static void iov_kunit_extract_pages_xarray(struct kunit *test) { const struct kvec_test_range *pr; struct iov_iter iter; @@ -1033,8 +1033,7 @@ struct iov_kunit_iter_to_sg_data { size_t npages; }; -static void __init -iov_kunit_iter_unpin_sgt(void *data) +static void iov_kunit_iter_unpin_sgt(void *data) { struct sg_table *sgt = data; @@ -1042,9 +1041,9 @@ iov_kunit_iter_unpin_sgt(void *data) unpin_user_page(sg_page(&sgt->sgl[i])); } -static void __init -iov_kunit_iter_to_sg_init(struct kunit *test, size_t bufsize, bool user, - struct iov_kunit_iter_to_sg_data *data) +static void iov_kunit_iter_to_sg_init(struct kunit *test, size_t bufsize, + bool user, + struct iov_kunit_iter_to_sg_data *data) { struct page **spages; struct scatterlist *sg; @@ -1080,10 +1079,9 @@ iov_kunit_iter_to_sg_init(struct kunit *test, size_t bufsize, bool user, memset(data->scratch, 0, bufsize); } -static void __init -iov_kunit_iter_to_sg_check(struct kunit *test, struct iov_iter *iter, - size_t bufsize, - struct iov_kunit_iter_to_sg_data *data) +static void iov_kunit_iter_to_sg_check(struct kunit *test, struct iov_iter *iter, + size_t bufsize, + struct iov_kunit_iter_to_sg_data *data) { static const size_t tail = 16 * PAGE_SIZE; size_t i; @@ -1128,7 +1126,7 @@ iov_kunit_iter_to_sg_check(struct kunit *test, struct iov_iter *iter, KUNIT_EXPECT_EQ(test, i, bufsize); } -static void __init iov_kunit_iter_to_sg_kvec(struct kunit *test) +static void iov_kunit_iter_to_sg_kvec(struct kunit *test) { struct iov_kunit_iter_to_sg_data data; struct iov_iter iter; @@ -1145,7 +1143,7 @@ static void __init iov_kunit_iter_to_sg_kvec(struct kunit *test) iov_kunit_iter_to_sg_check(test, &iter, bufsize, &data); } -static void __init iov_kunit_iter_to_sg_bvec(struct kunit *test) +static void iov_kunit_iter_to_sg_bvec(struct kunit *test) { struct iov_kunit_iter_to_sg_data data; struct page *p, *can_merge = NULL; @@ -1173,7 +1171,7 @@ static void __init iov_kunit_iter_to_sg_bvec(struct kunit *test) iov_kunit_iter_to_sg_check(test, &iter, bufsize, &data); } -static void __init iov_kunit_iter_to_sg_folioq(struct kunit *test) +static void iov_kunit_iter_to_sg_folioq(struct kunit *test) { struct iov_kunit_iter_to_sg_data data; struct folio_queue *folioq; @@ -1190,7 +1188,7 @@ static void __init iov_kunit_iter_to_sg_folioq(struct kunit *test) iov_kunit_iter_to_sg_check(test, &iter, bufsize, &data); } -static void __init iov_kunit_iter_to_sg_xarray(struct kunit *test) +static void iov_kunit_iter_to_sg_xarray(struct kunit *test) { struct iov_kunit_iter_to_sg_data data; struct xarray *xarray; @@ -1207,7 +1205,7 @@ static void __init iov_kunit_iter_to_sg_xarray(struct kunit *test) iov_kunit_iter_to_sg_check(test, &iter, bufsize, &data); } -static void __init iov_kunit_iter_to_sg_ubuf(struct kunit *test) +static void iov_kunit_iter_to_sg_ubuf(struct kunit *test) { struct iov_kunit_iter_to_sg_data data; struct iov_iter iter; @@ -1221,7 +1219,7 @@ static void __init iov_kunit_iter_to_sg_ubuf(struct kunit *test) iov_kunit_iter_to_sg_check(test, &iter, bufsize, &data); } -static struct kunit_case __refdata iov_kunit_cases[] = { +static struct kunit_case iov_kunit_cases[] = { KUNIT_CASE(iov_kunit_copy_to_kvec), KUNIT_CASE(iov_kunit_copy_from_kvec), KUNIT_CASE(iov_kunit_copy_to_bvec),