Skip to content
  1. Jul 15, 2013
    • Steven Rostedt's avatar
      slub: Check for page NULL before doing the node_match check · c25f195e
      Steven Rostedt authored
      
      
      In the -rt kernel (mrg), we hit the following dump:
      
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: [<ffffffff811573f1>] kmem_cache_alloc_node+0x51/0x180
      PGD a2d39067 PUD b1641067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP
      Modules linked in: sunrpc cpufreq_ondemand ipv6 tg3 joydev sg serio_raw pcspkr k8temp amd64_edac_mod edac_core i2c_piix4 e100 mii shpchp ext4 mbcache jbd2 sd_mod crc_t10dif sr_mod cdrom sata_svw ata_generic pata_acpi pata_serverworks radeon ttm drm_kms_helper drm hwmon i2c_algo_bit i2c_core dm_mirror dm_region_hash dm_log dm_mod
      CPU 3
      Pid: 20878, comm: hackbench Not tainted 3.6.11-rt25.14.el6rt.x86_64 #1 empty empty/Tyan Transport GT24-B3992
      RIP: 0010:[<ffffffff811573f1>]  [<ffffffff811573f1>] kmem_cache_alloc_node+0x51/0x180
      RSP: 0018:ffff8800a9b17d70  EFLAGS: 00010213
      RAX: 0000000000000000 RBX: 0000000001200011 RCX: ffff8800a06d8000
      RDX: 0000000004d92a03 RSI: 00000000000000d0 RDI: ffff88013b805500
      RBP: ffff8800a9b17dc0 R08: ffff88023fd14d10 R09: ffffffff81041cbd
      R10: 00007f4e3f06e9d0 R11: 0000000000000246 R12: ffff88013b805500
      R13: ffff8801ff46af40 R14: 0000000000000001 R15: 0000000000000000
      FS:  00007f4e3f06e700(0000) GS:ffff88023fd00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000000 CR3: 00000000a2d3a000 CR4: 00000000000007e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process hackbench (pid: 20878, threadinfo ffff8800a9b16000, task ffff8800a06d8000)
      Stack:
       ffff8800a9b17da0 ffffffff81202e08 ffff8800a9b17de0 000000d001200011
       0000000001200011 0000000001200011 0000000000000000 0000000000000000
       00007f4e3f06e9d0 0000000000000000 ffff8800a9b17e60 ffffffff81041cbd
      Call Trace:
       [<ffffffff81202e08>] ? current_has_perm+0x68/0x80
       [<ffffffff81041cbd>] copy_process+0xdd/0x15b0
       [<ffffffff810a2125>] ? rt_up_read+0x25/0x30
       [<ffffffff8104369a>] do_fork+0x5a/0x360
       [<ffffffff8107c66b>] ? migrate_enable+0xeb/0x220
       [<ffffffff8100b068>] sys_clone+0x28/0x30
       [<ffffffff81527423>] stub_clone+0x13/0x20
       [<ffffffff81527152>] ? system_call_fastpath+0x16/0x1b
      Code: 89 fc 89 75 cc 41 89 d6 4d 8b 04 24 65 4c 03 04 25 48 ae 00 00 49 8b 50 08 4d 8b 28 49 8b 40 10 4d 85 ed 74 12 41 83 fe ff 74 27 <48> 8b 00 48 c1 e8 3a 41 39 c6 74 1b 8b 75 cc 4c 89 c9 44 89 f2
      RIP  [<ffffffff811573f1>] kmem_cache_alloc_node+0x51/0x180
       RSP <ffff8800a9b17d70>
      CR2: 0000000000000000
      ---[ end trace 0000000000000002 ]---
      
      Now, this uses SLUB pretty much unmodified, but as it is the -rt kernel
      with CONFIG_PREEMPT_RT set, spinlocks are mutexes, although they do
      disable migration. But the SLUB code is relatively lockless, and the
      spin_locks there are raw_spin_locks (not converted to mutexes), thus I
      believe this bug can happen in mainline without -rt features. The -rt
      patch is just good at triggering mainline bugs ;-)
      
      Anyway, looking at where this crashed, it seems that the page variable
      can be NULL when passed to the node_match() function (which does not
      check if it is NULL). When this happens we get the above panic.
      
      As page is only used in slab_alloc() to check if the node matches, if
      it's NULL I'm assuming that we can say it doesn't and call the
      __slab_alloc() code. Is this a correct assumption?
      
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c25f195e
  2. Jul 08, 2013
  3. Jul 07, 2013
  4. Jun 18, 2013
  5. Jun 08, 2013
  6. May 07, 2013
  7. May 06, 2013
  8. May 01, 2013
  9. Apr 05, 2013
  10. Apr 02, 2013
  11. Feb 28, 2013
  12. Feb 07, 2013
    • Joonsoo Kim's avatar
      mm/sl[au]b: correct allocation type check in kmalloc_slab() · b1e05416
      Joonsoo Kim authored
      
      
      commit "slab: Common Kmalloc cache determination" made mistake
      in kmalloc_slab(). SLAB_CACHE_DMA is for kmem_cache creation,
      not for allocation. For allocation, we should use GFP_XXX to identify
      type of allocation. So, change SLAB_CACHE_DMA to GFP_DMA.
      
      Acked-by: default avatarChristoph Lameter <cl@linux.com>
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarJoonsoo Kim <js1304@gmail.com>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      b1e05416
    • Christoph Lameter's avatar
      slab: Fixup CONFIG_PAGE_ALLOC/DEBUG_SLAB_LEAK sections · db845067
      Christoph Lameter authored
      
      
      Variables were not properly converted and the conversion caused
      a naming conflict.
      
      Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      db845067
    • Christoph Lameter's avatar
      slab: Handle ARCH_DMA_MINALIGN correctly · c601fd69
      Christoph Lameter authored
      James Hogan hit boot problems in next-20130204 on Meta:
      
        META213-Thread0 DSP [LogF] kobject (4fc03980): tried to init an initialized object, something is seriously wrong.
        META213-Thread0 DSP [LogF]
        META213-Thread0 DSP [LogF] Call trace:
        META213-Thread0 DSP [LogF] [<4000888c>] _show_stack+0x68/0x7c
        META213-Thread0 DSP [LogF] [<400088b4>] _dump_stack+0x14/0x28
        META213-Thread0 DSP [LogF] [<40103794>] _kobject_init+0x58/0x9c
        META213-Thread0 DSP [LogF] [<40103810>] _kobject_create+0x38/0x64
        META213-Thread0 DSP [LogF] [<40103eac>] _kobject_create_and_add+0x14/0x8c
        META213-Thread0 DSP [LogF] [<40190ac4>] _mnt_init+0xd8/0x220
        META213-Thread0 DSP [LogF] [<40190508>] _vfs_caches_init+0xb0/0x160
        META213-Thread0 DSP [LogF] [<401851f4>] _start_kernel+0x274/0x340
        META213-Thread0 DSP [LogF] [<40188424>] _metag_start_kernel+0x58/0x6c
        META213-Thread0 DSP [LogF] [<40000044>] __start+0x44/0x48
        META213-Thread0 DSP [LogF]
        META213-Thread0 DSP [LogF] devtmpfs: initialized
        META213-Thread0 DSP [LogF] L2 Cache: Not present
        META213-Thread0 DSP [LogF] BUG: failure at fs/sysfs/dir.c:736/sysfs_read_ns_type()!
        META213-Thread0 DSP [LogF] Kernel panic - not syncing: BUG!
        META213-Thread0 DSP [Thread Exit] Thread has exited - return code = 4294967295
      
      And bisected the problem to commit 95a05b42
      
       ("slab: Common constants for
      kmalloc boundaries").
      
      As it turns out, a fixed KMALLOC_SHIFT_LOW does not work for arches with
      higher alignment requirements.
      
      Determine KMALLOC_SHIFT_LOW from ARCH_DMA_MINALIGN instead.
      
      Reported-and-tested-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Signed-off-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      c601fd69
  13. Feb 01, 2013
  14. Dec 22, 2012