OSDN Git Service

slab: fix for_each_kmem_cache_node()
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 9 Oct 2014 22:26:20 +0000 (15:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 10 Oct 2014 02:25:51 +0000 (22:25 -0400)
Fix a bug (discovered with kmemcheck) in for_each_kmem_cache_node().  The
for loop reads the array "node" before verifying that the index is within
the range.  This results in kmemcheck warning.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reviewed-by: Pekka Enberg <penberg@kernel.org>
Acked-by: Christoph Lameter <cl@linux.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/slab.h

index 026e7c3..6599f20 100644 (file)
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -338,8 +338,8 @@ static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node)
  * a kmem_cache_node structure allocated (which is true for all online nodes)
  */
 #define for_each_kmem_cache_node(__s, __node, __n) \
-       for (__node = 0; __n = get_node(__s, __node), __node < nr_node_ids; __node++) \
-                if (__n)
+       for (__node = 0; __node < nr_node_ids; __node++) \
+                if ((__n = get_node(__s, __node)))
 
 #endif