10 Aug, 2010

1 commit

  • kmsg_dump takes care to sample the global variables
    inside a spinlock, but then goes on to use the same
    variables outside the spinlock region too.

    Use the correct variable. This will make the race
    window smaller.

    Found by gcc 4.6's new warnings.

    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     

05 Aug, 2010

1 commit

  • When a secondary CPU is being brought up, it is not uncommon for
    printk() to be invoked when cpu_online(smp_processor_id()) == 0. The
    case that I witnessed personally was on MIPS:

    http://lkml.org/lkml/2010/5/30/4

    If (can_use_console() == 0), printk() will spool its output to log_buf
    and it will be visible in "dmesg", but that output will NOT be echoed to
    the console until somebody calls release_console_sem() from a CPU that
    is online. Therefore, the boot time messages from the new CPU can get
    stuck in "limbo" for a long time, and might suddenly appear on the
    screen when a completely unrelated event (e.g. "eth0: link is down")
    occurs.

    This patch modifies the console code so that any pending messages are
    automatically flushed out to the console whenever a CPU hotplug
    operation completes successfully or aborts.

    The issue was seen on 2.6.34.

    Original patch by Kevin Cernekee with cleanups by akpm and additional fixes
    by Santosh Shilimkar. This patch superseeds
    https://patchwork.linux-mips.org/patch/1357/.

    Signed-off-by: Kevin Cernekee
    To:
    To:
    To:
    To:
    To:
    Cc:
    Cc:
    Reviewed-by: Paul Mundt
    Signed-off-by: Kevin Cernekee
    Patchwork: https://patchwork.linux-mips.org/patch/1534/
    LKML-Reference:
    LKML-Reference:
    Signed-off-by: Ralf Baechle

    Kevin Cernekee
     

21 May, 2010

2 commits

  • Certain calls from the kdb shell will call out to printk(), and any of
    these calls should get vectored back to the kdb_printf() so that the
    kdb pager and processing can be used, as well as to properly channel
    I/O to the polled I/O devices.

    CC: Randy Dunlap
    Signed-off-by: Jason Wessel
    Acked-by: Andrew Morton

    Jason Wessel
     
  • This patch contains the hooks and instrumentation into kernel which
    live outside the kernel/debug directory, which the kdb core
    will call to run commands like lsmod, dmesg, bt etc...

    CC: linux-arch@vger.kernel.org
    Signed-off-by: Jason Wessel
    Signed-off-by: Martin Hicks

    Jason Wessel
     

07 Mar, 2010

1 commit


01 Mar, 2010

1 commit


04 Feb, 2010

2 commits

  • Right now the syslog "type" action are just raw numbers which makes
    the source difficult to follow. This patch replaces the raw numbers
    with defined constants for some level of sanity.

    Signed-off-by: Kees Cook
    Acked-by: John Johansen
    Acked-by: Serge Hallyn
    Signed-off-by: James Morris

    Kees Cook
     
  • This allows the LSM to distinguish between syslog functions originating
    from /proc/kmsg access and direct syscalls. By default, the commoncaps
    will now no longer require CAP_SYS_ADMIN to read an opened /proc/kmsg
    file descriptor. For example the kernel syslog reader can now drop
    privileges after opening /proc/kmsg, instead of staying privileged with
    CAP_SYS_ADMIN. MAC systems that implement security_syslog have unchanged
    behavior.

    Signed-off-by: Kees Cook
    Acked-by: Serge Hallyn
    Acked-by: John Johansen
    Signed-off-by: James Morris

    Kees Cook
     

25 Jan, 2010

1 commit


01 Jan, 2010

1 commit

  • crash_kexec gets called before kmsg_dump(KMSG_DUMP_OOPS) if
    panic_on_oops is set, so the kernel log buffer is not stored
    for this case.

    This patch adds a KMSG_DUMP_KEXEC dump type which gets called
    when crash_kexec() is invoked. To avoid getting double dumps,
    the old KMSG_DUMP_PANIC is moved below crash_kexec(). The
    mtdoops driver is modified to handle KMSG_DUMP_KEXEC in the
    same way as a panic.

    Signed-off-by: KOSAKI Motohiro
    Acked-by: Simon Kagstrom
    Signed-off-by: David Woodhouse

    KOSAKI Motohiro
     

18 Dec, 2009

1 commit

  • Fix kernel-doc warnings in printk.c:

    Warning(kernel/printk.c:1422): No description found for parameter 'dumper'
    Warning(kernel/printk.c:1422): Excess function parameter 'dump' description in 'kmsg_dump_register'
    Warning(kernel/printk.c:1451): No description found for parameter 'dumper'
    Warning(kernel/printk.c:1451): Excess function parameter 'dump' description in 'kmsg_dump_unregister'

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

17 Dec, 2009

1 commit

  • * git://git.infradead.org/mtd-2.6: (90 commits)
    jffs2: Fix long-standing bug with symlink garbage collection.
    mtd: OneNAND: Fix test of unsigned in onenand_otp_walk()
    mtd: cfi_cmdset_0002, fix lock imbalance
    Revert "mtd: move mxcnd_remove to .exit.text"
    mtd: m25p80: add support for Macronix MX25L4005A
    kmsg_dump: fix build for CONFIG_PRINTK=n
    mtd: nandsim: add support for 4KiB pages
    mtd: mtdoops: refactor as a kmsg_dumper
    mtd: mtdoops: make record size configurable
    mtd: mtdoops: limit the maximum mtd partition size
    mtd: mtdoops: keep track of used/unused pages in an array
    mtd: mtdoops: several minor cleanups
    core: Add kernel message dumper to call on oopses and panics
    mtd: add ARM pismo support
    mtd: pxa3xx_nand: Fix PIO data transfer
    mtd: nand: fix multi-chip suspend problem
    mtd: add support for switching old SST chips into QRY mode
    mtd: fix M29W800D dev_id and uaddr
    mtd: don't use PF_MEMALLOC
    mtd: Add bad block table overrides to Davinci NAND driver
    ...

    Fixed up conflicts (mostly trivial) in
    drivers/mtd/devices/m25p80.c
    drivers/mtd/maps/pcmciamtd.c
    drivers/mtd/nand/pxa3xx_nand.c
    kernel/printk.c

    Linus Torvalds
     

06 Dec, 2009

1 commit


02 Dec, 2009

1 commit

  • kmsg_dump() fails to build when CONFIG_PRINTK=n; provide stubs
    for the kmsg_dump*() functions when CONFIG_PRINTK=n.

    kernel/printk.c: In function 'kmsg_dump':
    kernel/printk.c:1501: error: 'log_buf_len' undeclared (first use in this function)
    kernel/printk.c:1502: error: 'logged_chars' undeclared (first use in this function)
    kernel/printk.c:1506: error: 'log_buf' undeclared (first use in this function)

    Signed-off-by: Randy Dunlap
    Acked-by: Simon Kagstrom
    Signed-off-by: David Woodhouse

    Randy Dunlap
     

30 Nov, 2009

1 commit

  • The core functionality is implemented as per Linus suggestion from

    http://lists.infradead.org/pipermail/linux-mtd/2009-October/027620.html

    (with the kmsg_dump implementation by Linus). A struct kmsg_dumper has
    been added which contains a callback to dump the kernel log buffers on
    crashes. The kmsg_dump function gets called from oops_exit() and panic()
    and invokes this callbacks with the crash reason.

    [dwmw2: Fix log_end handling]
    Signed-off-by: Simon Kagstrom
    Reviewed-by: Anders Grafstrom
    Reviewed-by: Linus Torvalds
    Acked-by: Ingo Molnar
    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Simon Kagstrom
     

23 Oct, 2009

1 commit

  • Today I got:

    [39648.224782] Registered led device: iwl-phy0::TX
    [40676.545099] __ratelimit: 246 callbacks suppressed
    [40676.545103] abcdef[23675]: segfault at 0 ...

    as you can see the ratelimit message contains a function prefix.
    Since this is always __ratelimit, this wont help much.

    This patch changes __ratelimit and printk_ratelimit to print the
    function name that calls ratelimit.

    This will pinpoint the responsible function, as long as not several
    different places call ratelimit with the same ratelimit state at
    the same time. In that case we catch only one random function that
    calls ratelimit after the wait period.

    Signed-off-by: Christian Borntraeger
    Cc: Dave Young
    Cc: Linus Torvalds
    CC: Andrew Morton
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Christian Borntraeger
     

23 Sep, 2009

2 commits

  • When syslog is not possible, at the same time there's no serial/net
    console available, it will be hard to read the printk messages. For
    example oops/panic/warning messages in shutdown phase.

    Add a printk delay feature, we can make each printk message delay some
    milliseconds.

    Setting the delay by proc/sysctl interface: /proc/sys/kernel/printk_delay

    The value range from 0 - 10000, default value is 0

    [akpm@linux-foundation.org: fix a few things]
    Signed-off-by: Dave Young
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Young
     
  • Rename `printk_delay_msec' to `loops_per_msec', because the patch "printk:
    add printk_delay to make messages readable for some scenarios" wishes to
    more appropriately use the `printk_delay_msec' identifier.

    [akpm@linux-foundation.org: add a comment]
    Signed-off-by: Dave Young
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Young
     

22 Sep, 2009

1 commit

  • Decouple kernel.h from ratelimit.h: the global declaration of
    printk's ratelimit_state is not needed, and it leads to messy
    circular dependencies due to ratelimit.h's (new) adding of a
    spinlock_types.h include.

    Cc: Peter Zijlstra
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: David S. Miller
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

15 Sep, 2009

1 commit

  • console_print() is an old legacy interface mostly unused in the entire
    kernel tree. It's best to clean up its existing use and let developers
    use their own implementation of it as they feel fit.

    Signed-off-by: Anirban Sinha
    Signed-off-by: Linus Torvalds

    Anirban Sinha
     

09 Aug, 2009

1 commit


10 Jul, 2009

2 commits

  • When logging to console is disabled from userspace using klogctl()
    and later re-enabled, console_loglevel gets set to the default
    log level instead to the previous value.

    This means that if the kernel was booted with 'quiet', the boot is
    suddenly no longer quiet after logging to console gets re-enabled.

    Save the current console_loglevel when logging is disabled and
    restore to that value. If the log level is set to a specific value
    while disabled, this is interpreted as an implicit re-enabling of
    the logging.

    The problem that prompted this patch is described in:

    http://lkml.org/lkml/2009/6/28/234

    There are two variations possible on the patch below:

    1) If klogctl(7) is called while logging is not disabled, then set level
    to default (partially preserving current functionality):
    case 7: /* Enable logging to console */
    - console_loglevel = default_console_loglevel;
    + if (saved_console_loglevel == -1)
    + console_loglevel = default_console_loglevel;
    + else {
    + console_loglevel = saved_console_loglevel;
    + saved_console_loglevel = -1;
    + }

    2) If klogctl(8) is called while logging is disabled, then don't enable
    logging, but remember the requested value for when logging does get
    enabled again:
    case 8: /* Set level of messages printed to console */
    [...]
    - console_loglevel = len;
    + if (saved_console_loglevel == -1)
    + console_loglevel = len;
    + else
    + saved_console_loglevel = len;

    Yet another option would be to ignore the request.

    Signed-off-by: Frans Pop
    Cc: cryptsetup@packages.debian.org
    Cc: Andrew Morton
    Cc: Linus Torvalds
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frans Pop
     
  • Today, when a console is registered without CON_PRINTBUFFER,
    end users never see the announcement of it being added, and
    never know if they missed something, if the console is really
    at the start or not, and just leads to general confusion.

    This re-orders existing code, to make sure the console is
    added, before the "console [%s%d] enabled" is printed out -
    ensuring that this message is _always_ seen.

    This has the desired/intended side effect of making sure that
    "console enabled:" messages are printed on the bootconsole, and
    the real console. This does cause the same line is printed
    twice if the bootconsole and real console are the same device,
    but if they are on different devices, the message is printed to
    both consoles.

    Signed-off-by : Robin Getz
    Cc: "Andrew Morton"
    Cc: "Linus Torvalds"
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Robin Getz
     

03 Jul, 2009

1 commit

  • Today, register_console() assumes the following usage:

    - The first console to register with a flag set to CON_BOOT
    is the one and only bootconsole.

    - If another register_console() is called with an additional
    CON_BOOT, it is silently rejected.

    - As soon as a console without the CON_BOOT set calls
    registers the bootconsole is automatically unregistered.

    - Once there is a "real" console - register_console() will
    silently reject any consoles with it's CON_BOOT flag set.

    In many systems (alpha, blackfin, microblaze, mips, powerpc,
    sh, & x86), there are early_printk implementations, which use
    the CON_BOOT which come out serial ports, vga, usb, & memory
    buffers.

    In many embedded systems, it would be nice to have two
    bootconsoles - in case the primary fails, you always have
    access to a backup memory buffer - but this requires at least
    two CON_BOOT consoles...

    This patch enables that functionality.

    With the change applied, on boot you get (if you try to
    re-enable a boot console after the "real" console has been
    registered):

    root:/> dmesg | grep console
    bootconsole [early_shadow0] enabled
    bootconsole [early_BFuart0] enabled
    Kernel command line: root=/dev/mtdblock0 rw earlyprintk=serial,uart0,57600 console=ttyBF0,57600 nmi_debug=regs
    console handover:boot [early_BFuart0] boot [early_shadow0] -> real [ttyBF0]
    Too late to register bootconsole early_shadow0

    or:

    root:/> dmesg | grep console
    Kernel command line: root=/dev/mtdblock0 rw console=ttyBF0,57600
    console [ttyBF0] enabled

    Signed-off-by: Robin Getz
    Cc: "Linus Torvalds"
    Cc: "Andrew Morton"
    Cc: "Mike Frysinger"
    Cc: "Paul Mundt"
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Robin Getz
     

17 Jun, 2009

2 commits

  • This adds a KERN_DEFAULT loglevel marker, for when you cannot decide
    which loglevel you want, and just want to keep an existing printk
    with the default loglevel.

    The difference between having KERN_DEFAULT and having no log-level
    marker at all is two-fold:

    - having the log-level marker will now force a new-line if the
    previous printout had not added one (perhaps because it forgot,
    but perhaps because it expected a continuation)

    - having a log-level marker is required if you are printing out a
    message that otherwise itself could perhaps otherwise be mistaken
    for a log-level.

    Signed-of-by: Linus Torvalds

    Linus Torvalds
     
  • It used to be that we would only look at the log-level in a printk()
    after explicit newlines, which can cause annoying problems when the
    previous printk() did not end with a '\n'. In that case, the log-level
    marker would be just printed out in the middle of the line, and be
    seen as just noise rather than change the logging level.

    This changes things to always look at the log-level in the first
    bytes of the printout. If a log level marker is found, it is always
    used as the log-level. Additionally, if no newline existed, one is
    added (unless the log-level is the explicit KERN_CONT marker, to
    explicitly show that it's a continuation of a previous line).

    Acked-by: Arjan van de Ven
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

06 Apr, 2009

1 commit

  • * 'printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    printk: correct the behavior of printk_timed_ratelimit()
    vsprintf: unify the format decoding layer for its 3 users, cleanup
    fix regression from "vsprintf: unify the format decoding layer for its 3 users"
    vsprintf: fix bug in negative value printing
    vsprintf: unify the format decoding layer for its 3 users
    vsprintf: add binary printf
    printk: introduce printk_once()

    Fix trivial conflicts (printk_once vs log_buf_kexec_setup() added near
    each other) in include/linux/kernel.h.

    Linus Torvalds
     

03 Apr, 2009

1 commit

  • It would be nice to be able to extract the dmesg log from a vmcore file
    without needing to keep the debug symbols for the running kernel handy all
    the time. We have a facility to do this in /proc/vmcore. This patch adds
    the log_buf and log_end symbols to the vmcoreinfo area so that tools (like
    makedumpfile) can easily extract the dmesg logs from a vmcore image.

    [akpm@linux-foundation.org: several fixes and cleanups]
    [akpm@linux-foundation.org: fix unused log_buf_kexec_setup()]
    [akpm@linux-foundation.org: build fix]
    Signed-off-by: Neil Horman
    Cc: Simon Horman
    Acked-by: Vivek Goyal
    Cc: Neil Horman
    Cc: Simon Horman
    Cc: Vivek Goyal
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Neil Horman
     

17 Mar, 2009

1 commit

  • Impact: fix jiffies-comparison sign-wrap behavior

    The behavior provided by printk_timed_ratelimit() is, in some
    situations, probably not what a caller would reasonably expect:

    bool printk_timed_ratelimit(unsigned long *caller_jiffies,
    unsigned int interval_msecs)
    {
    if (*caller_jiffies == 0 || time_after(jiffies, *caller_jiffies)) {
    *caller_jiffies = jiffies + msecs_to_jiffies(interval_msecs);
    return true;
    }
    return false;
    }

    On a 32 bit computer, if printk_timed_ratelimit() is initially called at
    time jiffies == Ja, *caller_jiffies is set to
    Ja + msecs_to_jiffies(interval_msecs): let's say Ja + 42 for this
    example.

    If this caller then doesn't call printk_timed_ratelimit() until
    jiffies == Ja + (1 << 31) + 42 (which can happen as soon as ~ 25 days
    later on a 1000 HZ system), printk_timed_ratelimit() will then always
    return false to this caller until jiffies loops completely (1 << 31 more
    ticks).

    Ths change makes it only return false if jiffies is in the small
    time window starting at the previous call when true was returned and
    ending interval_msecs later. Note that if jiffies loops completely
    between two calls to printk_timed_ratelimit(), it will obviously still
    wrongly return false, but this is something with a low probability.

    If something completely reliable is needed I guess jiffies_64 must be
    used (which this change does not do).

    Signed-off-by: Guillaume Knispel
    Cc: Ulrich Drepper
    Cc: Rusty Russell
    Cc: Andrew Morton
    Cc: Linus Torvalds
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Guillaume Knispel
     

22 Feb, 2009

1 commit

  • This fixes a race where a thread acquires the console while the
    console is suspended, and the console is resumed before this
    thread releases it. In this case, the secondary console
    semaphore would be left locked, and the primary semaphore would
    be released twice. This in turn would cause the console switch
    on suspend or resume to hang forever.

    Note that suspend_console does not actually lock the console
    for clients that use acquire_console_sem, it only locks it for
    clients that use try_acquire_console_sem. If we change
    suspend_console to fully lock the console, then the kernel
    may deadlock on suspend. One client of try_acquire_console_sem
    is acquire_console_semaphore_for_printk, which uses it to
    prevent printk from using the console while it is suspended.

    Signed-off-by: Arve Hjønnevåg
    Signed-off-by: Rafael J. Wysocki
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Linus Torvalds

    Arve Hjønnevåg
     

14 Jan, 2009

2 commits


06 Jan, 2009

1 commit


20 Dec, 2008

1 commit

  • Impact: fix truncated recursion bug message printout

    When recursion_bug is true, kernel discards original message because printk_buf
    contains recursion_bug_msg with NULL terminator. The sizeof(recursion_bug_msg)
    makes this, use strlen() to get correct length without NULL terminator.

    Reported-by: Toshikazu Nakayama
    Signed-off-by: Hiroshi Shimamoto
    Signed-off-by: Ingo Molnar

    Hiroshi Shimamoto
     

24 Oct, 2008

1 commit


17 Oct, 2008

3 commits

  • * 'core-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    do_generic_file_read: s/EINTR/EIO/ if lock_page_killable() fails
    softirq, warning fix: correct a format to avoid a warning
    softirqs, debug: preemption check
    x86, pci-hotplug, calgary / rio: fix EBDA ioremap()
    IO resources, x86: ioremap sanity check to catch mapping requests exceeding, fix
    IO resources, x86: ioremap sanity check to catch mapping requests exceeding the BAR sizes
    softlockup: Documentation/sysctl/kernel.txt: fix softlockup_thresh description
    dmi scan: warn about too early calls to dmi_check_system()
    generic: redefine resource_size_t as phys_addr_t
    generic: make PFN_PHYS explicitly return phys_addr_t
    generic: add phys_addr_t for holding physical addresses
    softirq: allocate less vectors
    IO resources: fix/remove printk
    printk: robustify printk, update comment
    printk: robustify printk, fix #2
    printk: robustify printk, fix
    printk: robustify printk

    Fixed up conflicts in:
    arch/powerpc/include/asm/types.h
    arch/powerpc/platforms/Kconfig.cputype
    manually.

    Linus Torvalds
     
  • Add documentation in kerneldoc for new printk format extensions

    This patch documents the new %pS/%pF options in printk in kernel doc.

    Hope I didn't miss any other extension.

    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • People can use the real name an an index into MAINTAINERS to find the
    current email address.

    Signed-off-by: Francois Cami
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Francois Cami
     

15 Oct, 2008

1 commit


14 Oct, 2008

1 commit