@@ -1727,7 +1727,7 @@ static int __change_page_attr_set_clr(struct cpa_data *cpa, int checkalias)
1727
1727
if (ret )
1728
1728
goto out ;
1729
1729
1730
- if (checkalias ) {
1730
+ if (checkalias && !( cpa -> flags & CPA_NO_CHECK_ALIAS ) ) {
1731
1731
ret = cpa_process_alias (cpa );
1732
1732
if (ret )
1733
1733
goto out ;
@@ -1801,18 +1801,12 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
1801
1801
cpa .numpages = numpages ;
1802
1802
cpa .mask_set = mask_set ;
1803
1803
cpa .mask_clr = mask_clr ;
1804
- cpa .flags = 0 ;
1804
+ cpa .flags = in_flag ;
1805
1805
cpa .curpage = 0 ;
1806
1806
cpa .force_split = force_split ;
1807
1807
1808
- if (in_flag & (CPA_ARRAY | CPA_PAGES_ARRAY ))
1809
- cpa .flags |= in_flag ;
1810
-
1811
1808
/* No alias checking for _NX bit modifications */
1812
1809
checkalias = (pgprot_val (mask_set ) | pgprot_val (mask_clr )) != _PAGE_NX ;
1813
- /* Has caller explicitly disabled alias checking? */
1814
- if (in_flag & CPA_NO_CHECK_ALIAS )
1815
- checkalias = 0 ;
1816
1810
1817
1811
ret = __change_page_attr_set_clr (& cpa , checkalias );
1818
1812
@@ -2067,11 +2061,9 @@ int set_memory_np(unsigned long addr, int numpages)
2067
2061
2068
2062
int set_memory_np_noalias (unsigned long addr , int numpages )
2069
2063
{
2070
- int cpa_flags = CPA_NO_CHECK_ALIAS ;
2071
-
2072
2064
return change_page_attr_set_clr (& addr , numpages , __pgprot (0 ),
2073
2065
__pgprot (_PAGE_PRESENT ), 0 ,
2074
- cpa_flags , NULL );
2066
+ CPA_NO_CHECK_ALIAS , NULL );
2075
2067
}
2076
2068
2077
2069
int set_memory_4k (unsigned long addr , int numpages )
@@ -2288,15 +2280,15 @@ static int __set_pages_p(struct page *page, int numpages)
2288
2280
.numpages = numpages ,
2289
2281
.mask_set = __pgprot (_PAGE_PRESENT | _PAGE_RW ),
2290
2282
.mask_clr = __pgprot (0 ),
2291
- .flags = 0 };
2283
+ .flags = CPA_NO_CHECK_ALIAS };
2292
2284
2293
2285
/*
2294
2286
* No alias checking needed for setting present flag. otherwise,
2295
2287
* we may need to break large pages for 64-bit kernel text
2296
2288
* mappings (this adds to complexity if we want to do this from
2297
2289
* atomic context especially). Let's keep it simple!
2298
2290
*/
2299
- return __change_page_attr_set_clr (& cpa , 0 );
2291
+ return __change_page_attr_set_clr (& cpa , 1 );
2300
2292
}
2301
2293
2302
2294
static int __set_pages_np (struct page * page , int numpages )
@@ -2307,15 +2299,15 @@ static int __set_pages_np(struct page *page, int numpages)
2307
2299
.numpages = numpages ,
2308
2300
.mask_set = __pgprot (0 ),
2309
2301
.mask_clr = __pgprot (_PAGE_PRESENT | _PAGE_RW ),
2310
- .flags = 0 };
2302
+ .flags = CPA_NO_CHECK_ALIAS };
2311
2303
2312
2304
/*
2313
2305
* No alias checking needed for setting not present flag. otherwise,
2314
2306
* we may need to break large pages for 64-bit kernel text
2315
2307
* mappings (this adds to complexity if we want to do this from
2316
2308
* atomic context especially). Let's keep it simple!
2317
2309
*/
2318
- return __change_page_attr_set_clr (& cpa , 0 );
2310
+ return __change_page_attr_set_clr (& cpa , 1 );
2319
2311
}
2320
2312
2321
2313
int set_direct_map_invalid_noflush (struct page * page )
@@ -2386,7 +2378,7 @@ int __init kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address,
2386
2378
.numpages = numpages ,
2387
2379
.mask_set = __pgprot (0 ),
2388
2380
.mask_clr = __pgprot (~page_flags & (_PAGE_NX |_PAGE_RW )),
2389
- .flags = 0 ,
2381
+ .flags = CPA_NO_CHECK_ALIAS ,
2390
2382
};
2391
2383
2392
2384
WARN_ONCE (num_online_cpus () > 1 , "Don't call after initializing SMP" );
@@ -2399,7 +2391,7 @@ int __init kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address,
2399
2391
2400
2392
cpa .mask_set = __pgprot (_PAGE_PRESENT | page_flags );
2401
2393
2402
- retval = __change_page_attr_set_clr (& cpa , 0 );
2394
+ retval = __change_page_attr_set_clr (& cpa , 1 );
2403
2395
__flush_tlb_all ();
2404
2396
2405
2397
out :
@@ -2429,12 +2421,12 @@ int __init kernel_unmap_pages_in_pgd(pgd_t *pgd, unsigned long address,
2429
2421
.numpages = numpages ,
2430
2422
.mask_set = __pgprot (0 ),
2431
2423
.mask_clr = __pgprot (_PAGE_PRESENT | _PAGE_RW ),
2432
- .flags = 0 ,
2424
+ .flags = CPA_NO_CHECK_ALIAS ,
2433
2425
};
2434
2426
2435
2427
WARN_ONCE (num_online_cpus () > 1 , "Don't call after initializing SMP" );
2436
2428
2437
- retval = __change_page_attr_set_clr (& cpa , 0 );
2429
+ retval = __change_page_attr_set_clr (& cpa , 1 );
2438
2430
__flush_tlb_all ();
2439
2431
2440
2432
return retval ;
0 commit comments