lkml.org 
[lkml]   [2008]   [Feb]   [19]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateTue, 19 Feb 2008 18:45:28 -0800
FromYinghai Lu <>
Subject[PATCH] mm: fix dma_poor_create
dev_to_node could return node that without RAM. So check it before use it in kmalloc_node

Signed-off-by: Yinghai Lu <yinghai.lu@sun.com>

diff --git a/mm/dmapool.c b/mm/dmapool.c
index 34aaac4..6be5b5a 100644
--- a/mm/dmapool.c
+++ b/mm/dmapool.c
@@ -128,6 +128,7 @@ struct dma_pool *dma_pool_create(const char *name, struct device *dev,
 {
 	struct dma_pool *retval;
 	size_t allocation;
+	int node;
 
 	if (align == 0) {
 		align = 1;
@@ -152,7 +153,11 @@ struct dma_pool *dma_pool_create(const char *name, struct device *dev,
 		return NULL;
 	}
 
-	retval = kmalloc_node(sizeof(*retval), GFP_KERNEL, dev_to_node(dev));
+	node = dev_to_node(dev);
+	if (node == -1 || !node_online(node))
+		node = numa_node_id();
+
+	retval = kmalloc_node(sizeof(*retval), GFP_KERNEL, node);
 	if (!retval)
 		return retval;
 

\
 
 \ /
  Last update: 2008-02-20 03:39    [from the cache]
©2003-2008