@@ -123,7 +123,7 @@ static struct mempolicy default_policy = {
123
123
124
124
static struct mempolicy preferred_node_policy [MAX_NUMNODES ];
125
125
126
- static struct mempolicy * get_task_policy (struct task_struct * p )
126
+ struct mempolicy * get_task_policy (struct task_struct * p )
127
127
{
128
128
struct mempolicy * pol = p -> mempolicy ;
129
129
int node ;
@@ -1603,23 +1603,8 @@ COMPAT_SYSCALL_DEFINE6(mbind, compat_ulong_t, start, compat_ulong_t, len,
1603
1603
1604
1604
#endif
1605
1605
1606
- /*
1607
- * get_vma_policy(@task, @vma, @addr)
1608
- * @task: task for fallback if vma policy == default
1609
- * @vma: virtual memory area whose policy is sought
1610
- * @addr: address in @vma for shared policy lookup
1611
- *
1612
- * Returns effective policy for a VMA at specified address.
1613
- * Falls back to @task or system default policy, as necessary.
1614
- * Current or other task's task mempolicy and non-shared vma policies must be
1615
- * protected by task_lock(task) by the caller.
1616
- * Shared policies [those marked as MPOL_F_SHARED] require an extra reference
1617
- * count--added by the get_policy() vm_op, as appropriate--to protect against
1618
- * freeing by another task. It is the caller's responsibility to free the
1619
- * extra reference for shared policies.
1620
- */
1621
- struct mempolicy * get_vma_policy (struct task_struct * task ,
1622
- struct vm_area_struct * vma , unsigned long addr )
1606
+ struct mempolicy * __get_vma_policy (struct vm_area_struct * vma ,
1607
+ unsigned long addr )
1623
1608
{
1624
1609
struct mempolicy * pol = NULL ;
1625
1610
@@ -1640,6 +1625,29 @@ struct mempolicy *get_vma_policy(struct task_struct *task,
1640
1625
}
1641
1626
}
1642
1627
1628
+ return pol ;
1629
+ }
1630
+
1631
+ /*
1632
+ * get_vma_policy(@task, @vma, @addr)
1633
+ * @task: task for fallback if vma policy == default
1634
+ * @vma: virtual memory area whose policy is sought
1635
+ * @addr: address in @vma for shared policy lookup
1636
+ *
1637
+ * Returns effective policy for a VMA at specified address.
1638
+ * Falls back to @task or system default policy, as necessary.
1639
+ * Current or other task's task mempolicy and non-shared vma policies must be
1640
+ * protected by task_lock(task) by the caller.
1641
+ * Shared policies [those marked as MPOL_F_SHARED] require an extra reference
1642
+ * count--added by the get_policy() vm_op, as appropriate--to protect against
1643
+ * freeing by another task. It is the caller's responsibility to free the
1644
+ * extra reference for shared policies.
1645
+ */
1646
+ struct mempolicy * get_vma_policy (struct task_struct * task ,
1647
+ struct vm_area_struct * vma , unsigned long addr )
1648
+ {
1649
+ struct mempolicy * pol = __get_vma_policy (vma , addr );
1650
+
1643
1651
if (!pol )
1644
1652
pol = get_task_policy (task );
1645
1653
0 commit comments