Commit:     74e27e44b0407fb1f6e8d1f7b7818f108463c4b8
Parent:     53a9bf4267b8b1f958dbeb7c8c1ef21c82229b71
Author:     Lee Schermerhorn <[EMAIL PROTECTED]>
AuthorDate: Wed Nov 21 15:07:05 2007 -0800
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Fri Feb 1 15:04:20 2008 -0800

    PCI: Mem Policy: fix mempolicy usage in pci driver
    In an attempt to ensure memory allocation from the local node, the pci
    driver temporarily replaces the current task's memory policy with the
    system default policy.  Trying to be a good citizen, the driver then call's
    mpol_get() on the new policy.  When it's finished probing, it undoes the
    '_get by calling mpol_free() [on the system default policy] and then
    restores the current task's saved mempolicy.
    A couple of issues here:
    1) it's never necessary to set a task's mempolicy to the
       system default policy in order to get system default
       allocation behavior.  Simply set the current task's
       mempolicy to NULL and allocations will fall back to
       system default policy.
    2) we should never [need to] call mpol_free() on the system
       default policy.  [I plan on trapping this with a VM_BUG_ON()
       in a subsequent patch.]
    This patch removes the calls to mpol_get() and mpol_free()
    and uses NULL for the temporary task mempolicy to effect
    default allocation behavior.
    Signed-off-by: Lee Schermerhorn <[EMAIL PROTECTED]>
    Acked-by: Christoph Lameter <[EMAIL PROTECTED]>
    Acked-by: Mel Gorman <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
 drivers/pci/pci-driver.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index c4fa35d..e571c72 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -186,13 +186,11 @@ static int pci_call_probe(struct pci_driver *drv, struct 
pci_dev *dev,
            set_cpus_allowed(current, node_to_cpumask(node));
        /* And set default memory allocation policy */
        oldpol = current->mempolicy;
-       current->mempolicy = &default_policy;
-       mpol_get(current->mempolicy);
+       current->mempolicy = NULL;      /* fall back to system default policy */
        error = drv->probe(dev, id);
        set_cpus_allowed(current, oldmask);
-       mpol_free(current->mempolicy);
        current->mempolicy = oldpol;
        return error;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to