@@ -2992,6 +2992,14 @@ static inline bool ptlock_init(struct ptdesc *ptdesc) { return true; }
2992
2992
static inline void ptlock_free (struct ptdesc * ptdesc ) {}
2993
2993
#endif /* defined(CONFIG_SPLIT_PTE_PTLOCKS) */
2994
2994
2995
+ static inline void __pagetable_ctor (struct ptdesc * ptdesc )
2996
+ {
2997
+ struct folio * folio = ptdesc_folio (ptdesc );
2998
+
2999
+ __folio_set_pgtable (folio );
3000
+ lruvec_stat_add_folio (folio , NR_PAGETABLE );
3001
+ }
3002
+
2995
3003
static inline void pagetable_dtor (struct ptdesc * ptdesc )
2996
3004
{
2997
3005
struct folio * folio = ptdesc_folio (ptdesc );
@@ -3009,12 +3017,9 @@ static inline void pagetable_dtor_free(struct ptdesc *ptdesc)
3009
3017
3010
3018
static inline bool pagetable_pte_ctor (struct ptdesc * ptdesc )
3011
3019
{
3012
- struct folio * folio = ptdesc_folio (ptdesc );
3013
-
3014
3020
if (!ptlock_init (ptdesc ))
3015
3021
return false;
3016
- __folio_set_pgtable (folio );
3017
- lruvec_stat_add_folio (folio , NR_PAGETABLE );
3022
+ __pagetable_ctor (ptdesc );
3018
3023
return true;
3019
3024
}
3020
3025
@@ -3118,13 +3123,10 @@ static inline spinlock_t *pmd_lock(struct mm_struct *mm, pmd_t *pmd)
3118
3123
3119
3124
static inline bool pagetable_pmd_ctor (struct ptdesc * ptdesc )
3120
3125
{
3121
- struct folio * folio = ptdesc_folio (ptdesc );
3122
-
3123
3126
if (!pmd_ptlock_init (ptdesc ))
3124
3127
return false;
3125
- __folio_set_pgtable (folio );
3126
3128
ptdesc_pmd_pts_init (ptdesc );
3127
- lruvec_stat_add_folio ( folio , NR_PAGETABLE );
3129
+ __pagetable_ctor ( ptdesc );
3128
3130
return true;
3129
3131
}
3130
3132
@@ -3149,18 +3151,12 @@ static inline spinlock_t *pud_lock(struct mm_struct *mm, pud_t *pud)
3149
3151
3150
3152
static inline void pagetable_pud_ctor (struct ptdesc * ptdesc )
3151
3153
{
3152
- struct folio * folio = ptdesc_folio (ptdesc );
3153
-
3154
- __folio_set_pgtable (folio );
3155
- lruvec_stat_add_folio (folio , NR_PAGETABLE );
3154
+ __pagetable_ctor (ptdesc );
3156
3155
}
3157
3156
3158
3157
static inline void pagetable_p4d_ctor (struct ptdesc * ptdesc )
3159
3158
{
3160
- struct folio * folio = ptdesc_folio (ptdesc );
3161
-
3162
- __folio_set_pgtable (folio );
3163
- lruvec_stat_add_folio (folio , NR_PAGETABLE );
3159
+ __pagetable_ctor (ptdesc );
3164
3160
}
3165
3161
3166
3162
extern void __init pagecache_init (void );
0 commit comments