31 Oct, 2020

1 commit

  • There are build issues in certain targets due to a recent change to the
    section declarations (33def8498fdde180023444b08e12b72a9efed41d). Until
    this is reconciled properly, revert to the older declaration style for a
    few files.

    Signed-off-by: J. Avila
    Change-Id: Id34aeca94bb395f79fb6a3710f92c6827964a79d

    J. Avila
     

26 Oct, 2020

1 commit

  • Use a more generic form for __section that requires quotes to avoid
    complications with clang and gcc differences.

    Remove the quote operator # from compiler_attributes.h __section macro.

    Convert all unquoted __section(foo) uses to quoted __section("foo").
    Also convert __attribute__((section("foo"))) uses to __section("foo")
    even if the __attribute__ has multiple list entry forms.

    Conversion done using the script at:

    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl

    Signed-off-by: Joe Perches
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Miguel Ojeda
    Signed-off-by: Linus Torvalds

    Joe Perches
     

19 Oct, 2020

1 commit

  • Pull UML updates from Richard Weinberger:

    - Improve support for non-glibc systems

    - Vector: Add support for scripting and dynamic tap devices

    - Various fixes for the vector networking driver

    - Various fixes for time travel mode

    * tag 'for-linus-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
    um: vector: Add dynamic tap interfaces and scripting
    um: Clean up stacktrace dump
    um: Fix incorrect assumptions about max pid length
    um: Remove dead usage of TIF_IA32
    um: Remove redundant NULL check
    um: change sigio_spinlock to a mutex
    um: time-travel: Return the sequence number in ACK messages
    um: time-travel: Fix IRQ handling in time_travel_handle_message()
    um: Allow static linking for non-glibc implementations
    um: Some fixes to build UML with musl
    um: vector: Use GFP_ATOMIC under spin lock
    um: Fix null pointer dereference in vector_user_bpf

    Linus Torvalds
     

12 Oct, 2020

2 commits

  • This seems like a dead artifact since TIF_IA32 is not even defined as a
    TI flag for UM. Looking back in git history, it made sense in the old
    days, but it is apparently not used since UM was split out of the x86
    arch/. It is also going away from the x86 tree soon.

    Also, I think the variable clean up it performs is not needed as 64-bit
    UML doesn't run 32-bit binaries as far as I can tell, and 32-bit UML
    has 32-bit ulong.

    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Richard Weinberger

    Gabriel Krisman Bertazi
     
  • musl toolchain and headers are a bit more strict. These fixes enable building
    UML with musl as well as seem not to break on glibc.

    Signed-off-by: Ignat Korchagin
    Tested-by: Brendan Higgins
    Signed-off-by: Richard Weinberger

    Ignat Korchagin
     

21 Aug, 2020

2 commits

  • All callers of these primitives will
    * discard anything we might've copied in case of error
    * ignore the csum value in case of error
    * always pass 0xffffffff as the initial sum, so the
    resulting csum value (in case of success, that is) will never be 0.

    That suggest the following calling conventions:
    * don't pass err_ptr - just return 0 on error.
    * don't bother with zeroing destination, etc. in case of error
    * don't pass the initial sum - just use 0xffffffff.

    This commit does the minimal conversion in the instances of csum_and_copy_...();
    the changes of actual asm code behind them are done later in the series.
    Note that this asm code is often shared with csum_partial_copy_nocheck();
    the difference is that csum_partial_copy_nocheck() passes 0 for initial
    sum while csum_and_copy_..._user() pass 0xffffffff. Fortunately, we are
    free to pass 0xffffffff in all cases and subsequent patches will use that
    freedom without any special comments.

    A part that could be split off: parisc and uml/i386 claimed to have
    csum_and_copy_to_user() instances of their own, but those were identical
    to the generic one, so we simply drop them. Not sure if it's worth
    a separate commit...

    Signed-off-by: Al Viro

    Al Viro
     
  • quite a few architectures have the same csum_partial_copy_nocheck() -
    simply memcpy() the data and then return the csum of the copy.

    hexagon, parisc, ia64, s390, um: explicitly spelled out that way.

    arc, arm64, csky, h8300, m68k/nommu, microblaze, mips/GENERIC_CSUM, nds32,
    nios2, openrisc, riscv, unicore32: end up picking the same thing spelled
    out in lib/checksum.h (with varying amounts of perversions along the way).

    everybody else (alpha, arm, c6x, m68k/mmu, mips/!GENERIC_CSUM, powerpc,
    sh, sparc, x86, xtensa) have non-generic variants. For all except c6x
    the declaration is in their asm/checksum.h. c6x uses the wrapper
    from asm-generic/checksum.h that would normally lead to the lib/checksum.h
    instance, but in case of c6x we end up using an asm function from arch/c6x
    instead.

    Screw that mess - have architectures with private instances define
    _HAVE_ARCH_CSUM_AND_COPY in their asm/checksum.h and have the default
    one right in net/checksum.h conditional on _HAVE_ARCH_CSUM_AND_COPY
    *not* defined.

    Signed-off-by: Al Viro

    Al Viro
     

07 Jul, 2020

1 commit

  • Some Makefiles already pass -fno-stack-protector unconditionally.
    For example, arch/arm64/kernel/vdso/Makefile, arch/x86/xen/Makefile.

    No problem report so far about hard-coding this option. So, we can
    assume all supported compilers know -fno-stack-protector.

    GCC 4.8 and Clang support this option (https://godbolt.org/z/_HDGzN)

    Get rid of cc-option from -fno-stack-protector.

    Remove CONFIG_CC_HAS_STACKPROTECTOR_NONE, which is always 'y'.

    Note:
    arch/mips/vdso/Makefile adds -fno-stack-protector twice, first
    unconditionally, and second conditionally. I removed the second one.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Kees Cook
    Acked-by: Ard Biesheuvel
    Reviewed-by: Nick Desaulniers

    Masahiro Yamada
     

10 Jun, 2020

1 commit

  • This change converts the existing mmap_sem rwsem calls to use the new mmap
    locking API instead.

    The change is generated using coccinelle with the following rule:

    // spatch --sp-file mmap_lock_api.cocci --in-place --include-headers --dir .

    @@
    expression mm;
    @@
    (
    -init_rwsem
    +mmap_init_lock
    |
    -down_write
    +mmap_write_lock
    |
    -down_write_killable
    +mmap_write_lock_killable
    |
    -down_write_trylock
    +mmap_write_trylock
    |
    -up_write
    +mmap_write_unlock
    |
    -downgrade_write
    +mmap_write_downgrade
    |
    -down_read
    +mmap_read_lock
    |
    -down_read_killable
    +mmap_read_lock_killable
    |
    -down_read_trylock
    +mmap_read_trylock
    |
    -up_read
    +mmap_read_unlock
    )
    -(&mm->mmap_sem)
    +(mm)

    Signed-off-by: Michel Lespinasse
    Signed-off-by: Andrew Morton
    Reviewed-by: Daniel Jordan
    Reviewed-by: Laurent Dufour
    Reviewed-by: Vlastimil Babka
    Cc: Davidlohr Bueso
    Cc: David Rientjes
    Cc: Hugh Dickins
    Cc: Jason Gunthorpe
    Cc: Jerome Glisse
    Cc: John Hubbard
    Cc: Liam Howlett
    Cc: Matthew Wilcox
    Cc: Peter Zijlstra
    Cc: Ying Han
    Link: http://lkml.kernel.org/r/20200520052908.204642-5-walken@google.com
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     

30 May, 2020

1 commit

  • now that can be done conveniently - all non-trivial cases have
    _HAVE_ARCH_COPY_AND_CSUM_FROM_USER defined, so the fallback in
    net/checksum.h is used only for dummy (copy_from_user, then
    csum_partial) implementation. Allowing us to get rid of all
    dummy instances, both of csum_and_copy_from_user() and
    csum_partial_copy_from_user().

    Signed-off-by: Al Viro

    Al Viro
     

11 Apr, 2020

1 commit

  • There are many platforms with exact same value for VM_DATA_DEFAULT_FLAGS
    This creates a default value for VM_DATA_DEFAULT_FLAGS in line with the
    existing VM_STACK_DEFAULT_FLAGS. While here, also define some more
    macros with standard VMA access flag combinations that are used
    frequently across many platforms. Apart from simplification, this
    reduces code duplication as well.

    Signed-off-by: Anshuman Khandual
    Signed-off-by: Andrew Morton
    Reviewed-by: Vlastimil Babka
    Acked-by: Geert Uytterhoeven
    Cc: Richard Henderson
    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Mark Salter
    Cc: Guo Ren
    Cc: Yoshinori Sato
    Cc: Brian Cain
    Cc: Tony Luck
    Cc: Michal Simek
    Cc: Ralf Baechle
    Cc: Paul Burton
    Cc: Nick Hu
    Cc: Ley Foon Tan
    Cc: Jonas Bonn
    Cc: "James E.J. Bottomley"
    Cc: Michael Ellerman
    Cc: Paul Walmsley
    Cc: Heiko Carstens
    Cc: Rich Felker
    Cc: "David S. Miller"
    Cc: Guan Xuetao
    Cc: Thomas Gleixner
    Cc: Jeff Dike
    Cc: Chris Zankel
    Link: http://lkml.kernel.org/r/1583391014-8170-2-git-send-email-anshuman.khandual@arm.com
    Signed-off-by: Linus Torvalds

    Anshuman Khandual
     

08 Apr, 2020

1 commit

  • Pull UML updates from Richard Weinberger:

    - New mode for time travel, external via virtio

    - Fixes for ubd to make sure no requests can get lost

    - Fixes for vector networking

    - Allow CONFIG_STATIC_LINK only when possible

    - Minor cleanups and fixes

    * tag 'for-linus-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
    um: Remove some unnecessary NULL checks in vector_user.c
    um: vector: Avoid NULL ptr deference if transport is unset
    um: Make CONFIG_STATIC_LINK actually static
    um: Implement cpu_relax() as ndelay(1) for time-travel
    um: Implement ndelay/udelay in time-travel mode
    um: Implement time-travel=ext
    um: virtio: Implement VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS
    um: time-travel: Rewrite as an event scheduler
    um: Move timer-internal.h to non-shared
    hostfs: Use kasprintf() instead of fixed buffer formatting
    um: falloc.h needs to be directly included for older libc
    um: ubd: Retry buffer read on any kind of error
    um: ubd: Prevent buffer overrun on command completion
    um: Fix overlapping ELF segments when statically linked
    um: Delete never executed timer
    um: Don't overwrite ethtool driver version
    um: Fix len of file in create_pid_file
    um: Don't use console_drivers directly
    um: Cleanup CONFIG_IOSCHED_CFQ

    Linus Torvalds
     

04 Apr, 2020

1 commit

  • Pull SPDX updates from Greg KH:
    "Here are three SPDX patches for 5.7-rc1.

    One fixes up the SPDX tag for a single driver, while the other two go
    through the tree and add SPDX tags for all of the .gitignore files as
    needed.

    Nothing too complex, but you will get a merge conflict with your
    current tree, that should be trivial to handle (one file modified by
    two things, one file deleted.)

    All three of these have been in linux-next for a while, with no
    reported issues other than the merge conflict"

    * tag 'spdx-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx:
    ASoC: MT6660: make spdxcheck.py happy
    .gitignore: add SPDX License Identifier
    .gitignore: remove too obvious comments

    Linus Torvalds
     

01 Apr, 2020

1 commit

  • Pull Kbuild updates from Masahiro Yamada:
    "Build system:

    - add CONFIG_UNUSED_KSYMS_WHITELIST, which will be useful to define a
    fixed set of export symbols for Generic Kernel Image (GKI)

    - allow to run 'make dt_binding_check' without .config

    - use full schema for checking DT examples in *.yaml files

    - make modpost fail for missing MODULE_IMPORT_NS(), which makes more
    sense because we know the produced modules are never loadable

    - Remove unused 'AS' variable

    Kconfig:

    - sanitize DEFCONFIG_LIST, and remove ARCH_DEFCONFIG from Kconfig
    files

    - relax the 'imply' behavior so that symbols implied by 'y' can
    become 'm'

    - make 'imply' obey 'depends on' in order to make 'imply' really weak

    Misc:

    - add documentation on building the kernel with Clang/LLVM

    - revive __HAVE_ARCH_STRLEN for 32bit sparc to use optimized strlen()

    - fix warning from deb-pkg builds when CONFIG_DEBUG_INFO=n

    - various script and Makefile cleanups"

    * tag 'kbuild-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits)
    Makefile: Update kselftest help information
    kbuild: deb-pkg: fix warning when CONFIG_DEBUG_INFO is unset
    kbuild: add outputmakefile to no-dot-config-targets
    kbuild: remove AS variable
    net: wan: wanxl: refactor the firmware rebuild rule
    net: wan: wanxl: use $(M68KCC) instead of $(M68KAS) for rebuilding firmware
    net: wan: wanxl: use allow to pass CROSS_COMPILE_M68k for rebuilding firmware
    kbuild: add comment about grouped target
    kbuild: add -Wall to KBUILD_HOSTCXXFLAGS
    kconfig: remove unused variable in qconf.cc
    sparc: revive __HAVE_ARCH_STRLEN for 32bit sparc
    kbuild: refactor Makefile.dtbinst more
    kbuild: compute the dtbs_install destination more simply
    Makefile: disallow data races on gcc-10 as well
    kconfig: make 'imply' obey the direct dependency
    kconfig: allow symbols implied by y to become m
    net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report()
    modpost: return error if module is missing ns imports and MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=n
    modpost: rework and consolidate logging interface
    kbuild: allow to run dt_binding_check without kernel configuration
    ...

    Linus Torvalds
     

30 Mar, 2020

1 commit

  • In time-travel mode, cpu_relax() currently does actual CPU relax,
    but that doesn't affect the simulation. Ideally, we wouldn't run
    anything that uses it in simulation, but if we actually have virtio
    devices combined with the same simulation it's possible. Implement
    cpu_relax() as ndelay(1) in this case, using time_travel_ndelay(1)
    directly to catch errors if this is used erroneously in builds that
    don't set CONFIG_UML_TIME_TRAVEL_SUPPORT.

    While at it, convert it to an __always_inline and also add that to
    rep_nop() like the original does now.

    Signed-off-by: Johannes Berg
    Signed-off-by: Richard Weinberger

    Johannes Berg
     

25 Mar, 2020

1 commit


21 Mar, 2020

4 commits

  • For the 32-bit syscall interface, 64-bit arguments (loff_t) are passed via
    a pair of 32-bit registers. These register pairs end up in consecutive stack
    slots, which matches the C ABI for 64-bit arguments. But when accessing the
    registers directly from pt_regs, the wrapper needs to manually reassemble the
    64-bit value. These wrappers already exist for 32-bit compat, so make them
    available to 32-bit native in preparation for enabling pt_regs-based syscalls.

    Signed-off-by: Brian Gerst
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Dominik Brodowski
    Link: https://lkml.kernel.org/r/20200313195144.164260-16-brgerst@gmail.com

    Brian Gerst
     
  • Add a __SYSCALL_COMMON() macro to the syscall table, which simplifies syscalltbl.sh.

    Signed-off-by: Brian Gerst
    Signed-off-by: Thomas Gleixner
    Link: https://lkml.kernel.org/r/20200313195144.164260-12-brgerst@gmail.com

    Brian Gerst
     
  • Syscall qualifier support is no longer needed.

    Signed-off-by: Brian Gerst
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Dominik Brodowski
    Link: https://lkml.kernel.org/r/20200313195144.164260-11-brgerst@gmail.com

    Brian Gerst
     
  • Instead of using an array in asm-offsets to calculate the max syscall
    number, calculate it when writing out the syscall headers.

    Signed-off-by: Brian Gerst
    Signed-off-by: Thomas Gleixner
    Link: https://lkml.kernel.org/r/20200313195144.164260-9-brgerst@gmail.com

    Brian Gerst
     

03 Mar, 2020

1 commit

  • Most of the Kconfig commands (except defconfig and all*config) read
    the .config file as a base set of CONFIG options.

    When it does not exist, the files in DEFCONFIG_LIST are searched in
    this order and loaded if found.

    I do not see much sense in the last two lines in DEFCONFIG_LIST.

    [1] ARCH_DEFCONFIG

    The entry for DEFCONFIG_LIST is guarded by 'depends on !UML'. So, the
    ARCH_DEFCONFIG definition in arch/x86/um/Kconfig is meaningless.

    arch/{sh,sparc,x86}/Kconfig define ARCH_DEFCONFIG depending on 32 or
    64 bit variant symbols. This is a little bit strange; ARCH_DEFCONFIG
    should be a fixed string because the base config file is loaded before
    the symbol evaluation stage.

    Using KBUILD_DEFCONFIG makes more sense because it is fixed before
    Kconfig is invoked. Fortunately, arch/{sh,sparc,x86}/Makefile define it
    in the same way, and it works as expected. Hence, replace ARCH_DEFCONFIG
    with "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)".

    [2] arch/$(ARCH)/defconfig

    This file path is no longer valid. The defconfig files are always located
    in the arch configs/ directories.

    $ find arch -name defconfig | sort
    arch/alpha/configs/defconfig
    arch/arm64/configs/defconfig
    arch/csky/configs/defconfig
    arch/nds32/configs/defconfig
    arch/riscv/configs/defconfig
    arch/s390/configs/defconfig
    arch/unicore32/configs/defconfig

    The path arch/*/configs/defconfig is already covered by
    "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)". So, this file path is
    not necessary.

    I moved the default KBUILD_DEFCONFIG to the top Makefile. Otherwise,
    the 7 architectures listed above would end up with endless loop of
    syncconfig.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

07 Jan, 2020

1 commit

  • This is required for clone3 which passes the TLS value through a
    struct rather than a register.

    Signed-off-by: Amanieu d'Antras
    Cc: linux-um@lists.infradead.org
    Cc: # 5.3.x
    Link: https://lore.kernel.org/r/20200104123928.1048822-1-amanieu@gmail.com
    Signed-off-by: Christian Brauner

    Amanieu d'Antras
     

02 Dec, 2019

1 commit

  • Pull y2038 cleanups from Arnd Bergmann:
    "y2038 syscall implementation cleanups

    This is a series of cleanups for the y2038 work, mostly intended for
    namespace cleaning: the kernel defines the traditional time_t, timeval
    and timespec types that often lead to y2038-unsafe code. Even though
    the unsafe usage is mostly gone from the kernel, having the types and
    associated functions around means that we can still grow new users,
    and that we may be missing conversions to safe types that actually
    matter.

    There are still a number of driver specific patches needed to get the
    last users of these types removed, those have been submitted to the
    respective maintainers"

    Link: https://lore.kernel.org/lkml/20191108210236.1296047-1-arnd@arndb.de/

    * tag 'y2038-cleanups-5.5' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground: (26 commits)
    y2038: alarm: fix half-second cut-off
    y2038: ipc: fix x32 ABI breakage
    y2038: fix typo in powerpc vdso "LOPART"
    y2038: allow disabling time32 system calls
    y2038: itimer: change implementation to timespec64
    y2038: move itimer reset into itimer.c
    y2038: use compat_{get,set}_itimer on alpha
    y2038: itimer: compat handling to itimer.c
    y2038: time: avoid timespec usage in settimeofday()
    y2038: timerfd: Use timespec64 internally
    y2038: elfcore: Use __kernel_old_timeval for process times
    y2038: make ns_to_compat_timeval use __kernel_old_timeval
    y2038: socket: use __kernel_old_timespec instead of timespec
    y2038: socket: remove timespec reference in timestamping
    y2038: syscalls: change remaining timeval to __kernel_old_timeval
    y2038: rusage: use __kernel_old_timeval
    y2038: uapi: change __kernel_time_t to __kernel_old_time_t
    y2038: stat: avoid 'time_t' in 'struct stat'
    y2038: ipc: remove __kernel_time_t reference from headers
    y2038: vdso: powerpc: avoid timespec references
    ...

    Linus Torvalds
     

15 Nov, 2019

3 commits

  • Only x86 uses the 'time' syscall in vdso, so change that to
    __kernel_old_time_t as a preparation for removing 'time_t' and
    '__kernel_time_t' later.

    Reviewed-by: Thomas Gleixner
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • In order to remove 'timespec' completely from the kernel, all
    internal uses should be converted to a y2038-safe type, while
    those that are only for compatibity with existing user space
    should be marked appropriately.

    Change vdso to use __kernel_old_timespec in order to avoid
    the deprecated type and mark these interfaces as outdated.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The gettimeofday() function in vdso uses the traditional 'timeval'
    structure layout, which will be incompatible with future versions of
    glibc on 32-bit architectures that use a 64-bit time_t.

    This interface is problematic for y2038, when time_t overflows on 32-bit
    architectures, but the plan so far is that a libc with 64-bit time_t
    will not call into the gettimeofday() vdso helper at all, and only
    have a method for entering clock_gettime(). This means we don't have
    to fix it here, though we probably want to add a new clock_gettime()
    entry point using a 64-bit version of 'struct timespec' at some point.

    Changing the vdso code to use __kernel_old_timeval helps isolate
    this usage from the other ones that still need to be fixed properly,
    and it gets us closer to removing the 'timeval' definition from the
    kernel sources.

    Reviewed-by: Thomas Gleixner
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

18 Oct, 2019

1 commit

  • Use the new SYM_DATA_START and SYM_DATA_END_LABEL macros for vdso_start.

    Result is:
    0000 2376 OBJECT GLOBAL DEFAULT 4 vdso_start
    0948 0 OBJECT GLOBAL DEFAULT 4 vdso_end

    Signed-off-by: Jiri Slaby
    Signed-off-by: Borislav Petkov
    Acked-by: Richard Weinberger
    Cc: Anton Ivanov
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Jeff Dike
    Cc: linux-arch@vger.kernel.org
    Cc: linux-um@lists.infradead.org
    Cc: Thomas Gleixner
    Cc: user-mode-linux-devel@lists.sourceforge.net
    Cc: user-mode-linux-user@lists.sourceforge.net
    Cc: x86-ml
    Link: https://lkml.kernel.org/r/20191011115108.12392-14-jslaby@suse.cz

    Jiri Slaby
     

16 Sep, 2019

3 commits

  • When we have virtio enabled, we must have real barriers since we
    may be running on an SMP machine (quite likely are, in fact), so
    the other process can be on another CPU.

    Since in any other case we don't really use DMA barriers, remove
    their override completely so real barriers will get used. In the
    future we might need them for other cases as well.

    Signed-off-by: Johannes Berg
    Signed-off-by: Richard Weinberger

    Johannes Berg
     
  • UML has its own platform-specific barrier.h under arch/x86/um/,
    which should get used. Fix the build system to use it, and then
    fix the barrier.h to actually compile.

    Signed-off-by: Johannes Berg
    Signed-off-by: Richard Weinberger

    Johannes Berg
     
  • Fix a warning about the function type being wrong.

    Signed-off-by: Johannes Berg
    Signed-off-by: Richard Weinberger

    Johannes Berg
     

09 Jul, 2019

1 commit

  • …iederm/user-namespace

    Pull force_sig() argument change from Eric Biederman:
    "A source of error over the years has been that force_sig has taken a
    task parameter when it is only safe to use force_sig with the current
    task.

    The force_sig function is built for delivering synchronous signals
    such as SIGSEGV where the userspace application caused a synchronous
    fault (such as a page fault) and the kernel responded with a signal.

    Because the name force_sig does not make this clear, and because the
    force_sig takes a task parameter the function force_sig has been
    abused for sending other kinds of signals over the years. Slowly those
    have been fixed when the oopses have been tracked down.

    This set of changes fixes the remaining abusers of force_sig and
    carefully rips out the task parameter from force_sig and friends
    making this kind of error almost impossible in the future"

    * 'siginfo-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (27 commits)
    signal/x86: Move tsk inside of CONFIG_MEMORY_FAILURE in do_sigbus
    signal: Remove the signal number and task parameters from force_sig_info
    signal: Factor force_sig_info_to_task out of force_sig_info
    signal: Generate the siginfo in force_sig
    signal: Move the computation of force into send_signal and correct it.
    signal: Properly set TRACE_SIGNAL_LOSE_INFO in __send_signal
    signal: Remove the task parameter from force_sig_fault
    signal: Use force_sig_fault_to_task for the two calls that don't deliver to current
    signal: Explicitly call force_sig_fault on current
    signal/unicore32: Remove tsk parameter from __do_user_fault
    signal/arm: Remove tsk parameter from __do_user_fault
    signal/arm: Remove tsk parameter from ptrace_break
    signal/nds32: Remove tsk parameter from send_sigtrap
    signal/riscv: Remove tsk parameter from do_trap
    signal/sh: Remove tsk parameter from force_sig_info_fault
    signal/um: Remove task parameter from send_sigtrap
    signal/x86: Remove task parameter from send_sigtrap
    signal: Remove task parameter from force_sig_mceerr
    signal: Remove task parameter from force_sig
    signal: Remove task parameter from force_sigsegv
    ...

    Linus Torvalds
     

19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 3029 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

27 May, 2019

1 commit


08 May, 2019

1 commit

  • Pull audit updates from Paul Moore:
    "We've got a reasonably broad set of audit patches for the v5.2 merge
    window, the highlights are below:

    - The biggest change, and the source of all the arch/* changes, is
    the patchset from Dmitry to help enable some of the work he is
    doing around PTRACE_GET_SYSCALL_INFO.

    To be honest, including this in the audit tree is a bit of a
    stretch, but it does help move audit a little further along towards
    proper syscall auditing for all arches, and everyone else seemed to
    agree that audit was a "good" spot for this to land (or maybe they
    just didn't want to merge it? dunno.).

    - We can now audit time/NTP adjustments.

    - We continue the work to connect associated audit records into a
    single event"

    * tag 'audit-pr-20190507' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit: (21 commits)
    audit: fix a memory leak bug
    ntp: Audit NTP parameters adjustment
    timekeeping: Audit clock adjustments
    audit: purge unnecessary list_empty calls
    audit: link integrity evm_write_xattrs record to syscall event
    syscall_get_arch: add "struct task_struct *" argument
    unicore32: define syscall_get_arch()
    Move EM_UNICORE to uapi/linux/elf-em.h
    nios2: define syscall_get_arch()
    nds32: define syscall_get_arch()
    Move EM_NDS32 to uapi/linux/elf-em.h
    m68k: define syscall_get_arch()
    hexagon: define syscall_get_arch()
    Move EM_HEXAGON to uapi/linux/elf-em.h
    h8300: define syscall_get_arch()
    c6x: define syscall_get_arch()
    arc: define syscall_get_arch()
    Move EM_ARCOMPACT and EM_ARCV2 to uapi/linux/elf-em.h
    audit: Make audit_log_cap and audit_copy_inode static
    audit: connect LOGIN record to its syscall record
    ...

    Linus Torvalds
     

07 May, 2019

1 commit

  • Pull x86 asm updates from Ingo Molnar:
    "This includes the following changes:

    - cpu_has() cleanups

    - sync_bitops.h modernization to the rmwcc.h facility, similarly to
    bitops.h

    - continued LTO annotations/fixes

    - misc cleanups and smaller cleanups"

    * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/um/vdso: Drop unnecessary cc-ldoption
    x86/vdso: Rename variable to fix -Wshadow warning
    x86/cpu/amd: Exclude 32bit only assembler from 64bit build
    x86/asm: Mark all top level asm statements as .text
    x86/build/vdso: Add FORCE to the build rule of %.so
    x86/asm: Modernize sync_bitops.h
    x86/mm: Convert some slow-path static_cpu_has() callers to boot_cpu_has()
    x86: Convert some slow-path static_cpu_has() callers to boot_cpu_has()
    x86/asm: Clarify static_cpu_has()'s intended use
    x86/uaccess: Fix implicit cast of __user pointer
    x86/cpufeature: Remove __pure attribute to _static_cpu_has()

    Linus Torvalds
     

24 Apr, 2019

1 commit

  • Towards the goal of removing cc-ldoption, it seems that --hash-style=
    was added to binutils 2.17.50.0.2 in 2006. The minimal required version
    of binutils for the kernel according to
    Documentation/process/changes.rst is 2.20.

    Suggested-by: Masahiro Yamada
    Signed-off-by: Nick Desaulniers
    Cc: Borislav Petkov
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: anton.ivanov@cambridgegreys.com
    Cc: clang-built-linux@googlegroups.com
    Cc: jdike@addtoit.com
    Cc: linux-um@lists.infradead.org
    Cc: richard@nod.at
    Link: http://lkml.kernel.org/r/20190423211554.1594-1-ndesaulniers@google.com
    Link: https://gcc.gnu.org/ml/gcc/2007-01/msg01141.html
    Signed-off-by: Ingo Molnar

    Nick Desaulniers
     

03 Apr, 2019

2 commits

  • Currently, we have two different implementation of rwsem:

    1) CONFIG_RWSEM_GENERIC_SPINLOCK (rwsem-spinlock.c)
    2) CONFIG_RWSEM_XCHGADD_ALGORITHM (rwsem-xadd.c)

    As we are going to use a single generic implementation for rwsem-xadd.c
    and no architecture-specific code will be needed, there is no point
    in keeping two different implementations of rwsem. In most cases, the
    performance of rwsem-spinlock.c will be worse. It also doesn't get all
    the performance tuning and optimizations that had been implemented in
    rwsem-xadd.c over the years.

    For simplication, we are going to remove rwsem-spinlock.c and make all
    architectures use a single implementation of rwsem - rwsem-xadd.c.

    All references to RWSEM_GENERIC_SPINLOCK and RWSEM_XCHGADD_ALGORITHM
    in the code are removed.

    Suggested-by: Peter Zijlstra
    Signed-off-by: Waiman Long
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Linus Torvalds
    Cc: Andrew Morton
    Cc: Arnd Bergmann
    Cc: Borislav Petkov
    Cc: Davidlohr Bueso
    Cc: H. Peter Anvin
    Cc: Paul E. McKenney
    Cc: Thomas Gleixner
    Cc: Tim Chen
    Cc: Will Deacon
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: linux-m68k@lists.linux-m68k.org
    Cc: linux-riscv@lists.infradead.org
    Cc: linux-um@lists.infradead.org
    Cc: linux-xtensa@linux-xtensa.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: nios2-dev@lists.rocketboards.org
    Cc: openrisc@lists.librecores.org
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Link: https://lkml.kernel.org/r/20190322143008.21313-3-longman@redhat.com
    Signed-off-by: Ingo Molnar

    Waiman Long
     
  • As the generic rwsem-xadd code is using the appropriate acquire and
    release versions of the atomic operations, the arch specific rwsem.h
    files will not be that much faster than the generic code as long as the
    atomic functions are properly implemented. So we can remove those arch
    specific rwsem.h and stop building asm/rwsem.h to reduce maintenance
    effort.

    Currently, only x86, alpha and ia64 have implemented architecture
    specific fast paths. I don't have access to alpha and ia64 systems for
    testing, but they are legacy systems that are not likely to be updated
    to the latest kernel anyway.

    By using a rwsem microbenchmark, the total locking rates on a 4-socket
    56-core 112-thread x86-64 system before and after the patch were as
    follows (mixed means equal # of read and write locks):

    Before Patch After Patch
    # of Threads wlock rlock mixed wlock rlock mixed
    ------------ ----- ----- ----- ----- ----- -----
    1 29,201 30,143 29,458 28,615 30,172 29,201
    2 6,807 13,299 1,171 7,725 15,025 1,804
    4 6,504 12,755 1,520 7,127 14,286 1,345
    8 6,762 13,412 764 6,826 13,652 726
    16 6,693 15,408 662 6,599 15,938 626
    32 6,145 15,286 496 5,549 15,487 511
    64 5,812 15,495 60 5,858 15,572 60

    There were some run-to-run variations for the multi-thread tests. For
    x86-64, using the generic C code fast path seems to be a little bit
    faster than the assembly version with low lock contention. Looking at
    the assembly version of the fast paths, there are assembly to/from C
    code wrappers that save and restore all the callee-clobbered registers
    (7 registers on x86-64). The assembly generated from the generic C
    code doesn't need to do that. That may explain the slight performance
    gain here.

    The generic asm rwsem.h can also be merged into kernel/locking/rwsem.h
    with no code change as no other code other than those under
    kernel/locking needs to access the internal rwsem macros and functions.

    Signed-off-by: Waiman Long
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Linus Torvalds
    Cc: Andrew Morton
    Cc: Arnd Bergmann
    Cc: Borislav Petkov
    Cc: Davidlohr Bueso
    Cc: H. Peter Anvin
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Tim Chen
    Cc: Will Deacon
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: linux-m68k@lists.linux-m68k.org
    Cc: linux-riscv@lists.infradead.org
    Cc: linux-um@lists.infradead.org
    Cc: linux-xtensa@linux-xtensa.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: nios2-dev@lists.rocketboards.org
    Cc: openrisc@lists.librecores.org
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Link: https://lkml.kernel.org/r/20190322143008.21313-2-longman@redhat.com
    Signed-off-by: Ingo Molnar

    Waiman Long
     

21 Mar, 2019

1 commit

  • This argument is required to extend the generic ptrace API with
    PTRACE_GET_SYSCALL_INFO request: syscall_get_arch() is going
    to be called from ptrace_request() along with syscall_get_nr(),
    syscall_get_arguments(), syscall_get_error(), and
    syscall_get_return_value() functions with a tracee as their argument.

    The primary intent is that the triple (audit_arch, syscall_nr, arg1..arg6)
    should describe what system call is being called and what its arguments
    are.

    Reverts: 5e937a9ae913 ("syscall_get_arch: remove useless function arguments")
    Reverts: 1002d94d3076 ("syscall.h: fix doc text for syscall_get_arch()")
    Reviewed-by: Andy Lutomirski # for x86
    Reviewed-by: Palmer Dabbelt
    Acked-by: Paul Moore
    Acked-by: Paul Burton # MIPS parts
    Acked-by: Michael Ellerman (powerpc)
    Acked-by: Kees Cook # seccomp parts
    Acked-by: Mark Salter # for the c6x bit
    Cc: Elvira Khabirova
    Cc: Eugene Syromyatnikov
    Cc: Oleg Nesterov
    Cc: x86@kernel.org
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-snps-arc@lists.infradead.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Cc: linux-hexagon@vger.kernel.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-m68k@lists.linux-m68k.org
    Cc: linux-mips@vger.kernel.org
    Cc: nios2-dev@lists.rocketboards.org
    Cc: openrisc@lists.librecores.org
    Cc: linux-parisc@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-riscv@lists.infradead.org
    Cc: linux-s390@vger.kernel.org
    Cc: linux-sh@vger.kernel.org
    Cc: sparclinux@vger.kernel.org
    Cc: linux-um@lists.infradead.org
    Cc: linux-xtensa@linux-xtensa.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-audit@redhat.com
    Signed-off-by: Dmitry V. Levin
    Signed-off-by: Paul Moore

    Dmitry V. Levin