aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/mempolicy.h7
-rw-r--r--mm/mempolicy.c1
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}