[RFC PATCH 07/16] mm/madvise: make madvise_walk_vmas() visit function receives a void pointer
From: SeongJae Park
Date: Wed Mar 05 2025 - 13:19:29 EST
madvise_walk_vmas() is used for two visit functions, namely
madvise_vma_anon_name() and madvise_walk_vmas(). The visit function
type is defined to receive an 'unsigned long' type argument. But, both
visit functions need a pointer argument, so casting the arguments
between 'unsinged long' and the real pointer types. It is more
idiomatic and clean to use a void pointer type for such cases. Update
the visit function type to receive a void pointer as the argument and
cleanup the type-casting code.
Signed-off-by: SeongJae Park <sj@xxxxxxxxxx>
---
mm/madvise.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/mm/madvise.c b/mm/madvise.c
index 8c4c128eaeb7..6fa7dabe5bad 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -1253,9 +1253,9 @@ struct madvise_behavior {
static int madvise_vma_behavior(struct vm_area_struct *vma,
struct vm_area_struct **prev,
unsigned long start, unsigned long end,
- unsigned long behavior_arg)
+ void *behavior_arg)
{
- struct madvise_behavior *arg = (struct madvise_behavior *)behavior_arg;
+ struct madvise_behavior *arg = behavior_arg;
int behavior = arg->behavior;
int error;
struct anon_vma_name *anon_name;
@@ -1468,10 +1468,10 @@ static bool process_madvise_remote_valid(int behavior)
*/
static
int madvise_walk_vmas(struct mm_struct *mm, unsigned long start,
- unsigned long end, unsigned long arg,
+ unsigned long end, void *arg,
int (*visit)(struct vm_area_struct *vma,
struct vm_area_struct **prev, unsigned long start,
- unsigned long end, unsigned long arg))
+ unsigned long end, void *arg))
{
struct vm_area_struct *vma;
struct vm_area_struct *prev;
@@ -1529,7 +1529,7 @@ int madvise_walk_vmas(struct mm_struct *mm, unsigned long start,
static int madvise_vma_anon_name(struct vm_area_struct *vma,
struct vm_area_struct **prev,
unsigned long start, unsigned long end,
- unsigned long anon_name)
+ void *anon_name)
{
int error;
@@ -1538,7 +1538,7 @@ static int madvise_vma_anon_name(struct vm_area_struct *vma,
return -EBADF;
error = madvise_update_vma(vma, prev, start, end, vma->vm_flags,
- (struct anon_vma_name *)anon_name);
+ anon_name);
/*
* madvise() returns EAGAIN if kernel resources, such as
@@ -1570,7 +1570,7 @@ int madvise_set_anon_name(struct mm_struct *mm, unsigned long start,
if (end == start)
return 0;
- return madvise_walk_vmas(mm, start, end, (unsigned long)anon_name,
+ return madvise_walk_vmas(mm, start, end, anon_name,
madvise_vma_anon_name);
}
#endif /* CONFIG_ANON_VMA_NAME */
@@ -1689,8 +1689,7 @@ static int madvise_do_behavior(struct mm_struct *mm,
if (is_memory_populate(behavior))
error = madvise_populate(mm, start, end, behavior);
else
- error = madvise_walk_vmas(mm, start, end,
- (unsigned long)madv_behavior,
+ error = madvise_walk_vmas(mm, start, end, madv_behavior,
madvise_vma_behavior);
blk_finish_plug(&plug);
return error;
--
2.39.5