Skip to content

Commit 583140a

Browse files
author
H. Peter Anvin
committed
x86, pageattr: Make set_memory_(x|nx) aware of NX support
Make set_memory_x/set_memory_nx directly aware of if NX is supported in the system or not, rather than requiring that every caller assesses that support independently. Signed-off-by: H. Peter Anvin <[email protected]> Cc: Huang Ying <[email protected]> Cc: Venkatesh Pallipadi <[email protected]> Cc: Suresh Siddha <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Tim Starling <[email protected]> Cc: Hannes Eder <[email protected]> LKML-Reference: <[email protected]> Acked-by: Kees Cook <[email protected]>
1 parent a7c4c0d commit 583140a

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

arch/x86/kernel/machine_kexec_32.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,7 @@ int machine_kexec_prepare(struct kimage *image)
157157
{
158158
int error;
159159

160-
if (nx_enabled)
161-
set_pages_x(image->control_code_page, 1);
160+
set_pages_x(image->control_code_page, 1);
162161
error = machine_kexec_alloc_page_tables(image);
163162
if (error)
164163
return error;
@@ -172,8 +171,7 @@ int machine_kexec_prepare(struct kimage *image)
172171
*/
173172
void machine_kexec_cleanup(struct kimage *image)
174173
{
175-
if (nx_enabled)
176-
set_pages_nx(image->control_code_page, 1);
174+
set_pages_nx(image->control_code_page, 1);
177175
machine_kexec_free_page_tables(image);
178176
}
179177

arch/x86/mm/pageattr.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,12 +1085,18 @@ EXPORT_SYMBOL(set_memory_array_wb);
10851085

10861086
int set_memory_x(unsigned long addr, int numpages)
10871087
{
1088+
if (!(__supported_pte_mask & _PAGE_NX))
1089+
return 0;
1090+
10881091
return change_page_attr_clear(&addr, numpages, __pgprot(_PAGE_NX), 0);
10891092
}
10901093
EXPORT_SYMBOL(set_memory_x);
10911094

10921095
int set_memory_nx(unsigned long addr, int numpages)
10931096
{
1097+
if (!(__supported_pte_mask & _PAGE_NX))
1098+
return 0;
1099+
10941100
return change_page_attr_set(&addr, numpages, __pgprot(_PAGE_NX), 0);
10951101
}
10961102
EXPORT_SYMBOL(set_memory_nx);

0 commit comments

Comments
 (0)