Skip to content

Commit 84fbbe2

Browse files
author
Matthew Wilcox (Oracle)
committed
mm/rmap: Constify the rmap_walk_control argument
The rmap walking functions do not modify the rmap_walk_control, and page_idle_clear_pte_refs() takes advantage of that to move construction of the rmap_walk_control to compile time. This lets us remove an unclean cast. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
1 parent 2f031c6 commit 84fbbe2

File tree

5 files changed

+13
-13
lines changed

5 files changed

+13
-13
lines changed

include/linux/ksm.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ static inline void ksm_exit(struct mm_struct *mm)
5151
struct page *ksm_might_need_to_copy(struct page *page,
5252
struct vm_area_struct *vma, unsigned long address);
5353

54-
void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc);
54+
void rmap_walk_ksm(struct folio *folio, const struct rmap_walk_control *rwc);
5555
void folio_migrate_ksm(struct folio *newfolio, struct folio *folio);
5656

5757
#else /* !CONFIG_KSM */
@@ -79,7 +79,7 @@ static inline struct page *ksm_might_need_to_copy(struct page *page,
7979
}
8080

8181
static inline void rmap_walk_ksm(struct folio *folio,
82-
struct rmap_walk_control *rwc)
82+
const struct rmap_walk_control *rwc)
8383
{
8484
}
8585

include/linux/rmap.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,8 @@ struct rmap_walk_control {
292292
bool (*invalid_vma)(struct vm_area_struct *vma, void *arg);
293293
};
294294

295-
void rmap_walk(struct folio *folio, struct rmap_walk_control *rwc);
296-
void rmap_walk_locked(struct folio *folio, struct rmap_walk_control *rwc);
295+
void rmap_walk(struct folio *folio, const struct rmap_walk_control *rwc);
296+
void rmap_walk_locked(struct folio *folio, const struct rmap_walk_control *rwc);
297297

298298
#else /* !CONFIG_MMU */
299299

mm/ksm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2588,7 +2588,7 @@ struct page *ksm_might_need_to_copy(struct page *page,
25882588
return new_page;
25892589
}
25902590

2591-
void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc)
2591+
void rmap_walk_ksm(struct folio *folio, const struct rmap_walk_control *rwc)
25922592
{
25932593
struct stable_node *stable_node;
25942594
struct rmap_item *rmap_item;

mm/page_idle.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static void page_idle_clear_pte_refs(struct page *page)
103103
if (need_lock && !folio_trylock(folio))
104104
return;
105105

106-
rmap_walk(folio, (struct rmap_walk_control *)&rwc);
106+
rmap_walk(folio, &rwc);
107107

108108
if (need_lock)
109109
folio_unlock(folio);

mm/rmap.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2173,7 +2173,7 @@ void __put_anon_vma(struct anon_vma *anon_vma)
21732173
}
21742174

21752175
static struct anon_vma *rmap_walk_anon_lock(struct folio *folio,
2176-
struct rmap_walk_control *rwc)
2176+
const struct rmap_walk_control *rwc)
21772177
{
21782178
struct anon_vma *anon_vma;
21792179

@@ -2203,8 +2203,8 @@ static struct anon_vma *rmap_walk_anon_lock(struct folio *folio,
22032203
* Find all the mappings of a page using the mapping pointer and the vma chains
22042204
* contained in the anon_vma struct it points to.
22052205
*/
2206-
static void rmap_walk_anon(struct folio *folio, struct rmap_walk_control *rwc,
2207-
bool locked)
2206+
static void rmap_walk_anon(struct folio *folio,
2207+
const struct rmap_walk_control *rwc, bool locked)
22082208
{
22092209
struct anon_vma *anon_vma;
22102210
pgoff_t pgoff_start, pgoff_end;
@@ -2251,8 +2251,8 @@ static void rmap_walk_anon(struct folio *folio, struct rmap_walk_control *rwc,
22512251
* Find all the mappings of a page using the mapping pointer and the vma chains
22522252
* contained in the address_space struct it points to.
22532253
*/
2254-
static void rmap_walk_file(struct folio *folio, struct rmap_walk_control *rwc,
2255-
bool locked)
2254+
static void rmap_walk_file(struct folio *folio,
2255+
const struct rmap_walk_control *rwc, bool locked)
22562256
{
22572257
struct address_space *mapping = folio_mapping(folio);
22582258
pgoff_t pgoff_start, pgoff_end;
@@ -2294,7 +2294,7 @@ static void rmap_walk_file(struct folio *folio, struct rmap_walk_control *rwc,
22942294
i_mmap_unlock_read(mapping);
22952295
}
22962296

2297-
void rmap_walk(struct folio *folio, struct rmap_walk_control *rwc)
2297+
void rmap_walk(struct folio *folio, const struct rmap_walk_control *rwc)
22982298
{
22992299
if (unlikely(folio_test_ksm(folio)))
23002300
rmap_walk_ksm(folio, rwc);
@@ -2305,7 +2305,7 @@ void rmap_walk(struct folio *folio, struct rmap_walk_control *rwc)
23052305
}
23062306

23072307
/* Like rmap_walk, but caller holds relevant rmap lock */
2308-
void rmap_walk_locked(struct folio *folio, struct rmap_walk_control *rwc)
2308+
void rmap_walk_locked(struct folio *folio, const struct rmap_walk_control *rwc)
23092309
{
23102310
/* no ksm support for now */
23112311
VM_BUG_ON_FOLIO(folio_test_ksm(folio), folio);

0 commit comments

Comments
 (0)