24 Nov, 2020

1 commit

  • We call arch_cpu_idle() with RCU disabled, but then use
    local_irq_{en,dis}able(), which invokes tracing, which relies on RCU.

    Switch all arch_cpu_idle() implementations to use
    raw_local_irq_{en,dis}able() and carefully manage the
    lockdep,rcu,tracing state like we do in entry.

    (XXX: we really should change arch_cpu_idle() to not return with
    interrupts enabled)

    Reported-by: Sven Schnelle
    Signed-off-by: Peter Zijlstra (Intel)
    Reviewed-by: Mark Rutland
    Tested-by: Mark Rutland
    Link: https://lkml.kernel.org/r/20201120114925.594122626@infradead.org

    Peter Zijlstra
     

18 Oct, 2020

1 commit


15 Oct, 2020

1 commit

  • Pull kernel_clone() updates from Christian Brauner:
    "During the v5.9 merge window we reworked the process creation
    codepaths across multiple architectures. After this work we were only
    left with the _do_fork() helper based on the struct kernel_clone_args
    calling convention. As was pointed out _do_fork() isn't valid
    kernelese especially for a helper that isn't just static.

    This series removes the _do_fork() helper and introduces the new
    kernel_clone() helper. The process creation cleanup didn't change the
    name to something more reasonable mainly because _do_fork() was used
    in quite a few places. So sending this as a separate series seemed the
    better strategy.

    I originally intended to send this early in the v5.9 development cycle
    after the merge window had closed but given that this was touching
    quite a few places I decided to defer this until the v5.10 merge
    window"

    * tag 'kernel-clone-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
    sched: remove _do_fork()
    tracing: switch to kernel_clone()
    kgdbts: switch to kernel_clone()
    kprobes: switch to kernel_clone()
    x86: switch to kernel_clone()
    sparc: switch to kernel_clone()
    nios2: switch to kernel_clone()
    m68k: switch to kernel_clone()
    ia64: switch to kernel_clone()
    h8300: switch to kernel_clone()
    fork: introduce kernel_clone()

    Linus Torvalds
     

14 Oct, 2020

1 commit

  • Instead of traversing memblock.memory regions to find memory_start and
    memory_end, simply query memblock_{start,end}_of_DRAM().

    Signed-off-by: Mike Rapoport
    Signed-off-by: Andrew Morton
    Acked-by: Stafford Horne
    Cc: Andy Lutomirski
    Cc: Baoquan He
    Cc: Benjamin Herrenschmidt
    Cc: Borislav Petkov
    Cc: Catalin Marinas
    Cc: Christoph Hellwig
    Cc: Daniel Axtens
    Cc: Dave Hansen
    Cc: Emil Renner Berthing
    Cc: Hari Bathini
    Cc: Ingo Molnar
    Cc: Ingo Molnar
    Cc: Jonathan Cameron
    Cc: Marek Szyprowski
    Cc: Max Filippov
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Miguel Ojeda
    Cc: Palmer Dabbelt
    Cc: Paul Mackerras
    Cc: Paul Walmsley
    Cc: Peter Zijlstra
    Cc: Russell King
    Cc: Thomas Bogendoerfer
    Cc: Thomas Gleixner
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Link: https://lkml.kernel.org/r/20200818151634.14343-6-rppt@kernel.org
    Signed-off-by: Linus Torvalds

    Mike Rapoport
     

24 Aug, 2020

1 commit

  • Replace the existing /* fall through */ comments and its variants with
    the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
    fall-through markings when it is the case.

    [1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

20 Aug, 2020

1 commit

  • The old _do_fork() helper is removed in favor of the new kernel_clone() helper.
    The latter adheres to naming conventions for kernel internal syscall helpers.

    Signed-off-by: Christian Brauner
    Cc: Greentime Hu
    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Link: https://lore.kernel.org/r/20200819104655.436656-3-christian.brauner@ubuntu.com

    Christian Brauner
     

08 Aug, 2020

1 commit

  • Pull ptrace regset updates from Al Viro:
    "Internal regset API changes:

    - regularize copy_regset_{to,from}_user() callers

    - switch to saner calling conventions for ->get()

    - kill user_regset_copyout()

    The ->put() side of things will have to wait for the next cycle,
    unfortunately.

    The balance is about -1KLoC and replacements for ->get() instances are
    a lot saner"

    * 'work.regset' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (41 commits)
    regset: kill user_regset_copyout{,_zero}()
    regset(): kill ->get_size()
    regset: kill ->get()
    csky: switch to ->regset_get()
    xtensa: switch to ->regset_get()
    parisc: switch to ->regset_get()
    nds32: switch to ->regset_get()
    nios2: switch to ->regset_get()
    hexagon: switch to ->regset_get()
    h8300: switch to ->regset_get()
    openrisc: switch to ->regset_get()
    riscv: switch to ->regset_get()
    c6x: switch to ->regset_get()
    ia64: switch to ->regset_get()
    arc: switch to ->regset_get()
    arm: switch to ->regset_get()
    sh: convert to ->regset_get()
    arm64: switch to ->regset_get()
    mips: switch to ->regset_get()
    sparc: switch to ->regset_get()
    ...

    Linus Torvalds
     

28 Jul, 2020

1 commit


05 Jul, 2020

2 commits

  • Now that HAVE_COPY_THREAD_TLS has been removed, rename copy_thread_tls()
    back simply copy_thread(). It's a simpler name, and doesn't imply that only
    tls is copied here. This finishes an outstanding chunk of internal process
    creation work since we've added clone3().

    Cc: linux-arch@vger.kernel.org
    Acked-by: Thomas Bogendoerfer A
    Acked-by: Stafford Horne
    Acked-by: Greentime Hu
    Acked-by: Geert Uytterhoeven A
    Reviewed-by: Kees Cook
    Signed-off-by: Christian Brauner

    Christian Brauner
     
  • This is part of a larger series that aims at getting rid of the
    copy_thread()/copy_thread_tls() split that makes the process creation
    codepaths in the kernel more convoluted and error-prone than they need
    to be.
    I'm converting all the remaining arches that haven't yet switched and
    am collecting individual acks. Once I have them, I'll send the whole series
    removing the copy_thread()/copy_thread_tls() split, the
    HAVE_COPY_THREAD_TLS define and the legacy do_fork() helper. The only
    kernel-wide process creation entry point for anything not going directly
    through the syscall path will then be based on struct kernel_clone_args.
    No more danger of weird process creation abi quirks between architectures
    hopefully, and easier to maintain overall.
    It also unblocks implementing clone3() on architectures not support
    copy_thread_tls(). Any architecture that wants to implement clone3()
    will need to select HAVE_COPY_THREAD_TLS and thus need to implement
    copy_thread_tls(). So both goals are connected but independently
    beneficial.

    HAVE_COPY_THREAD_TLS means that a given architecture supports
    CLONE_SETTLS and not setting it should usually mean that the
    architectures doesn't implement it but that's not how things are. In
    fact all architectures support CLONE_TLS it's just that they don't
    follow the calling convention that HAVE_COPY_THREAD_TLS implies. That
    means all architectures can be switched over to select
    HAVE_COPY_THREAD_TLS. Once that is done we can remove that macro (yay,
    less code), the unnecessary do_fork() export in kernel/fork.c, and also
    rename copy_thread_tls() back to copy_thread(). At this point
    copy_thread() becomes the main architecture specific part of process
    creation but it will be the same layout and calling convention for all
    architectures. (Once that is done we can probably cleanup each
    copy_thread() function even more but that's for the future.)

    Though h8300 doesn't not suppor the CLONE_SETTLS flag there's no reason to
    not switch to the copy_thread_tls() calling convention. As before
    CLONE_SETTLS with legacy clone will just be ignored. This brings us one
    step closer to getting rid of the copy_thread()/copy_thread_tls() split we
    still have and ultimately the HAVE_COPY_THREAD_TLS define in general. A lot
    of architectures have already converted and h8300 is one of the few hat
    haven't yet. This also unblocks implementing the clone3() syscall on h8300.
    Once that is done we can get of another ARCH_WANTS_* macro.

    Once Any architecture that supports HAVE_COPY_THREAD_TLS cannot call the
    do_fork() helper anymore. This is fine and intended since it should be
    removed in favor of the new, cleaner _do_fork() calling convention based
    on struct kernel_clone_args. In fact, most architectures have already
    switched. With this patch, h8300 joins the other arches which can't use
    the fork(), vfork(), clone(), clone3() syscalls directly and who follow
    the new process creation calling convention that is based on struct
    kernel_clone_args which we introduced a while back. This means less
    custom assembly in the architectures entry path to set up the registers
    before calling into the process creation helper and it is easier to to
    support new features without having to adapt calling conventions. It
    also unifies all process creation paths between fork(), vfork(),
    clone(), and clone3(). (We can't fix the ABI nightmare that legacy
    clone() is but we can prevent stuff like this happening in the future.)

    For some more context, please see:
    commit 606e9ad20094f6d500166881d301f31a51bc8aa7
    Merge: ac61145a725a 457677c70c76
    Author: Linus Torvalds
    Date: Sat Jan 11 15:33:48 2020 -0800

    Merge tag 'clone3-tls-v5.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux

    Pull thread fixes from Christian Brauner:
    "This contains a series of patches to fix CLONE_SETTLS when used with
    clone3().

    The clone3() syscall passes the tls argument through struct clone_args
    instead of a register. This means, all architectures that do not
    implement copy_thread_tls() but still support CLONE_SETTLS via
    copy_thread() expecting the tls to be located in a register argument
    based on clone() are currently unfortunately broken. Their tls value
    will be garbage.

    The patch series fixes this on all architectures that currently define
    __ARCH_WANT_SYS_CLONE3. It also adds a compile-time check to ensure
    that any architecture that enables clone3() in the future is forced to
    also implement copy_thread_tls().

    My ultimate goal is to get rid of the copy_thread()/copy_thread_tls()
    split and just have copy_thread_tls() at some point in the not too
    distant future (Maybe even renaming copy_thread_tls() back to simply
    copy_thread() once the old function is ripped from all arches). This
    is dependent now on all arches supporting clone3().

    While all relevant arches do that now there are still four missing:
    ia64, m68k, sh and sparc. They have the system call reserved, but not
    implemented. Once they all implement clone3() we can get rid of
    ARCH_WANT_SYS_CLONE3 and HAVE_COPY_THREAD_TLS.

    Note that in the meantime, m68k has already switched to the new calling
    convention. And I've got sparc patches acked by Dave, patches for ia64, and
    nios2 have been sent out and are ready too.

    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Signed-off-by: Christian Brauner

    Christian Brauner
     

10 Jun, 2020

3 commits

  • Patch series "mm: consolidate definitions of page table accessors", v2.

    The low level page table accessors (pXY_index(), pXY_offset()) are
    duplicated across all architectures and sometimes more than once. For
    instance, we have 31 definition of pgd_offset() for 25 supported
    architectures.

    Most of these definitions are actually identical and typically it boils
    down to, e.g.

    static inline unsigned long pmd_index(unsigned long address)
    {
    return (address >> PMD_SHIFT) & (PTRS_PER_PMD - 1);
    }

    static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
    {
    return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(address);
    }

    These definitions can be shared among 90% of the arches provided
    XYZ_SHIFT, PTRS_PER_XYZ and xyz_page_vaddr() are defined.

    For architectures that really need a custom version there is always
    possibility to override the generic version with the usual ifdefs magic.

    These patches introduce include/linux/pgtable.h that replaces
    include/asm-generic/pgtable.h and add the definitions of the page table
    accessors to the new header.

    This patch (of 12):

    The linux/mm.h header includes to allow inlining of the
    functions involving page table manipulations, e.g. pte_alloc() and
    pmd_alloc(). So, there is no point to explicitly include
    in the files that include .

    The include statements in such cases are remove with a simple loop:

    for f in $(git grep -l "include ") ; do
    sed -i -e '/include / d' $f
    done

    Signed-off-by: Mike Rapoport
    Signed-off-by: Andrew Morton
    Cc: Arnd Bergmann
    Cc: Borislav Petkov
    Cc: Brian Cain
    Cc: Catalin Marinas
    Cc: Chris Zankel
    Cc: "David S. Miller"
    Cc: Geert Uytterhoeven
    Cc: Greentime Hu
    Cc: Greg Ungerer
    Cc: Guan Xuetao
    Cc: Guo Ren
    Cc: Heiko Carstens
    Cc: Helge Deller
    Cc: Ingo Molnar
    Cc: Ley Foon Tan
    Cc: Mark Salter
    Cc: Matthew Wilcox
    Cc: Matt Turner
    Cc: Max Filippov
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Mike Rapoport
    Cc: Nick Hu
    Cc: Paul Walmsley
    Cc: Richard Weinberger
    Cc: Rich Felker
    Cc: Russell King
    Cc: Stafford Horne
    Cc: Thomas Bogendoerfer
    Cc: Thomas Gleixner
    Cc: Tony Luck
    Cc: Vincent Chen
    Cc: Vineet Gupta
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Link: http://lkml.kernel.org/r/20200514170327.31389-1-rppt@kernel.org
    Link: http://lkml.kernel.org/r/20200514170327.31389-2-rppt@kernel.org
    Signed-off-by: Linus Torvalds

    Mike Rapoport
     
  • Now the last users of show_stack() got converted to use an explicit log
    level, show_stack_loglvl() can drop it's redundant suffix and become once
    again well known show_stack().

    Signed-off-by: Dmitry Safonov
    Signed-off-by: Andrew Morton
    Link: http://lkml.kernel.org/r/20200418201944.482088-51-dima@arista.com
    Signed-off-by: Linus Torvalds

    Dmitry Safonov
     
  • Currently, the log-level of show_stack() depends on a platform
    realization. It creates situations where the headers are printed with
    lower log level or higher than the stacktrace (depending on a platform or
    user).

    Furthermore, it forces the logic decision from user to an architecture
    side. In result, some users as sysrq/kdb/etc are doing tricks with
    temporary rising console_loglevel while printing their messages. And in
    result it not only may print unwanted messages from other CPUs, but also
    omit printing at all in the unlucky case where the printk() was deferred.

    Introducing log-level parameter and KERN_UNSUPPRESSED [1] seems an easier
    approach than introducing more printk buffers. Also, it will consolidate
    printings with headers.

    Introduce show_stack_loglvl(), that eventually will substitute
    show_stack().

    [1]: https://lore.kernel.org/lkml/20190528002412.1625-1-dima@arista.com/T/#u

    Signed-off-by: Dmitry Safonov
    Signed-off-by: Andrew Morton
    Cc: Yoshinori Sato
    Link: http://lkml.kernel.org/r/20200418201944.482088-14-dima@arista.com
    Signed-off-by: Linus Torvalds

    Dmitry Safonov
     

23 Apr, 2020

1 commit


08 Dec, 2019

1 commit

  • CONFIG_PREEMPTION is selected by CONFIG_PREEMPT and by CONFIG_PREEMPT_RT.
    Both PREEMPT and PREEMPT_RT require the same functionality which today
    depends on CONFIG_PREEMPT.

    Switch the entry code over to use CONFIG_PREEMPTION.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Thomas Gleixner
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Link: https://lore.kernel.org/r/20191015191821.11479-8-bigeasy@linutronix.de
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

05 Nov, 2019

1 commit

  • Since the EXCEPTION_TABLE is read-only, collapse it into RO_DATA.

    Signed-off-by: Kees Cook
    Signed-off-by: Borislav Petkov
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Dave Hansen
    Cc: Geert Uytterhoeven
    Cc: Heiko Carstens
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-s390@vger.kernel.org
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Rick Edgecombe
    Cc: Segher Boessenkool
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Cc: Will Deacon
    Cc: x86-ml
    Cc: Yoshinori Sato
    Link: https://lkml.kernel.org/r/20191029211351.13243-21-keescook@chromium.org

    Kees Cook
     

04 Nov, 2019

3 commits

  • Rename RW_DATA_SECTION to RW_DATA. (Calling this a "section" is a lie,
    since it's multiple sections and section flags cannot be applied to
    the macro.)

    Signed-off-by: Kees Cook
    Signed-off-by: Borislav Petkov
    Acked-by: Heiko Carstens # s390
    Acked-by: Geert Uytterhoeven # m68k
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Dave Hansen
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-s390@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Rick Edgecombe
    Cc: Segher Boessenkool
    Cc: Will Deacon
    Cc: x86-ml
    Cc: Yoshinori Sato
    Link: https://lkml.kernel.org/r/20191029211351.13243-14-keescook@chromium.org

    Kees Cook
     
  • Finish renaming RO_DATA_SECTION to RO_DATA. (Calling this a "section"
    is a lie, since it's multiple sections and section flags cannot be
    applied to the macro.)

    Signed-off-by: Kees Cook
    Signed-off-by: Borislav Petkov
    Acked-by: Heiko Carstens # s390
    Acked-by: Geert Uytterhoeven # m68k
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Dave Hansen
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-s390@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Rick Edgecombe
    Cc: Segher Boessenkool
    Cc: Will Deacon
    Cc: x86-ml
    Cc: Yoshinori Sato
    Link: https://lkml.kernel.org/r/20191029211351.13243-13-keescook@chromium.org

    Kees Cook
     
  • The .notes section should be non-executable read-only data. As such,
    move it to the RO_DATA macro instead of being per-architecture defined.

    Signed-off-by: Kees Cook
    Signed-off-by: Borislav Petkov
    Acked-by: Heiko Carstens # s390
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Dave Hansen
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-s390@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Rick Edgecombe
    Cc: Segher Boessenkool
    Cc: Will Deacon
    Cc: x86-ml
    Cc: Yoshinori Sato
    Link: https://lkml.kernel.org/r/20191029211351.13243-11-keescook@chromium.org

    Kees Cook
     

27 May, 2019

1 commit


16 May, 2019

1 commit

  • Now that we've gotten rid of clk_readl() we can remove io.h from the
    clk-provider header and push out the io.h include to any code that isn't
    already including the io.h header but using things like readl/writel,
    etc.

    Found with this grep:

    git grep -l clk-provider.h | grep '.c$' | xargs git grep -L 'linux/io.h' | \
    xargs git grep -l \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\' --or \
    -e '\'

    I also reordered a couple includes when they weren't alphabetical and
    removed clk.h from kona, replacing it with clk-provider.h because
    that driver doesn't use clk consumer APIs.

    Acked-by: Geert Uytterhoeven
    Cc: Chen-Yu Tsai
    Acked-by: Maxime Ripard
    Acked-by: Tero Kristo
    Acked-by: Sekhar Nori
    Cc: Krzysztof Kozlowski
    Acked-by: Mark Brown
    Cc: Chris Zankel
    Acked-by: Max Filippov
    Acked-by: John Crispin
    Acked-by: Heiko Stuebner
    Signed-off-by: Stephen Boyd

    Stephen Boyd
     

04 Jan, 2019

1 commit

  • Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument
    of the user address range verification function since we got rid of the
    old racy i386-only code to walk page tables by hand.

    It existed because the original 80386 would not honor the write protect
    bit when in kernel mode, so you had to do COW by hand before doing any
    user access. But we haven't supported that in a long time, and these
    days the 'type' argument is a purely historical artifact.

    A discussion about extending 'user_access_begin()' to do the range
    checking resulted this patch, because there is no way we're going to
    move the old VERIFY_xyz interface to that model. And it's best done at
    the end of the merge window when I've done most of my merges, so let's
    just get this done once and for all.

    This patch was mostly done with a sed-script, with manual fix-ups for
    the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form.

    There were a couple of notable cases:

    - csky still had the old "verify_area()" name as an alias.

    - the iter_iov code had magical hardcoded knowledge of the actual
    values of VERIFY_{READ,WRITE} (not that they mattered, since nothing
    really used it)

    - microblaze used the type argument for a debug printout

    but other than those oddities this should be a total no-op patch.

    I tried to fix up all architectures, did fairly extensive grepping for
    access_ok() uses, and the changes are trivial, but I may have missed
    something. Any missed conversion should be trivially fixable, though.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

30 Dec, 2018

1 commit

  • checkpatch.pl reports the following:

    WARNING: struct kgdb_arch should normally be const
    #28: FILE: arch/mips/kernel/kgdb.c:397:
    +struct kgdb_arch arch_kgdb_ops = {

    This report makes sense, as all other ops struct, this
    one should also be const. This patch does the change.

    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Cc: Richard Kuo
    Cc: Michal Simek
    Cc: Ralf Baechle
    Cc: Paul Burton
    Cc: James Hogan
    Cc: Ley Foon Tan
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: Rich Felker
    Cc: "David S. Miller"
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Borislav Petkov
    Cc: x86@kernel.org
    Acked-by: Daniel Thompson
    Acked-by: Paul Burton
    Signed-off-by: Christophe Leroy
    Acked-by: Borislav Petkov
    Acked-by: Michael Ellerman (powerpc)
    Signed-off-by: Daniel Thompson

    Christophe Leroy
     

31 Oct, 2018

1 commit

  • Move remaining definitions and declarations from include/linux/bootmem.h
    into include/linux/memblock.h and remove the redundant header.

    The includes were replaced with the semantic patch below and then
    semi-automated removal of duplicated '#include

    @@
    @@
    - #include
    + #include

    [sfr@canb.auug.org.au: dma-direct: fix up for the removal of linux/bootmem.h]
    Link: http://lkml.kernel.org/r/20181002185342.133d1680@canb.auug.org.au
    [sfr@canb.auug.org.au: powerpc: fix up for removal of linux/bootmem.h]
    Link: http://lkml.kernel.org/r/20181005161406.73ef8727@canb.auug.org.au
    [sfr@canb.auug.org.au: x86/kaslr, ACPI/NUMA: fix for linux/bootmem.h removal]
    Link: http://lkml.kernel.org/r/20181008190341.5e396491@canb.auug.org.au
    Link: http://lkml.kernel.org/r/1536927045-23536-30-git-send-email-rppt@linux.vnet.ibm.com
    Signed-off-by: Mike Rapoport
    Signed-off-by: Stephen Rothwell
    Acked-by: Michal Hocko
    Cc: Catalin Marinas
    Cc: Chris Zankel
    Cc: "David S. Miller"
    Cc: Geert Uytterhoeven
    Cc: Greentime Hu
    Cc: Greg Kroah-Hartman
    Cc: Guan Xuetao
    Cc: Ingo Molnar
    Cc: "James E.J. Bottomley"
    Cc: Jonas Bonn
    Cc: Jonathan Corbet
    Cc: Ley Foon Tan
    Cc: Mark Salter
    Cc: Martin Schwidefsky
    Cc: Matt Turner
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Palmer Dabbelt
    Cc: Paul Burton
    Cc: Richard Kuo
    Cc: Richard Weinberger
    Cc: Rich Felker
    Cc: Russell King
    Cc: Serge Semin
    Cc: Thomas Gleixner
    Cc: Tony Luck
    Cc: Vineet Gupta
    Cc: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Rapoport
     

11 Oct, 2018

1 commit

  • Since the struct lsm_info table is not an initcall, we can just move it
    into INIT_DATA like all the other tables.

    Signed-off-by: Kees Cook
    Reviewed-by: Casey Schaufler
    Reviewed-by: John Johansen
    Reviewed-by: James Morris
    Signed-off-by: James Morris

    Kees Cook
     

22 Aug, 2018

4 commits

  • Drop the "const" qualifier from arch_kgdb_ops to eliminate the gcc
    warning (gcc version is 8.1.0).

    arch/h8300/kernel/kgdb.c:132:24: error: conflicting type qualifiers for 'arch_kgdb_ops'
    const struct kgdb_arch arch_kgdb_ops = {
    In file included from ../arch/h8300/kernel/kgdb.c:12:
    ../include/linux/kgdb.h:284:26: note: previous declaration of 'arch_kgdb_ops' was here
    extern struct kgdb_arch arch_kgdb_ops;

    Signed-off-by: Randy Dunlap
    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Signed-off-by: Yoshinori Sato

    Randy Dunlap
     
  • The DT core will call of_platform_populate, so it is not necessary for
    arch specific code to call it unless there are custom match entries,
    auxdata or parent device. Neither of those apply here, so remove the call.

    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Signed-off-by: Rob Herring
    Signed-off-by: Yoshinori Sato

    Rob Herring
     
  • Commit 0fa1c579349f ("of/fdt: use memblock_virt_alloc for early alloc")
    inadvertently switched the DT unflattening allocations from memblock to
    bootmem which doesn't work because the unflattening happens before
    bootmem is initialized. Swapping the order of bootmem init and
    unflattening could also fix this, but removing bootmem is desired. So
    enable NO_BOOTMEM on h8300 like other architectures have done.

    Fixes: 0fa1c579349f ("of/fdt: use memblock_virt_alloc for early alloc")
    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Signed-off-by: Rob Herring
    Signed-off-by: Yoshinori Sato

    Rob Herring
     
  • Since gcc 8.1 does not generate an assignment statement to er 0,
    we had to explicitly write it.

    Signed-off-by: Yoshinori Sato

    Yoshinori Sato
     

15 Jan, 2018

2 commits


02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

04 Jul, 2017

1 commit

  • Pull timer updates from Thomas Gleixner:
    "A rather large update for timers/timekeeping:

    - compat syscall consolidation (Al Viro)

    - Posix timer consolidation (Christoph Helwig / Thomas Gleixner)

    - Cleanup of the device tree based initialization for clockevents and
    clocksources (Daniel Lezcano)

    - Consolidation of the FTTMR010 clocksource/event driver (Linus
    Walleij)

    - The usual set of small fixes and updates all over the place"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (93 commits)
    timers: Make the cpu base lock raw
    clocksource/drivers/mips-gic-timer: Fix an error code in 'gic_clocksource_of_init()'
    clocksource/drivers/fsl_ftm_timer: Unmap region obtained by of_iomap
    clocksource/drivers/tcb_clksrc: Make IO endian agnostic
    clocksource/drivers/sun4i: Switch to the timer-of common init
    clocksource/drivers/timer-of: Fix invalid iomap check
    Revert "ktime: Simplify ktime_compare implementation"
    clocksource/drivers: Fix uninitialized variable use in timer_of_init
    kselftests: timers: Add test for frequency step
    kselftests: timers: Fix inconsistency-check to not ignore first timestamp
    time: Add warning about imminent deprecation of CONFIG_GENERIC_TIME_VSYSCALL_OLD
    time: Clean up CLOCK_MONOTONIC_RAW time handling
    posix-cpu-timers: Make timespec to nsec conversion safe
    itimer: Make timeval to nsec conversion range limited
    timers: Fix parameter description of try_to_del_timer_sync()
    ktime: Simplify ktime_compare implementation
    clocksource/drivers/fttmr010: Factor out clock read code
    clocksource/drivers/fttmr010: Implement delay timer
    clocksource/drivers: Add timer-of common init routine
    clocksource/drivers/tcb_clksrc: Save timer context on suspend/resume
    ...

    Linus Torvalds
     

29 Jun, 2017

1 commit

  • The only user of thread_saved_pc() in non-arch-specific code was removed
    in commit 8243d5597793 ("sched/core: Remove pointless printout in
    sched_show_task()"). Remove the implementations as well.

    Some architectures use thread_saved_pc() in their arch-specific code.
    Leave their thread_saved_pc() intact.

    Signed-off-by: Tobias Klauser
    Acked-by: Geert Uytterhoeven
    Cc: Ingo Molnar
    Signed-off-by: Linus Torvalds

    Tobias Klauser
     

14 Jun, 2017

1 commit


29 Mar, 2017

2 commits

  • Merge PTRACE_SETREGSET leakage fixes from Dave Martin:
    "This series is the collection of fixes I proposed on this topic, that
    have not yet appeared upstream or in the stable branches,

    The issue can leak kernel stack, but doesn't appear to allow userspace
    to attack the kernel directly. The affected architectures are c6x,
    h8300, metag, mips and sparc.

    [ Mark Salter points out that c6x has no MMU or other mechanism to
    prevent userspace access to kernel code or data on c6x, but it
    doesn't hurt to clean that case up too. ]

    The bugs arise from use of user_regset_copyin(). Users of
    user_regset_copyin() can work in one of two ways:

    1) Copy directly to thread_struct or equivalent. (This seems to be
    the design assumption of the regset API, and is the most common
    approach.)

    2) Copy to a local variable and then transfer to thread_struct. (A
    significant minority of cases.)

    Buggy code typically involves approach 2"

    * emailed patches from Dave Martin :
    sparc/ptrace: Preserve previous registers for short regset write
    mips/ptrace: Preserve previous registers for short regset write
    metag/ptrace: Reject partial NT_METAG_RPIPE writes
    metag/ptrace: Provide default TXSTATUS for short NT_PRSTATUS
    metag/ptrace: Preserve previous registers for short regset write
    h8300/ptrace: Fix incorrect register transfer count
    c6x/ptrace: Remove useless PTRACE_SETREGSET implementation

    Linus Torvalds
     
  • regs_set() and regs_get() are vulnerable to an off-by-1 buffer overrun
    if CONFIG_CPU_H8S is set, since this adds an extra entry to
    register_offset[] but not to user_regs_struct.

    So, iterate over user_regs_struct based on its actual size, not based on
    the length of register_offset[].

    Signed-off-by: Dave Martin
    Signed-off-by: Linus Torvalds

    Dave Martin
     

07 Mar, 2017

1 commit

  • Fix the following h8300 build failures:

    arch/h8300/kernel/ptrace_h.c: In function ‘trace_trap’:
    arch/h8300/kernel/ptrace_h.c:253:3: error: implicit declaration of function ‘force_sig’

    Signed-off-by: Guenter Roeck
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Yoshinori Sato
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Fixes: c3edc4010e9d ("sched/headers: Move task_struct::signal and ...")
    Link: http://lkml.kernel.org/r/1488738434-3504-1-git-send-email-linux@roeck-us.net
    Signed-off-by: Ingo Molnar

    Guenter Roeck
     

02 Mar, 2017

2 commits