Skip to content
Snippets Groups Projects
Select Git revision
  • 161b6ae0e067e421b20bb35caf66bdb405c929ac
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

debugobjects.c

Blame
    • Marcin Slusarz's avatar
      161b6ae0
      debugobjects: Fix boot crash when kmemleak and debugobjects enabled · 161b6ae0
      Marcin Slusarz authored
      
      Order of initialization look like this:
      ...
      debugobjects
      kmemleak
      ...(lots of other subsystems)...
      workqueues (through early initcall)
      ...
      
      debugobjects use schedule_work for batch freeing of its data and kmemleak
      heavily use debugobjects, so when it comes to freeing and workqueues were
      not initialized yet, kernel crashes:
      
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: [<ffffffff810854d1>] __queue_work+0x29/0x41a
       [<ffffffff81085910>] queue_work_on+0x16/0x1d
       [<ffffffff81085abc>] queue_work+0x29/0x55
       [<ffffffff81085afb>] schedule_work+0x13/0x15
       [<ffffffff81242de1>] free_object+0x90/0x95
       [<ffffffff81242f6d>] debug_check_no_obj_freed+0x187/0x1d3
       [<ffffffff814b6504>] ? _raw_spin_unlock_irqrestore+0x30/0x4d
       [<ffffffff8110bd14>] ? free_object_rcu+0x68/0x6d
       [<ffffffff8110890c>] kmem_cache_free+0x64/0x12c
       [<ffffffff8110bd14>] free_object_rcu+0x68/0x6d
       [<ffffffff810b58bc>] __rcu_process_callbacks+0x1b6/0x2d9
      ...
      
      because system_wq is NULL.
      
      Fix it by checking if workqueues susbystem was initialized before using.
      
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Dipankar Sarma <dipankar@in.ibm.com>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: stable@kernel.org
      Link: http://lkml.kernel.org/r/20110528112342.GA3068@joi.lan
      
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      161b6ae0
      History
      debugobjects: Fix boot crash when kmemleak and debugobjects enabled
      Marcin Slusarz authored
      
      Order of initialization look like this:
      ...
      debugobjects
      kmemleak
      ...(lots of other subsystems)...
      workqueues (through early initcall)
      ...
      
      debugobjects use schedule_work for batch freeing of its data and kmemleak
      heavily use debugobjects, so when it comes to freeing and workqueues were
      not initialized yet, kernel crashes:
      
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: [<ffffffff810854d1>] __queue_work+0x29/0x41a
       [<ffffffff81085910>] queue_work_on+0x16/0x1d
       [<ffffffff81085abc>] queue_work+0x29/0x55
       [<ffffffff81085afb>] schedule_work+0x13/0x15
       [<ffffffff81242de1>] free_object+0x90/0x95
       [<ffffffff81242f6d>] debug_check_no_obj_freed+0x187/0x1d3
       [<ffffffff814b6504>] ? _raw_spin_unlock_irqrestore+0x30/0x4d
       [<ffffffff8110bd14>] ? free_object_rcu+0x68/0x6d
       [<ffffffff8110890c>] kmem_cache_free+0x64/0x12c
       [<ffffffff8110bd14>] free_object_rcu+0x68/0x6d
       [<ffffffff810b58bc>] __rcu_process_callbacks+0x1b6/0x2d9
      ...
      
      because system_wq is NULL.
      
      Fix it by checking if workqueues susbystem was initialized before using.
      
      Signed-off-by: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Dipankar Sarma <dipankar@in.ibm.com>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: stable@kernel.org
      Link: http://lkml.kernel.org/r/20110528112342.GA3068@joi.lan
      
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    core.c 205.69 KiB
    /*
     *  kernel/sched/core.c
     *
     *  Kernel scheduler and related syscalls
     *
     *  Copyright (C) 1991-2002  Linus Torvalds
     *
     *  1996-12-23  Modified by Dave Grothe to fix bugs in semaphores and
     *		make semaphores SMP safe
     *  1998-11-19	Implemented schedule_timeout() and related stuff
     *		by Andrea Arcangeli
     *  2002-01-04	New ultra-scalable O(1) scheduler by Ingo Molnar:
     *		hybrid priority-list and round-robin design with
     *		an array-switch method of distributing timeslices
     *		and per-CPU runqueues.  Cleanups and useful suggestions
     *		by Davide Libenzi, preemptible kernel bits by Robert Love.
     *  2003-09-03	Interactivity tuning by Con Kolivas.
     *  2004-04-02	Scheduler domains code by Nick Piggin
     *  2007-04-15  Work begun on replacing all interactivity tuning with a
     *              fair scheduling design by Con Kolivas.
     *  2007-05-05  Load balancing (smp-nice) and other improvements
     *              by Peter Williams
     *  2007-05-06  Interactivity improvements to CFS by Mike Galbraith
     *  2007-07-01  Group scheduling enhancements by Srivatsa Vaddagiri
     *  2007-11-29  RT balancing improvements by Steven Rostedt, Gregory Haskins,
     *              Thomas Gleixner, Mike Kravetz
     */
    
    #include <linux/kasan.h>
    #include <linux/mm.h>
    #include <linux/module.h>
    #include <linux/nmi.h>
    #include <linux/init.h>
    #include <linux/uaccess.h>
    #include <linux/highmem.h>
    #include <asm/mmu_context.h>
    #include <linux/interrupt.h>
    #include <linux/capability.h>
    #include <linux/completion.h>
    #include <linux/kernel_stat.h>
    #include <linux/debug_locks.h>
    #include <linux/perf_event.h>
    #include <linux/security.h>
    #include <linux/notifier.h>
    #include <linux/profile.h>
    #include <linux/freezer.h>
    #include <linux/vmalloc.h>
    #include <linux/blkdev.h>
    #include <linux/delay.h>
    #include <linux/pid_namespace.h>
    #include <linux/smp.h>
    #include <linux/threads.h>
    #include <linux/timer.h>
    #include <linux/rcupdate.h>
    #include <linux/cpu.h>
    #include <linux/cpuset.h>
    #include <linux/percpu.h>
    #include <linux/proc_fs.h>
    #include <linux/seq_file.h>
    #include <linux/sysctl.h>
    #include <linux/syscalls.h>
    #include <linux/times.h>
    #include <linux/tsacct_kern.h>
    #include <linux/kprobes.h>
    #include <linux/delayacct.h>
    #include <linux/unistd.h>
    #include <linux/pagemap.h>
    #include <linux/hrtimer.h>
    #include <linux/tick.h>
    #include <linux/ctype.h>