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.
Showing the changes to include (2 of 5 files). Show all
Unified · Split
| @@ -51,7 +51,7 @@ static inline void ksm_exit(struct mm_struct *mm) · 50 unmodified lines | |||
| 51 | struct page *ksm_might_need_to_copy(struct page *page, | 51 | struct page *ksm_might_need_to_copy(struct page *page, |
| 52 | struct vm_area_struct *vma, unsigned long address); | 52 | struct vm_area_struct *vma, unsigned long address); |
| 53 | 53 | ||
| 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); |
| 55 | void folio_migrate_ksm(struct folio *newfolio, struct folio *folio); | 55 | void folio_migrate_ksm(struct folio *newfolio, struct folio *folio); |
| 56 | 56 | ||
| 57 | #else /* !CONFIG_KSM */ | 57 | #else /* !CONFIG_KSM */ |
| @@ -79,7 +79,7 @@ static inline struct page *ksm_might_need_to_copy(struct page *page, · 21 unmodified lines | |||
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | static inline void rmap_walk_ksm(struct folio *folio, | 81 | static inline void rmap_walk_ksm(struct folio *folio, |
| 82 | struct rmap_walk_control *rwc) | 82 | const struct rmap_walk_control *rwc) |
| 83 | { | 83 | { |
| 84 | } | 84 | } |
| 85 | 85 | ||
| @@ -292,8 +292,8 @@ struct rmap_walk_control { · 291 unmodified lines | |||
| 292 | bool (*invalid_vma)(struct vm_area_struct *vma, void *arg); | 292 | bool (*invalid_vma)(struct vm_area_struct *vma, void *arg); |
| 293 | }; | 293 | }; |
| 294 | 294 | ||
| 295 | void rmap_walk(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, struct rmap_walk_control *rwc); | 296 | void rmap_walk_locked(struct folio *folio, const struct rmap_walk_control *rwc); |
| 297 | 297 | ||
| 298 | #else /* !CONFIG_MMU */ | 298 | #else /* !CONFIG_MMU */ |
| 299 | 299 | ||