diff options
-rw-r--r-- | include/linux/mempolicy.h | 7 | ||||
-rw-r--r-- | mm/mempolicy.c | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index 9080fab1426d..017def89e568 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
@@ -44,6 +44,13 @@ enum { | |||
44 | #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ | 44 | #define MPOL_MF_MOVE_ALL (1<<2) /* Move every page to conform to mapping */ |
45 | #define MPOL_MF_INTERNAL (1<<3) /* Internal flags start here */ | 45 | #define MPOL_MF_INTERNAL (1<<3) /* Internal flags start here */ |
46 | 46 | ||
47 | /* | ||
48 | * Internal flags that share the struct mempolicy flags word with | ||
49 | * "mode flags". These flags are allocated from bit 0 up, as they | ||
50 | * are never OR'ed into the mode in mempolicy API arguments. | ||
51 | */ | ||
52 | #define MPOL_F_SHARED (1 << 0) /* identify shared policies */ | ||
53 | |||
47 | #ifdef __KERNEL__ | 54 | #ifdef __KERNEL__ |
48 | 55 | ||
49 | #include <linux/mmzone.h> | 56 | #include <linux/mmzone.h> |
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 5e7eea2dc8b4..78b18a60b9b2 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c | |||
@@ -1750,6 +1750,7 @@ static struct sp_node *sp_alloc(unsigned long start, unsigned long end, | |||
1750 | n->start = start; | 1750 | n->start = start; |
1751 | n->end = end; | 1751 | n->end = end; |
1752 | mpol_get(pol); | 1752 | mpol_get(pol); |
1753 | pol->flags |= MPOL_F_SHARED; /* for unref */ | ||
1753 | n->policy = pol; | 1754 | n->policy = pol; |
1754 | return n; | 1755 | return n; |
1755 | } | 1756 | } |