git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[Bluetooth] Disconnect HID interrupt channel first
[pandora-kernel.git]
/
mm
/
mempolicy.c
diff --git
a/mm/mempolicy.c
b/mm/mempolicy.c
index
7da4142
..
617fb31
100644
(file)
--- a/
mm/mempolicy.c
+++ b/
mm/mempolicy.c
@@
-487,7
+487,7
@@
static void get_zonemask(struct mempolicy *p, nodemask_t *nodes)
switch (p->policy) {
case MPOL_BIND:
for (i = 0; p->v.zonelist->zones[i]; i++)
switch (p->policy) {
case MPOL_BIND:
for (i = 0; p->v.zonelist->zones[i]; i++)
- node_set(
p->v.zonelist->zones[i]->zone_pgdat->node_id
,
+ node_set(
zone_to_nid(p->v.zonelist->zones[i])
,
*nodes);
break;
case MPOL_DEFAULT:
*nodes);
break;
case MPOL_DEFAULT:
@@
-727,7
+727,7
@@
int do_migrate_pages(struct mm_struct *mm,
return -ENOSYS;
}
return -ENOSYS;
}
-static struct page *new_vma_page(struct page *page, unsigned long private)
+static struct page *new_vma_page(struct page *page, unsigned long private
, int **x
)
{
return NULL;
}
{
return NULL;
}
@@
-1101,7
+1101,7
@@
static struct zonelist *zonelist_policy(gfp_t gfp, struct mempolicy *policy)
case MPOL_BIND:
/* Lower zones don't get a policy applied */
/* Careful: current->mems_allowed might have moved */
case MPOL_BIND:
/* Lower zones don't get a policy applied */
/* Careful: current->mems_allowed might have moved */
- if (
highest
_zone(gfp) >= policy_zone)
+ if (
gfp
_zone(gfp) >= policy_zone)
if (cpuset_zonelist_valid_mems_allowed(policy->v.zonelist))
return policy->v.zonelist;
/*FALL THROUGH*/
if (cpuset_zonelist_valid_mems_allowed(policy->v.zonelist))
return policy->v.zonelist;
/*FALL THROUGH*/
@@
-1136,7
+1136,9
@@
static unsigned interleave_nodes(struct mempolicy *policy)
*/
unsigned slab_node(struct mempolicy *policy)
{
*/
unsigned slab_node(struct mempolicy *policy)
{
- switch (policy->policy) {
+ int pol = policy ? policy->policy : MPOL_DEFAULT;
+
+ switch (pol) {
case MPOL_INTERLEAVE:
return interleave_nodes(policy);
case MPOL_INTERLEAVE:
return interleave_nodes(policy);
@@
-1145,7
+1147,7
@@
unsigned slab_node(struct mempolicy *policy)
* Follow bind policy behavior and start allocation at the
* first node.
*/
* Follow bind policy behavior and start allocation at the
* first node.
*/
- return
policy->v.zonelist->zones[0]->zone_pgdat->node_id
;
+ return
zone_to_nid(policy->v.zonelist->zones[0])
;
case MPOL_PREFERRED:
if (policy->v.preferred_node >= 0)
case MPOL_PREFERRED:
if (policy->v.preferred_node >= 0)
@@
-1290,7
+1292,7
@@
struct page *alloc_pages_current(gfp_t gfp, unsigned order)
if ((gfp & __GFP_WAIT) && !in_interrupt())
cpuset_update_task_memory_state();
if ((gfp & __GFP_WAIT) && !in_interrupt())
cpuset_update_task_memory_state();
- if (!pol || in_interrupt())
+ if (!pol || in_interrupt()
|| (gfp & __GFP_THISNODE)
)
pol = &default_policy;
if (pol->policy == MPOL_INTERLEAVE)
return alloc_page_interleave(gfp, order, interleave_nodes(pol));
pol = &default_policy;
if (pol->policy == MPOL_INTERLEAVE)
return alloc_page_interleave(gfp, order, interleave_nodes(pol));
@@
-1322,12
+1324,11
@@
struct mempolicy *__mpol_copy(struct mempolicy *old)
atomic_set(&new->refcnt, 1);
if (new->policy == MPOL_BIND) {
int sz = ksize(old->v.zonelist);
atomic_set(&new->refcnt, 1);
if (new->policy == MPOL_BIND) {
int sz = ksize(old->v.zonelist);
- new->v.zonelist = km
alloc(
sz, SLAB_KERNEL);
+ new->v.zonelist = km
emdup(old->v.zonelist,
sz, SLAB_KERNEL);
if (!new->v.zonelist) {
kmem_cache_free(policy_cache, new);
return ERR_PTR(-ENOMEM);
}
if (!new->v.zonelist) {
kmem_cache_free(policy_cache, new);
return ERR_PTR(-ENOMEM);
}
- memcpy(new->v.zonelist, old->v.zonelist, sz);
}
return new;
}
}
return new;
}
@@
-1649,7
+1650,7
@@
void mpol_rebind_policy(struct mempolicy *pol, const nodemask_t *newmask)
nodes_clear(nodes);
for (z = pol->v.zonelist->zones; *z; z++)
nodes_clear(nodes);
for (z = pol->v.zonelist->zones; *z; z++)
- node_set(
(*z)->zone_pgdat->node_id
, nodes);
+ node_set(
zone_to_nid(*z)
, nodes);
nodes_remap(tmp, nodes, *mpolmask, *newmask);
nodes = tmp;
nodes_remap(tmp, nodes, *mpolmask, *newmask);
nodes = tmp;