Merge branch 'for-ingo' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg...
authorIngo Molnar <mingo@elte.hu>
Fri, 20 Feb 2009 11:15:30 +0000 (12:15 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 20 Feb 2009 11:15:30 +0000 (12:15 +0100)
Conflicts:
mm/slub.c

1  2 
include/linux/slub_def.h
mm/slub.c

@@@ -228,10 -224,8 +241,10 @@@ static __always_inline void *kmalloc_la
  
  static __always_inline void *kmalloc(size_t size, gfp_t flags)
  {
 +      void *ret;
 +
        if (__builtin_constant_p(size)) {
-               if (size > PAGE_SIZE)
+               if (size > SLUB_MAX_SIZE)
                        return kmalloc_large(size, flags);
  
                if (!(flags & SLUB_DMA)) {
  void *__kmalloc_node(size_t size, gfp_t flags, int node);
  void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node);
  
 +#ifdef CONFIG_KMEMTRACE
 +extern void *kmem_cache_alloc_node_notrace(struct kmem_cache *s,
 +                                         gfp_t gfpflags,
 +                                         int node);
 +#else
 +static __always_inline void *
 +kmem_cache_alloc_node_notrace(struct kmem_cache *s,
 +                            gfp_t gfpflags,
 +                            int node)
 +{
 +      return kmem_cache_alloc_node(s, gfpflags, node);
 +}
 +#endif
 +
  static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
  {
 +      void *ret;
 +
        if (__builtin_constant_p(size) &&
-               size <= PAGE_SIZE && !(flags & SLUB_DMA)) {
+               size <= SLUB_MAX_SIZE && !(flags & SLUB_DMA)) {
                        struct kmem_cache *s = kmalloc_slab(size);
  
                if (!s)
diff --cc mm/slub.c
+++ b/mm/slub.c
@@@ -2688,9 -2657,8 +2688,9 @@@ static struct kmem_cache *get_slab(size
  void *__kmalloc(size_t size, gfp_t flags)
  {
        struct kmem_cache *s;
 +      void *ret;
  
-       if (unlikely(size > PAGE_SIZE))
+       if (unlikely(size > SLUB_MAX_SIZE))
                return kmalloc_large(size, flags);
  
        s = get_slab(size, flags);
@@@ -2722,18 -2685,9 +2722,18 @@@ static void *kmalloc_large_node(size_t 
  void *__kmalloc_node(size_t size, gfp_t flags, int node)
  {
        struct kmem_cache *s;
 +      void *ret;
  
-       if (unlikely(size > PAGE_SIZE)) {
 -      if (unlikely(size > SLUB_MAX_SIZE))
 -              return kmalloc_large_node(size, flags, node);
++      if (unlikely(size > SLUB_MAX_SIZE)) {
 +              ret = kmalloc_large_node(size, flags, node);
 +
 +              kmemtrace_mark_alloc_node(KMEMTRACE_TYPE_KMALLOC,
 +                                        _RET_IP_, ret,
 +                                        size, PAGE_SIZE << get_order(size),
 +                                        flags, node);
 +
 +              return ret;
 +      }
  
        s = get_slab(size, flags);
  
@@@ -3275,9 -3221,8 +3275,9 @@@ static struct notifier_block __cpuinitd
  void *__kmalloc_track_caller(size_t size, gfp_t gfpflags, unsigned long caller)
  {
        struct kmem_cache *s;
 +      void *ret;
  
-       if (unlikely(size > PAGE_SIZE))
+       if (unlikely(size > SLUB_MAX_SIZE))
                return kmalloc_large(size, gfpflags);
  
        s = get_slab(size, gfpflags);
@@@ -3298,9 -3237,8 +3298,9 @@@ void *__kmalloc_node_track_caller(size_
                                        int node, unsigned long caller)
  {
        struct kmem_cache *s;
 +      void *ret;
  
-       if (unlikely(size > PAGE_SIZE))
+       if (unlikely(size > SLUB_MAX_SIZE))
                return kmalloc_large_node(size, gfpflags, node);
  
        s = get_slab(size, gfpflags);