|
@@ -3283,7 +3283,8 @@ static int file_map_prot_check(struct file *file, unsigned long prot, int shared
|
|
int rc = 0;
|
|
int rc = 0;
|
|
|
|
|
|
if (default_noexec &&
|
|
if (default_noexec &&
|
|
- (prot & PROT_EXEC) && (!file || (!shared && (prot & PROT_WRITE)))) {
|
|
|
|
|
|
+ (prot & PROT_EXEC) && (!file || IS_PRIVATE(file_inode(file)) ||
|
|
|
|
+ (!shared && (prot & PROT_WRITE)))) {
|
|
/*
|
|
/*
|
|
* We are making executable an anonymous mapping or a
|
|
* We are making executable an anonymous mapping or a
|
|
* private file mapping that will also be writable.
|
|
* private file mapping that will also be writable.
|