]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 10 Aug 2009 18:11:40 +0000 (11:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 10 Aug 2009 18:11:40 +0000 (11:11 -0700)
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: Fix serialization in pit_expect_msb()

Documentation/ioctl/ioctl-number.txt
arch/mn10300/include/asm/pci.h
arch/powerpc/kernel/dma.c
drivers/pci/hotplug/sgi_hotplug.c
fs/proc/base.c
fs/proc/task_mmu.c
fs/proc/task_nommu.c
mm/mempool.c

index 7bb0d934b6d87ba2b2a26eb5dfa5dbda815d7264..dbea4f95fc8586224d85633f354e8945dc75bad3 100644 (file)
@@ -139,6 +139,7 @@ Code        Seq#    Include File            Comments
 'm'    all     linux/synclink.h        conflict!
 'm'    00-1F   net/irda/irmod.h        conflict!
 'n'    00-7F   linux/ncp_fs.h
+'n'    80-8F   linux/nilfs2_fs.h       NILFS2
 'n'    E0-FF   video/matrox.h          matroxfb
 'o'    00-1F   fs/ocfs2/ocfs2_fs.h     OCFS2
 'o'     00-03   include/mtd/ubi-user.h  conflict! (OCFS2 and UBI overlaps)
index 35d2ed6396f60dba7bb02777000a503b192c5a6c..19aecc90f7a43f7b572f1ce7054bff0d70faae89 100644 (file)
@@ -59,7 +59,6 @@ void pcibios_penalize_isa_irq(int irq);
 #include <linux/slab.h>
 #include <asm/scatterlist.h>
 #include <linux/string.h>
-#include <linux/mm.h>
 #include <asm/io.h>
 
 struct pci_dev;
index 20a60d661ba867a2491fb09e0c6d48f5b2576bce..ccf129d47d84d26ff702bf7c5c507a2f206ea5a5 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <linux/device.h>
 #include <linux/dma-mapping.h>
+#include <linux/lmb.h>
 #include <asm/bug.h>
 #include <asm/abs_addr.h>
 
@@ -90,11 +91,10 @@ static void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sg,
 static int dma_direct_dma_supported(struct device *dev, u64 mask)
 {
 #ifdef CONFIG_PPC64
-       /* Could be improved to check for memory though it better be
-        * done via some global so platforms can set the limit in case
+       /* Could be improved so platforms can set the limit in case
         * they have limited DMA windows
         */
-       return mask >= DMA_BIT_MASK(32);
+       return mask >= (lmb_end_of_DRAM() - 1);
 #else
        return 1;
 #endif
index a4494d78e7c2355eaeb27ede4098b65a7b1aaf8e..8aebe1e9d3d6ae21c664f998a4192194547b7afe 100644 (file)
@@ -90,11 +90,10 @@ static struct hotplug_slot_ops sn_hotplug_slot_ops = {
 
 static DEFINE_MUTEX(sn_hotplug_mutex);
 
-static ssize_t path_show (struct hotplug_slot *bss_hotplug_slot,
-                         char *buf)
+static ssize_t path_show(struct pci_slot *pci_slot, char *buf)
 {
        int retval = -ENOENT;
-       struct slot *slot = bss_hotplug_slot->private;
+       struct slot *slot = pci_slot->hotplug->private;
 
        if (!slot)
                return retval;
@@ -103,7 +102,7 @@ static ssize_t path_show (struct hotplug_slot *bss_hotplug_slot,
        return retval;
 }
 
-static struct hotplug_slot_attribute sn_slot_path_attr = __ATTR_RO(path);
+static struct pci_slot_attribute sn_slot_path_attr = __ATTR_RO(path);
 
 static int sn_pci_slot_valid(struct pci_bus *pci_bus, int device)
 {
index 3ce5ae9e3d2dabd36dce105ecb4545a4723c1202..175db258942f95a225ab7a16cd137b8a78fb02a1 100644 (file)
@@ -234,23 +234,20 @@ static int check_mem_permission(struct task_struct *task)
 
 struct mm_struct *mm_for_maps(struct task_struct *task)
 {
-       struct mm_struct *mm = get_task_mm(task);
-       if (!mm)
+       struct mm_struct *mm;
+
+       if (mutex_lock_killable(&task->cred_guard_mutex))
                return NULL;
-       down_read(&mm->mmap_sem);
-       task_lock(task);
-       if (task->mm != mm)
-               goto out;
-       if (task->mm != current->mm &&
-           __ptrace_may_access(task, PTRACE_MODE_READ) < 0)
-               goto out;
-       task_unlock(task);
+
+       mm = get_task_mm(task);
+       if (mm && mm != current->mm &&
+                       !ptrace_may_access(task, PTRACE_MODE_READ)) {
+               mmput(mm);
+               mm = NULL;
+       }
+       mutex_unlock(&task->cred_guard_mutex);
+
        return mm;
-out:
-       task_unlock(task);
-       up_read(&mm->mmap_sem);
-       mmput(mm);
-       return NULL;
 }
 
 static int proc_pid_cmdline(struct task_struct *task, char * buffer)
index 6f61b7cc32e0e09c39aea2dd31cf64e2bc049060..9bd8be1d235c2b420e348d25e801bdce88efd977 100644 (file)
@@ -119,6 +119,7 @@ static void *m_start(struct seq_file *m, loff_t *pos)
        mm = mm_for_maps(priv->task);
        if (!mm)
                return NULL;
+       down_read(&mm->mmap_sem);
 
        tail_vma = get_gate_vma(priv->task);
        priv->tail_vma = tail_vma;
index 64a72e2e76509545bf6c0d4d4e0788779baaab26..8f5c05d3dbd3e2aaa4abcd3fcc92af79e324daca 100644 (file)
@@ -189,6 +189,7 @@ static void *m_start(struct seq_file *m, loff_t *pos)
                priv->task = NULL;
                return NULL;
        }
+       down_read(&mm->mmap_sem);
 
        /* start from the Nth VMA */
        for (p = rb_first(&mm->mm_rb); p; p = rb_next(p))
index a46eb1b4bb661e12a6f752964ad2df190bc763aa..32e75d4005032620e8f9cb9161a8c66f025470bb 100644 (file)
@@ -303,14 +303,14 @@ EXPORT_SYMBOL(mempool_free_slab);
  */
 void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data)
 {
-       size_t size = (size_t)(long)pool_data;
+       size_t size = (size_t)pool_data;
        return kmalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kmalloc);
 
 void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data)
 {
-       size_t size = (size_t) pool_data;
+       size_t size = (size_t)pool_data;
        return kzalloc(size, gfp_mask);
 }
 EXPORT_SYMBOL(mempool_kzalloc);