17 Mar, 2019

2 commits

  • Pull pidfd system call from Christian Brauner:
    "This introduces the ability to use file descriptors from /proc//
    as stable handles on struct pid. Even if a pid is recycled the handle
    will not change. For a start these fds can be used to send signals to
    the processes they refer to.

    With the ability to use /proc/ fds as stable handles on struct
    pid we can fix a long-standing issue where after a process has exited
    its pid can be reused by another process. If a caller sends a signal
    to a reused pid it will end up signaling the wrong process.

    With this patchset we enable a variety of use cases. One obvious
    example is that we can now safely delegate an important part of
    process management - sending signals - to processes other than the
    parent of a given process by sending file descriptors around via scm
    rights and not fearing that the given process will have been recycled
    in the meantime. It also allows for easy testing whether a given
    process is still alive or not by sending signal 0 to a pidfd which is
    quite handy.

    There has been some interest in this feature e.g. from systems
    management (systemd, glibc) and container managers. I have requested
    and gotten comments from glibc to make sure that this syscall is
    suitable for their needs as well. In the future I expect it to take on
    most other pid-based signal syscalls. But such features are left for
    the future once they are needed.

    This has been sitting in linux-next for quite a while and has not
    caused any issues. It comes with selftests which verify basic
    functionality and also test that a recycled pid cannot be signaled via
    a pidfd.

    Jon has written about a prior version of this patchset. It should
    cover the basic functionality since not a lot has changed since then:

    https://lwn.net/Articles/773459/

    The commit message for the syscall itself is extensively documenting
    the syscall, including it's functionality and extensibility"

    * tag 'pidfd-v5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
    selftests: add tests for pidfd_send_signal()
    signal: add pidfd_send_signal() syscall

    Linus Torvalds
     
  • Pull device-dax updates from Dan Williams:
    "New device-dax infrastructure to allow persistent memory and other
    "reserved" / performance differentiated memories, to be assigned to
    the core-mm as "System RAM".

    Some users want to use persistent memory as additional volatile
    memory. They are willing to cope with potential performance
    differences, for example between DRAM and 3D Xpoint, and want to use
    typical Linux memory management apis rather than a userspace memory
    allocator layered over an mmap() of a dax file. The administration
    model is to decide how much Persistent Memory (pmem) to use as System
    RAM, create a device-dax-mode namespace of that size, and then assign
    it to the core-mm. The rationale for device-dax is that it is a
    generic memory-mapping driver that can be layered over any "special
    purpose" memory, not just pmem. On subsequent boots udev rules can be
    used to restore the memory assignment.

    One implication of using pmem as RAM is that mlock() no longer keeps
    data off persistent media. For this reason it is recommended to enable
    NVDIMM Security (previously merged for 5.0) to encrypt pmem contents
    at rest. We considered making this recommendation an actively enforced
    requirement, but in the end decided to leave it as a distribution /
    administrator policy to allow for emulation and test environments that
    lack security capable NVDIMMs.

    Summary:

    - Replace the /sys/class/dax device model with /sys/bus/dax, and
    include a compat driver so distributions can opt-in to the new ABI.

    - Allow for an alternative driver for the device-dax address-range

    - Introduce the 'kmem' driver to hotplug / assign a device-dax
    address-range to the core-mm.

    - Arrange for the device-dax target-node to be onlined so that the
    newly added memory range can be uniquely referenced by numa apis"

    NOTE! I'm not entirely happy with the whole "PMEM as RAM" model because
    we currently have special - and very annoying rules in the kernel about
    accessing PMEM only with the "MC safe" accessors, because machine checks
    inside the regular repeat string copy functions can be fatal in some
    (not described) circumstances.

    And apparently the PMEM modules can cause that a lot more than regular
    RAM. The argument is that this happens because PMEM doesn't necessarily
    get scrubbed at boot like RAM does, but that is planned to be added for
    the user space tooling.

    Quoting Dan from another email:
    "The exposure can be reduced in the volatile-RAM case by scanning for
    and clearing errors before it is onlined as RAM. The userspace tooling
    for that can be in place before v5.1-final. There's also runtime
    notifications of errors via acpi_nfit_uc_error_notify() from
    background scrubbers on the DIMM devices. With that mechanism the
    kernel could proactively clear newly discovered poison in the volatile
    case, but that would be additional development more suitable for v5.2.

    I understand the concern, and the need to highlight this issue by
    tapping the brakes on feature development, but I don't see PMEM as RAM
    making the situation worse when the exposure is also there via DAX in
    the PMEM case. Volatile-RAM is arguably a safer use case since it's
    possible to repair pages where the persistent case needs active
    application coordination"

    * tag 'devdax-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
    device-dax: "Hotplug" persistent memory for use like normal RAM
    mm/resource: Let walk_system_ram_range() search child resources
    mm/memory-hotplug: Allow memory resources to be children
    mm/resource: Move HMM pr_debug() deeper into resource code
    mm/resource: Return real error codes from walk failures
    device-dax: Add a 'modalias' attribute to DAX 'bus' devices
    device-dax: Add a 'target_node' attribute
    device-dax: Auto-bind device after successful new_id
    acpi/nfit, device-dax: Identify differentiated memory with a unique numa-node
    device-dax: Add /sys/class/dax backwards compatibility
    device-dax: Add support for a dax override driver
    device-dax: Move resource pinning+mapping into the common driver
    device-dax: Introduce bus + driver model
    device-dax: Start defining a dax bus model
    device-dax: Remove multi-resource infrastructure
    device-dax: Kill dax_region base
    device-dax: Kill dax_region ida

    Linus Torvalds
     

16 Mar, 2019

1 commit

  • Pull KVM updates from Paolo Bonzini:
    "ARM:
    - some cleanups
    - direct physical timer assignment
    - cache sanitization for 32-bit guests

    s390:
    - interrupt cleanup
    - introduction of the Guest Information Block
    - preparation for processor subfunctions in cpu models

    PPC:
    - bug fixes and improvements, especially related to machine checks
    and protection keys

    x86:
    - many, many cleanups, including removing a bunch of MMU code for
    unnecessary optimizations
    - AVIC fixes

    Generic:
    - memcg accounting"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (147 commits)
    kvm: vmx: fix formatting of a comment
    KVM: doc: Document the life cycle of a VM and its resources
    MAINTAINERS: Add KVM selftests to existing KVM entry
    Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()"
    KVM: PPC: Book3S: Add count cache flush parameters to kvmppc_get_cpu_char()
    KVM: PPC: Fix compilation when KVM is not enabled
    KVM: Minor cleanups for kvm_main.c
    KVM: s390: add debug logging for cpu model subfunctions
    KVM: s390: implement subfunction processor calls
    arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2
    KVM: arm/arm64: Remove unused timer variable
    KVM: PPC: Book3S: Improve KVM reference counting
    KVM: PPC: Book3S HV: Fix build failure without IOMMU support
    Revert "KVM: Eliminate extra function calls in kvm_get_dirty_log_protect()"
    x86: kvmguest: use TSC clocksource if invariant TSC is exposed
    KVM: Never start grow vCPU halt_poll_ns from value below halt_poll_ns_grow_start
    KVM: Expose the initial start value in grow_halt_poll_ns() as a module parameter
    KVM: grow_halt_poll_ns() should never shrink vCPU halt_poll_ns
    KVM: x86/mmu: Consolidate kvm_mmu_zap_all() and kvm_mmu_zap_mmio_sptes()
    KVM: x86/mmu: WARN if zapping a MMIO spte results in zapping children
    ...

    Linus Torvalds
     

15 Mar, 2019

3 commits

  • Merge misc patches from Andrew Morton:

    - a little bit more MM

    - a few fixups

    [ The "little bit more MM" is actually just one of the three patches
    Andrew sent for mm/filemap.c, I'm still mulling over two more of them
    from Josef Bacik - Linus ]

    * emailed patches from Andrew Morton :
    include/linux/swap.h: use offsetof() instead of custom __swapoffset macro
    tools/testing/selftests/proc/proc-pid-vm.c: test with vsyscall in mind
    zram: default to lzo-rle instead of lzo
    filemap: pass vm_fault to the mmap ra helpers

    Linus Torvalds
     
  • : selftests: proc: proc-pid-vm
    : ========================================
    : proc-pid-vm: proc-pid-vm.c:277: main: Assertion `rv == strlen(buf0)' failed.
    : Aborted

    Because the vsyscall mapping is enabled. Read from vsyscall page to tell
    if vsyscall is being used.

    Link: http://lkml.kernel.org/r/20190307183204.GA11405@avx2
    Link: http://lkml.kernel.org/r/20190219094722.GB28258@shao2-debian
    Fixes: 34aab6bec23e7e9 ("proc: test /proc/*/maps, smaps, smaps_rollup, statm")
    Signed-off-by: Alexey Dobriyan
    Reported-by: kernel test robot
    Cc: Shuah Khan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Pull more power management updates from Rafael Wysocki:
    "These are mostly fixes and cleanups on top of the previously merged
    power management material for 5.1-rc1 with one cpupower utility update
    that wasn't pushed earlier due to unfortunate timing.

    Specifics:

    - Fix registration of new cpuidle governors partially broken during
    the 5.0 development cycle by mistake (Rafael Wysocki).

    - Avoid integer overflows in the menu cpuidle governor by making it
    discard the overflowing data points upfront (Rafael Wysocki).

    - Fix minor mistake in the recent update of the iowait boost
    computation in the intel_pstate driver (Rafael Wysocki).

    - Drop incorrect __init annotation from one function in the pxa2xx
    cpufreq driver (Arnd Bergmann).

    - Fix the operating performance points (OPP) framework initialization
    for devices in multiple power domains if only one of them is
    scalable (Rajendra Nayak).

    - Fix mistake in dev_pm_opp_set_rate() which causes it to skip
    updating the performance state if the new frequency is the same as
    the old one (Viresh Kumar).

    - Rework the cancellation of wakeup source timers to avoid potential
    issues with it and do some cleanups unlocked by that change (Viresh
    Kumar, Rafael Wysocki).

    - Clean up the code computing the active/suspended time of devices in
    the PM-runtime framework after recent changes (Ulf Hansson).

    - Make the power management infrastructure code use pr_fmt()
    consistently (Joe Perches).

    - Clean up the generic power domains (genpd) framework somewhat
    (Aisheng Dong).

    - Improve kerneldoc comments for two functions in the cpufreq core
    (Rafael Wysocki).

    - Fix typo in a PM QoS file description comment (Aisheng Dong).

    - Update the handling of CPU boost frequencies in the cpupower
    utility (Abhishek Goel)"

    * tag 'pm-5.1-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpuidle: governor: Add new governors to cpuidle_governors again
    cpufreq: intel_pstate: Fix up iowait_boost computation
    PM / OPP: Update performance state when freq == old_freq
    PM / wakeup: Drop wakeup_source_drop()
    PM / wakeup: Rework wakeup source timer cancellation
    PM / domains: Remove one unnecessary blank line
    PM / Domains: Return early for all errors in _genpd_power_off()
    PM / Domains: Improve warn for multiple states but no governor
    OPP: Fix handling of multiple power domains
    PM / QoS: Fix typo in file description
    cpufreq: pxa2xx: remove incorrect __init annotation
    PM-runtime: Call pm_runtime_active|suspended_time() from sysfs
    PM-runtime: Consolidate code to get active/suspended time
    PM: Add and use pr_fmt()
    cpufreq: Improve kerneldoc comments for cpufreq_cpu_get/put()
    cpuidle: menu: Avoid overflows when computing variance
    tools/power/cpupower: Display boost frequency separately

    Linus Torvalds
     

14 Mar, 2019

1 commit


13 Mar, 2019

3 commits

  • Merge misc updates from Andrew Morton:

    - a few misc things

    - the rest of MM

    - remove flex_arrays, replace with new simple radix-tree implementation

    * emailed patches from Andrew Morton : (38 commits)
    Drop flex_arrays
    sctp: convert to genradix
    proc: commit to genradix
    generic radix trees
    selinux: convert to kvmalloc
    md: convert to kvmalloc
    openvswitch: convert to kvmalloc
    of: fix kmemleak crash caused by imbalance in early memory reservation
    mm: memblock: update comments and kernel-doc
    memblock: split checks whether a region should be skipped to a helper function
    memblock: remove memblock_{set,clear}_region_flags
    memblock: drop memblock_alloc_*_nopanic() variants
    memblock: memblock_alloc_try_nid: don't panic
    treewide: add checks for the return value of memblock_alloc*()
    swiotlb: add checks for the return value of memblock_alloc*()
    init/main: add checks for the return value of memblock_alloc*()
    mm/percpu: add checks for the return value of memblock_alloc*()
    sparc: add checks for the return value of memblock_alloc*()
    ia64: add checks for the return value of memblock_alloc*()
    arch: don't memset(0) memory returned by memblock_alloc()
    ...

    Linus Torvalds
     
  • All existing users have been converted to generic radix trees

    Link: http://lkml.kernel.org/r/20181217131929.11727-8-kent.overstreet@gmail.com
    Signed-off-by: Kent Overstreet
    Acked-by: Dave Hansen
    Cc: Alexey Dobriyan
    Cc: Al Viro
    Cc: Eric Paris
    Cc: Marcelo Ricardo Leitner
    Cc: Matthew Wilcox
    Cc: Neil Horman
    Cc: Paul Moore
    Cc: Pravin B Shelar
    Cc: Shaohua Li
    Cc: Stephen Smalley
    Cc: Vlad Yasevich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kent Overstreet
     
  • Patch series "sysctl: fix range-checking in do_proc_dointvec_minmax_conv()", v2.

    After being left with an unusable system after a typo executing
    something like 'echo $((1< /proc/sys/vm/max_map_count', I found
    that do_proc_dointvec_minmax_conv() was missing a check to ensure that
    the converted value actually fits in an int.

    The first of the following patches enhances the sysctl selftest such
    that it detects this problem; the second provides a minimal fix
    (suitable for -stable) such that the selftest passes. The third patch
    then performs a more thorough refactoring to eliminate the code
    duplication that led to the bug in the first place (maintaining the
    passing status of the selftest).

    This patch (of 3):

    At present this exposes a bug in do_proc_dointvec_minmax_conv() (it
    fails to check for values that are too wide to fit in an int).

    Link: http://lkml.kernel.org/r/20190207123426.9202-2-zev@bewilderbeest.net
    Signed-off-by: Zev Weiss
    Cc: Luis Chamberlain
    Cc: Kees Cook
    Cc: Brendan Higgins
    Cc: Iurii Zaikin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zev Weiss
     

12 Mar, 2019

2 commits

  • Pull tracing updates from Steven Rostedt:
    "The biggest change for this release is in the histogram code:

    - Add "onchange(var)" histogram handler that executes a action when
    $var changes.

    - Add new "snapshot()" action for histogram handlers, that causes a
    snapshot of the ring buffer when triggered. ie.
    onchange(var).snapshot() will trigger a snapshot if var changes.

    - Add alternative for "trace()" action. Currently, to trigger a
    synthetic event, the name of that event is used as the handler
    name, which is inconsistent with the other actions.
    onchange(var).synthetic(param) where it can now be
    onchange(var).trace(synthetic, param). The older method will still
    be allowed, as long as the synthetic events do not overlap with
    other handler names.

    - The histogram documentation at testcases were updated for the new
    changes.

    Outside of the histogram code, we have:

    - Added a quicker way to enable set_ftrace_filter files, that will
    make it much quicker to bisect tracing a function that shouldn't be
    traced and crashes the kernel. (You can echo in numbers to
    set_ftrace_filter, and it will select the corresponding function
    that is in available_filter_functions).

    - Some better displaying of the tracing data (and more information
    was added).

    The rest are small fixes and more clean ups to the code"

    * tag 'trace-v5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (37 commits)
    tracing: Use strncpy instead of memcpy when copying comm in trace.c
    tracing: Use strncpy instead of memcpy when copying comm for hist triggers
    tracing: Use strncpy instead of memcpy for string keys in hist triggers
    tracing: Use str_has_prefix() in synth_event_create()
    x86/ftrace: Fix warning and considate ftrace_jmp_replace() and ftrace_call_replace()
    tracing/perf: Use strndup_user() instead of buggy open-coded version
    doc: trace: Fix documentation for uprobe_profile
    tracing: Fix spelling mistake: "analagous" -> "analogous"
    tracing: Comment why cond_snapshot is checked outside of max_lock protection
    tracing: Add hist trigger action 'expected fail' test case
    tracing: Add alternative synthetic event trace action test case
    tracing: Add hist trigger onchange() handler test case
    tracing: Add hist trigger snapshot() action test case
    tracing: Add SPDX license GPL-2.0 license identifier to inter-event testcases
    tracing: Add alternative synthetic event trace action syntax
    tracing: Add hist trigger onchange() handler Documentation
    tracing: Add hist trigger onchange() handler
    tracing: Add hist trigger snapshot() action Documentation
    tracing: Add hist trigger snapshot() action
    tracing: Add conditional snapshot
    ...

    Linus Torvalds
     
  • Several of these scripts have come in as old-fashioned patches, and in
    the process lost the executable bit. In most cases it doesn't matter,
    since the test infrastructure will explicitly execute them using the
    proper shell interpreter, but at least in the case of the new vmalloc
    test, the lack of execurable bit caused the test to fail with

    ./run_vmtests: line 217: ./test_vmalloc.sh: Permission denied

    because of the lacking exectuable permissions bit.

    This patch fixes that up.

    NOTE! A simple script to look for non-executable scripts in the kernel,
    something like

    git ls-files --stage -- '*.sh' |
    grep 100644 |
    cut -f2 |
    xargs grep -l '#!'

    will show that there's a lot of other files that _look_ like executable
    shell scripts, but don't have the executable bit set. I considered just
    scripting them all to be executable, but since it looks like the common
    pattern is to not really require it, I'm just doing the minimal fix as
    pointed out by the kernel test robot.

    Fixes: a05ef00c9790 ("selftests/vm: add script helper for CONFIG_TEST_VMALLOC_MODULE")
    Reported-by: kernel test robot
    Cc: Andrew Morton
    Cc: Uladzislau Rezki
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

11 Mar, 2019

3 commits

  • Pull networking fixes from David Miller:
    "First batch of fixes in the new merge window:

    1) Double dst_cache free in act_tunnel_key, from Wenxu.

    2) Avoid NULL deref in IN_DEV_MFORWARD() by failing early in the
    ip_route_input_rcu() path, from Paolo Abeni.

    3) Fix appletalk compile regression, from Arnd Bergmann.

    4) If SLAB objects reach the TCP sendpage method we are in serious
    trouble, so put a debugging check there. From Vasily Averin.

    5) Memory leak in hsr layer, from Mao Wenan.

    6) Only test GSO type on GSO packets, from Willem de Bruijn.

    7) Fix crash in xsk_diag_put_umem(), from Eric Dumazet.

    8) Fix VNIC mailbox length in nfp, from Dirk van der Merwe.

    9) Fix race in ipv4 route exception handling, from Xin Long.

    10) Missing DMA memory barrier in hns3 driver, from Jian Shen.

    11) Use after free in __tcf_chain_put(), from Vlad Buslov.

    12) Handle inet_csk_reqsk_queue_add() failures, from Guillaume Nault.

    13) Return value correction when ip_mc_may_pull() fails, from Eric
    Dumazet.

    14) Use after free in x25_device_event(), also from Eric"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (72 commits)
    gro_cells: make sure device is up in gro_cells_receive()
    vxlan: test dev->flags & IFF_UP before calling gro_cells_receive()
    net/x25: fix use-after-free in x25_device_event()
    isdn: mISDNinfineon: fix potential NULL pointer dereference
    net: hns3: fix to stop multiple HNS reset due to the AER changes
    ip: fix ip_mc_may_pull() return value
    net: keep refcount warning in reqsk_free()
    net: stmmac: Avoid one more sometimes uninitialized Clang warning
    net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports
    rxrpc: Fix client call queueing, waiting for channel
    tcp: handle inet_csk_reqsk_queue_add() failures
    net: ethernet: sun: Zero initialize class in default case in niu_add_ethtool_tcam_entry
    8139too : Add support for U.S. Robotics USR997901A 10/100 Cardbus NIC
    fou, fou6: avoid uninit-value in gue_err() and gue6_err()
    net: sched: fix potential use-after-free in __tcf_chain_put()
    vhost: silence an unused-variable warning
    vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock
    connector: fix unsafe usage of ->real_parent
    vxlan: do not need BH again in vxlan_cleanup()
    net: hns3: add dma_rmb() for rx description
    ...

    Linus Torvalds
     
  • Pull tpm updates from James Morris:

    - Clean up the transmission flow

    Cleaned up the whole transmission flow. Locking of the chip is now
    done in the level of tpm_try_get_ops() and tpm_put_ops() instead
    taking the chip lock inside tpm_transmit(). The nested calls inside
    tpm_transmit(), used with the resource manager, have been refactored
    out.

    Should make easier to perform more complex transactions with the TPM
    without making the subsystem a bigger mess (e.g. encrypted channel
    patches by James Bottomley).

    - PPI 1.3 support

    TPM PPI 1.3 introduces an additional optional command parameter that
    may be needed for some commands. Display the parameter if the command
    requires such a parameter. Only command 23 (SetPCRBanks) needs one.

    The PPI request file will show output like this then:

    # echo "23 16" > request
    # cat request
    23 16

    # echo "5" > request
    # cat request
    5

    - Extend all PCR banks in IMA

    Instead of static PCR banks array, the array of available PCR banks
    is now allocated dynamically. The digests sizes are determined
    dynamically using a probe PCR read without relying crypto's static
    list of hash algorithms.

    This should finally make sealing of measurements in IMA safe and
    secure.

    - TPM 2.0 selftests

    Added a test suite to tools/testing/selftests/tpm2 previously outside
    of the kernel tree: https://github.com/jsakkine-intel/tpm2-scripts

    * 'next-tpm' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (37 commits)
    tpm/ppi: Enable submission of optional command parameter for PPI 1.3
    tpm/ppi: Possibly show command parameter if TPM PPI 1.3 is used
    tpm/ppi: Display up to 101 operations as define for version 1.3
    tpm/ppi: rename TPM_PPI_REVISION_ID to TPM_PPI_REVISION_ID_1
    tpm/ppi: pass function revision ID to tpm_eval_dsm()
    tpm: pass an array of tpm_extend_digest structures to tpm_pcr_extend()
    KEYS: trusted: explicitly use tpm_chip structure from tpm_default_chip()
    tpm: move tpm_chip definition to include/linux/tpm.h
    tpm: retrieve digest size of unknown algorithms with PCR read
    tpm: rename and export tpm2_digest and tpm2_algorithms
    tpm: dynamically allocate the allocated_banks array
    tpm: remove @flags from tpm_transmit()
    tpm: take TPM chip power gating out of tpm_transmit()
    tpm: introduce tpm_chip_start() and tpm_chip_stop()
    tpm: remove TPM_TRANSMIT_UNLOCKED flag
    tpm: use tpm_try_get_ops() in tpm-sysfs.c.
    tpm: remove @space from tpm_transmit()
    tpm: move TPM space code out of tpm_transmit()
    tpm: move tpm_validate_commmand() to tpm2-space.c
    tpm: clean up tpm_try_transmit() error handling flow
    ...

    Linus Torvalds
     
  • Pull perf updates from Thomas Gleixner:
    "Perf updates and fixes:

    Kernel:
    - Handle events which have the bpf_event attribute set as side band
    events as they carry information about BPF programs.
    - Add missing switch-case fall-through comments

    Libraries:
    - Fix leaks and double frees in error code paths.
    - Prevent buffer overflows in libtraceevent

    Tools:
    - Improvements in handling Intel BT/PTS
    - Add BTF ELF markers to perf trace BPF programs to improve output
    - Support --time, --cpu, --pid and --tid filters for perf diff
    - Calculate the column width in perf annotate as the hardcoded 6
    characters for the instruction are not sufficient
    - Small fixes all over the place"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (38 commits)
    perf/core: Mark expected switch fall-through
    perf/x86/intel/uncore: Fix client IMC events return huge result
    perf/ring_buffer: Use high order allocations for AUX buffers optimistically
    perf data: Force perf_data__open|close zero data->file.path
    perf session: Fix double free in perf_data__close
    perf evsel: Probe for precise_ip with simple attr
    perf tools: Read and store caps/max_precise in perf_pmu
    perf hist: Fix memory leak of srcline
    perf hist: Add error path into hist_entry__init
    perf c2c: Fix c2c report for empty numa node
    perf script python: Add Python3 support to intel-pt-events.py
    perf script python: Add Python3 support to event_analyzing_sample.py
    perf script python: add Python3 support to check-perf-trace.py
    perf script python: Add Python3 support to futex-contention.py
    perf script python: Remove mixed indentation
    perf diff: Support --pid/--tid filter options
    perf diff: Support --cpu filter option
    perf diff: Support --time filter option
    perf thread: Generalize function to copy from thread addr space from intel-bts code
    perf annotate: Calculate the max instruction name, align column to that
    ...

    Linus Torvalds
     

10 Mar, 2019

4 commits

  • Pull media updates from Mauro Carvalho Chehab:

    - remove sensor drivers that got converted from soc_camera

    - remaining soc_camera drivers got moved to staging

    - some documentation cleanups and improvements

    - the imx staging driver now supports imx7

    - the ov9640, mt9m001 and mt9m111 got converted from soc_camera

    - the vim2m driver now does what a m2m convert driver expects to do

    - epoll() fixes on media subsystems

    - several drivers fixes, typos, cleanups and improvements

    * tag 'media/v5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (346 commits)
    media: dvb/earth-pt1: fix wrong initialization for demod blocks
    media: vim2m: Address some coding style issues
    media: vim2m: don't use BUG()
    media: vim2m: speedup passthrough copy
    media: vim2m: add an horizontal scaler
    media: vim2m: don't accept YUYV anymore as output format
    media: vim2m: add vertical linear scaler
    media: vim2m: better handle cap/out buffers with different sizes
    media: vim2m: use different framesizes for bayer formats
    media: vim2m: add support for VIDIOC_ENUM_FRAMESIZES
    media: vim2m: ensure that width is multiple of two
    media: vim2m: improve debug messages
    media: vim2m: add bayer capture formats
    media: a few more typos at staging, pci, platform, radio and usb
    media: Documentation: fix several typos
    media: staging: fix several typos
    media: include: fix several typos
    media: common: fix several typos
    media: v4l2-core: fix several typos
    media: usb: fix several typos
    ...

    Linus Torvalds
     
  • Pull documentation updates from Jonathan Corbet:
    "A fairly routine cycle for docs - lots of typo fixes, some new
    documents, and more translations. There's also some LICENSES
    adjustments from Thomas"

    * tag 'docs-5.1' of git://git.lwn.net/linux: (74 commits)
    docs: Bring some order to filesystem documentation
    Documentation/locking/lockdep: Drop last two chars of sample states
    doc: rcu: Suspicious RCU usage is a warning
    docs: driver-api: iio: fix errors in documentation
    Documentation/process/howto: Update for 4.x -> 5.x versioning
    docs: Explicitly state that the 'Fixes:' tag shouldn't split lines
    doc: security: Add kern-doc for lsm_hooks.h
    doc: sctp: Merge and clean up rst files
    Docs: Correct /proc/stat path
    scripts/spdxcheck.py: fix C++ comment style detection
    doc: fix typos in license-rules.rst
    Documentation: fix admin-guide/README.rst minimum gcc version requirement
    doc: process: complete removal of info about -git patches
    doc: translations: sync translations 'remove info about -git patches'
    perf-security: wrap paragraphs on 72 columns
    perf-security: elaborate on perf_events/Perf privileged users
    perf-security: document collected perf_events/Perf data categories
    perf-security: document perf_events/Perf resource control
    sysfs.txt: add note on available attribute macros
    docs: kernel-doc: typo "if ... if" -> "if ... is"
    ...

    Linus Torvalds
     
  • …/git/shuah/linux-kselftest

    Pull kselftest update fromShuah Khan:

    - ir test compile warnings fixes

    - seccomp test fixes and improvements from Tycho Andersen and Kees Cook

    - ftrace fixes to non-POSIX-compliant constructs in colored output code
    and handling absence of tput from Juerg Haefliger

    * tag 'linux-kselftest-5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests/ftrace: Handle the absence of tput
    selftests/ftrace: Replace \e with \033
    selftests/ftrace: Replace echo -e with printf
    selftests: ir: skip when non-root user runs the test
    selftests: ir: skip when lirc device doesn't exist.
    selftests: ir: fix warning: "%s" directive output may be truncated ’ directive output may be truncated
    selftests/seccomp: Actually sleep for 1/10th second
    selftests/harness: Update named initializer syntax
    selftests: unshare userns in seccomp pidns testcases
    selftests: set NO_NEW_PRIVS bit in seccomp user tests
    selftests: skip seccomp get_metadata test if not real root
    selftest: include stdio.h in kselftest.h
    selftests: fix typo in seccomp_bpf.c
    selftests: don't kill child immediately in get_metadata() test

    Linus Torvalds
     
  • …ux/kernel/git/acme/linux into perf/urgent

    Pull perf/core changes from Arnaldo Carvalho de Melo:

    perf bpf:

    Arnaldo Carvalho de Melo:

    - Automatically add BTF ELF markers to 'perf trace' BPF programs, so that
    tools such as 'bpftool map dump' can pretty print map keys and values.

    perf c2c:

    Jiri Olsa:

    - Fix report for empty NUMA node.

    perf diff:

    Jin Yao:

    - Support --time, --cpu, --pid and --tid filter options.

    perf probe:

    Arnaldo Carvalho de Melo:

    - Clarify error message about not finding kernel modules debuginfo.

    perf record:

    Jiri Olsa:

    - Fixup probing for max attr.precise_ip.

    perf trace:

    Arnaldo Carvalho de Melo:

    - Add missing %s lost in the 'msg_flags' recvmmsg arg when adding prefix suppression logic.

    perf annotate:

    Arnaldo Carvalho de Melo:

    - Calculate the max instruction name, align column to that, removing the
    hardcoded max 6 chars and cope with instructions with names longer than that,
    such as vpmovmskb, vpcmpeqb, etc.

    kernel:

    Song Liu:

    - Consider events with attr.bpf_event set as side-band.

    Gustavo A. R. Silva:

    - Mark expected switch fall-through in perf_event_parse_addr_filter().

    Libraries:

    Jiri Olsa:

    - Fix leaks and double frees on error paths.

    libtraceevent:

    Tony Jones:

    - Fix buffer overflow in arg_eval().

    python scripting:

    Tony Jones:

    - More python3 fixes.

    Trivial:

    Yang Wei:

    - Remove needless extra semicolon in clang C++ glue code.

    Intel PT/BTS:

    Adrian Hunter:

    - Improve auxtrace address filter error message when there is no DSO.

    - Fix divide by zero when TSC is not available.

    - Further improvements to the export to sqlite/posgresql python scripts
    and to the GUI sqlviewer, exporting 'parent_id' so that we have enable
    the creation of call trees.

    Andi Kleen:

    - Generalize function to copy from thread addr space from intel-bts code.

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

09 Mar, 2019

3 commits

  • Pull io_uring IO interface from Jens Axboe:
    "Second attempt at adding the io_uring interface.

    Since the first one, we've added basic unit testing of the three
    system calls, that resides in liburing like the other unit tests that
    we have so far. It'll take a while to get full coverage of it, but
    we're working towards it. I've also added two basic test programs to
    tools/io_uring. One uses the raw interface and has support for all the
    various features that io_uring supports outside of standard IO, like
    fixed files, fixed IO buffers, and polled IO. The other uses the
    liburing API, and is a simplified version of cp(1).

    This adds support for a new IO interface, io_uring.

    io_uring allows an application to communicate with the kernel through
    two rings, the submission queue (SQ) and completion queue (CQ) ring.
    This allows for very efficient handling of IOs, see the v5 posting for
    some basic numbers:

    https://lore.kernel.org/linux-block/20190116175003.17880-1-axboe@kernel.dk/

    Outside of just efficiency, the interface is also flexible and
    extendable, and allows for future use cases like the upcoming NVMe
    key-value store API, networked IO, and so on. It also supports async
    buffered IO, something that we've always failed to support in the
    kernel.

    Outside of basic IO features, it supports async polled IO as well.
    This particular feature has already been tested at Facebook months ago
    for flash storage boxes, with 25-33% improvements. It makes polled IO
    actually useful for real world use cases, where even basic flash sees
    a nice win in terms of efficiency, latency, and performance. These
    boxes were IOPS bound before, now they are not.

    This series adds three new system calls. One for setting up an
    io_uring instance (io_uring_setup(2)), one for submitting/completing
    IO (io_uring_enter(2)), and one for aux functions like registrating
    file sets, buffers, etc (io_uring_register(2)). Through the help of
    Arnd, I've coordinated the syscall numbers so merge on that front
    should be painless.

    Jon did a writeup of the interface a while back, which (except for
    minor details that have been tweaked) is still accurate. Find that
    here:

    https://lwn.net/Articles/776703/

    Huge thanks to Al Viro for helping getting the reference cycle code
    correct, and to Jann Horn for his extensive reviews focused on both
    security and bugs in general.

    There's a userspace library that provides basic functionality for
    applications that don't need or want to care about how to fiddle with
    the rings directly. It has helpers to allow applications to easily set
    up an io_uring instance, and submit/complete IO through it without
    knowing about the intricacies of the rings. It also includes man pages
    (thanks to Jeff Moyer), and will continue to grow support helper
    functions and features as time progresses. Find it here:

    git://git.kernel.dk/liburing

    Fio has full support for the raw interface, both in the form of an IO
    engine (io_uring), but also with a small test application (t/io_uring)
    that can exercise and benchmark the interface"

    * tag 'io_uring-2019-03-06' of git://git.kernel.dk/linux-block:
    io_uring: add a few test tools
    io_uring: allow workqueue item to handle multiple buffered requests
    io_uring: add support for IORING_OP_POLL
    io_uring: add io_kiocb ref count
    io_uring: add submission polling
    io_uring: add file set registration
    net: split out functions related to registering inflight socket files
    io_uring: add support for pre-mapped user IO buffers
    block: implement bio helper to add iter bvec pages to bio
    io_uring: batch io_kiocb allocation
    io_uring: use fget/fput_many() for file references
    fs: add fget_many() and fput_many()
    io_uring: support for IO polling
    io_uring: add fsync support
    Add io_uring IO interface

    Linus Torvalds
     
  • We could end up in situation when we have object file w/ all btf
    info, but kernel does not support btf yet. In this situation
    currently libbpf just set obj->btf to NULL w/o freeing it first.
    This patch is fixing it by making sure to run btf__free first.

    Fixes: d29d87f7e612 ("btf: separate btf creation and loading")
    Signed-off-by: Nikita V. Shirokov
    Acked-by: Yonghong Song
    Signed-off-by: Daniel Borkmann

    Nikita V. Shirokov
     
  • Pull livepatching updates from Jiri Kosina:

    - support for something we call 'atomic replace', and allows for much
    better handling of cumulative patches (which is something very useful
    for distros), from Jason Baron with help of Petr Mladek and Joe
    Lawrence

    - improvement of handling of tasks blocking finalization, from Miroslav
    Benes

    - update of MAINTAINERS file to reflect move towards group
    maintainership

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching: (22 commits)
    livepatch/selftests: use "$@" to preserve argument list
    livepatch: Module coming and going callbacks can proceed with all listed patches
    livepatch: Proper error handling in the shadow variables selftest
    livepatch: return -ENOMEM on ptr_id() allocation failure
    livepatch: Introduce klp_for_each_patch macro
    livepatch: core: Return EOPNOTSUPP instead of ENOSYS
    selftests/livepatch: add DYNAMIC_DEBUG config dependency
    livepatch: samples: non static warnings fix
    livepatch: update MAINTAINERS
    livepatch: Remove signal sysfs attribute
    livepatch: Send a fake signal periodically
    selftests/livepatch: introduce tests
    livepatch: Remove ordering (stacking) of the livepatches
    livepatch: Atomic replace and cumulative patches documentation
    livepatch: Remove Nop structures when unused
    livepatch: Add atomic replace
    livepatch: Use lists to manage patches, objects and functions
    livepatch: Simplify API by removing registration step
    livepatch: Don't block the removal of patches loaded after a forced transition
    livepatch: Consolidate klp_free functions
    ...

    Linus Torvalds
     

08 Mar, 2019

3 commits

  • Pull powerpc updates from Michael Ellerman:
    "Notable changes:

    - Enable THREAD_INFO_IN_TASK to move thread_info off the stack.

    - A big series from Christoph reworking our DMA code to use more of
    the generic infrastructure, as he said:
    "This series switches the powerpc port to use the generic swiotlb
    and noncoherent dma ops, and to use more generic code for the
    coherent direct mapping, as well as removing a lot of dead
    code."

    - Increase our vmalloc space to 512T with the Hash MMU on modern
    CPUs, allowing us to support machines with larger amounts of total
    RAM or distance between nodes.

    - Two series from Christophe, one to optimise TLB miss handlers on
    6xx, and another to optimise the way STRICT_KERNEL_RWX is
    implemented on some 32-bit CPUs.

    - Support for KCOV coverage instrumentation which means we can run
    syzkaller and discover even more bugs in our code.

    And as always many clean-ups, reworks and minor fixes etc.

    Thanks to: Alan Modra, Alexey Kardashevskiy, Alistair Popple, Andrea
    Arcangeli, Andrew Donnellan, Aneesh Kumar K.V, Aravinda Prasad, Balbir
    Singh, Brajeswar Ghosh, Breno Leitao, Christian Lamparter, Christian
    Zigotzky, Christophe Leroy, Christoph Hellwig, Corentin Labbe, Daniel
    Axtens, David Gibson, Diana Craciun, Firoz Khan, Gustavo A. R. Silva,
    Igor Stoppa, Joe Lawrence, Joel Stanley, Jonathan Neuschäfer, Jordan
    Niethe, Laurent Dufour, Madhavan Srinivasan, Mahesh Salgaonkar, Mark
    Cave-Ayland, Masahiro Yamada, Mathieu Malaterre, Matteo Croce, Meelis
    Roos, Michael W. Bringmann, Nathan Chancellor, Nathan Fontenot,
    Nicholas Piggin, Nick Desaulniers, Nicolai Stange, Oliver O'Halloran,
    Paul Mackerras, Peter Xu, PrasannaKumar Muralidharan, Qian Cai,
    Rashmica Gupta, Reza Arbab, Robert P. J. Day, Russell Currey,
    Sabyasachi Gupta, Sam Bobroff, Sandipan Das, Sergey Senozhatsky,
    Souptick Joarder, Stewart Smith, Tyrel Datwyler, Vaibhav Jain,
    YueHaibing"

    * tag 'powerpc-5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (200 commits)
    powerpc/32: Clear on-stack exception marker upon exception return
    powerpc: Remove export of save_stack_trace_tsk_reliable()
    powerpc/mm: fix "section_base" set but not used
    powerpc/mm: Fix "sz" set but not used warning
    powerpc/mm: Check secondary hash page table
    powerpc: remove nargs from __SYSCALL
    powerpc/64s: Fix unrelocated interrupt trampoline address test
    powerpc/powernv/ioda: Fix locked_vm counting for memory used by IOMMU tables
    powerpc/fsl: Fix the flush of branch predictor.
    powerpc/powernv: Make opal log only readable by root
    powerpc/xmon: Fix opcode being uninitialized in print_insn_powerpc
    powerpc/powernv: move OPAL call wrapper tracing and interrupt handling to C
    powerpc/64s: Fix data interrupts vs d-side MCE reentrancy
    powerpc/64s: Prepare to handle data interrupts vs d-side MCE reentrancy
    powerpc/64s: system reset interrupt preserve HSRRs
    powerpc/64s: Fix HV NMI vs HV interrupt recoverability test
    powerpc/mm/hash: Handle mmap_min_addr correctly in get_unmapped_area topdown search
    powerpc/hugetlb: Handle mmap_min_addr correctly in get_unmapped_area callback
    selftests/powerpc: Remove duplicate header
    powerpc sstep: Add support for modsd, modud instructions
    ...

    Linus Torvalds
     
  • Pull security subsystem updates from James Morris:

    - Extend LSM stacking to allow sharing of cred, file, ipc, inode, and
    task blobs. This paves the way for more full-featured LSMs to be
    merged, and is specifically aimed at LandLock and SARA LSMs. This
    work is from Casey and Kees.

    - There's a new LSM from Micah Morton: "SafeSetID gates the setid
    family of syscalls to restrict UID/GID transitions from a given
    UID/GID to only those approved by a system-wide whitelist." This
    feature is currently shipping in ChromeOS.

    * 'next-general' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (62 commits)
    keys: fix missing __user in KEYCTL_PKEY_QUERY
    LSM: Update list of SECURITYFS users in Kconfig
    LSM: Ignore "security=" when "lsm=" is specified
    LSM: Update function documentation for cap_capable
    security: mark expected switch fall-throughs and add a missing break
    tomoyo: Bump version.
    LSM: fix return value check in safesetid_init_securityfs()
    LSM: SafeSetID: add selftest
    LSM: SafeSetID: remove unused include
    LSM: SafeSetID: 'depend' on CONFIG_SECURITY
    LSM: Add 'name' field for SafeSetID in DEFINE_LSM
    LSM: add SafeSetID module that gates setid calls
    LSM: add SafeSetID module that gates setid calls
    tomoyo: Allow multiple use_group lines.
    tomoyo: Coding style fix.
    tomoyo: Swicth from cred->security to task_struct->security.
    security: keys: annotate implicit fall throughs
    security: keys: annotate implicit fall throughs
    security: keys: annotate implicit fall through
    capabilities:: annotate implicit fall through
    ...

    Linus Torvalds
     
  • Non-zero imm value in the second part of the ldimm64 instruction for
    BPF_PSEUDO_MAP_FD is invalid, and thus must be rejected. The map fd
    only ever sits in the first instructions' imm field. None of the BPF
    loaders known to us are using it, so risk of regression is minimal.
    For clarity and consistency, the few insn->{src_reg,imm} occurrences
    are rewritten into insn[0].{src_reg,imm}. Add a test case to the BPF
    selftest suite as well.

    Fixes: 0246e64d9a5f ("bpf: handle pseudo BPF_LD_IMM64 insn")
    Signed-off-by: Daniel Borkmann
    Acked-by: Song Liu
    Signed-off-by: Alexei Starovoitov

    Daniel Borkmann
     

07 Mar, 2019

15 commits

  • CHECK macro implicitly uses duration. We call CHECK() a couple of times
    before duration is initialized from bpf_prog_test_run().
    Explicitly set duration to 0 to avoid compiler warnings.

    Fixes: 740f8a657221 ("selftests/bpf: make sure signal interrupts BPF_PROG_TEST_RUN")
    Signed-off-by: Stanislav Fomichev
    Acked-by: Yonghong Song
    Signed-off-by: Daniel Borkmann

    Stanislav Fomichev
     
  • libbpf targets don't explicitly depend on fixdep target, so when
    we do 'make -j$(nproc)', there is a high probability, that some
    objects will be built before fixdep binary is available.

    Fix this by running sub-make; this makes sure that fixdep dependency
    is properly accounted for.

    For the same issue in perf, see commit abb26210a395 ("perf tools: Force
    fixdep compilation at the start of the build").

    Before:

    $ rm -rf /tmp/bld; mkdir /tmp/bld; make -j$(nproc) O=/tmp/bld -C tools/lib/bpf/

    Auto-detecting system features:
    ... libelf: [ on ]
    ... bpf: [ on ]

    HOSTCC /tmp/bld/fixdep.o
    CC /tmp/bld/libbpf.o
    CC /tmp/bld/bpf.o
    CC /tmp/bld/btf.o
    CC /tmp/bld/nlattr.o
    CC /tmp/bld/libbpf_errno.o
    CC /tmp/bld/str_error.o
    CC /tmp/bld/netlink.o
    CC /tmp/bld/bpf_prog_linfo.o
    CC /tmp/bld/libbpf_probes.o
    CC /tmp/bld/xsk.o
    HOSTLD /tmp/bld/fixdep-in.o
    LINK /tmp/bld/fixdep
    LD /tmp/bld/libbpf-in.o
    LINK /tmp/bld/libbpf.a
    LINK /tmp/bld/libbpf.so
    LINK /tmp/bld/test_libbpf

    $ head /tmp/bld/.libbpf.o.cmd
    # cannot find fixdep (/usr/local/google/home/sdf/src/linux/xxx//fixdep)
    # using basic dep data

    /tmp/bld/libbpf.o: libbpf.c /usr/include/stdc-predef.h \
    /usr/include/stdlib.h /usr/include/features.h \
    /usr/include/x86_64-linux-gnu/sys/cdefs.h \
    /usr/include/x86_64-linux-gnu/bits/wordsize.h \
    /usr/include/x86_64-linux-gnu/gnu/stubs.h \
    /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
    /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \

    After:

    $ rm -rf /tmp/bld; mkdir /tmp/bld; make -j$(nproc) O=/tmp/bld -C tools/lib/bpf/

    Auto-detecting system features:
    ... libelf: [ on ]
    ... bpf: [ on ]

    HOSTCC /tmp/bld/fixdep.o
    HOSTLD /tmp/bld/fixdep-in.o
    LINK /tmp/bld/fixdep
    CC /tmp/bld/libbpf.o
    CC /tmp/bld/bpf.o
    CC /tmp/bld/nlattr.o
    CC /tmp/bld/btf.o
    CC /tmp/bld/libbpf_errno.o
    CC /tmp/bld/str_error.o
    CC /tmp/bld/netlink.o
    CC /tmp/bld/bpf_prog_linfo.o
    CC /tmp/bld/libbpf_probes.o
    CC /tmp/bld/xsk.o
    LD /tmp/bld/libbpf-in.o
    LINK /tmp/bld/libbpf.a
    LINK /tmp/bld/libbpf.so
    LINK /tmp/bld/test_libbpf

    $ head /tmp/bld/.libbpf.o.cmd
    cmd_/tmp/bld/libbpf.o := gcc -Wp,-MD,/tmp/bld/.libbpf.o.d -Wp,-MT,/tmp/bld/libbpf.o -g -Wall -DHAVE_LIBELF_MMAP_SUPPORT -DCOMPAT_NEED_REALLOCARRAY -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wshadow -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wstrict-aliasing=3 -Werror -Wall -fPIC -I. -I/usr/local/google/home/sdf/src/linux/tools/include -I/usr/local/google/home/sdf/src/linux/tools/arch/x86/include/uapi -I/usr/local/google/home/sdf/src/linux/tools/include/uapi -fvisibility=hidden -D"BUILD_STR(s)=$(pound)s" -c -o /tmp/bld/libbpf.o libbpf.c

    source_/tmp/bld/libbpf.o := libbpf.c

    deps_/tmp/bld/libbpf.o := \
    /usr/include/stdc-predef.h \
    /usr/include/stdlib.h \
    /usr/include/features.h \
    /usr/include/x86_64-linux-gnu/sys/cdefs.h \
    /usr/include/x86_64-linux-gnu/bits/wordsize.h \

    Fixes: 7c422f557266 ("tools build: Build fixdep helper from perf and basic libs")
    Reported-by: Eric Dumazet
    Signed-off-by: Stanislav Fomichev
    Acked-by: Yonghong Song
    Signed-off-by: Daniel Borkmann

    Stanislav Fomichev
     
  • A bunch of related changes lumped together:
    * Create prog_tests and verifier output directories; these don't exist with
    out-of-tree $(OUTPUT)
    * Add missing -I (via separate TEST_{PROGS,VERIFIER}_CFLAGS) for the main tree
    ($(PWD) != $(OUTPUT) for out-of-tree)
    * Add libbpf.a dependency for test_progs_32 (parallel make fails otherwise)
    * Add missing "; \" after "cd" when generating test.h headers

    Tested by:
    $ alias m="make -s -j$(nproc)"
    $ m -C tools/testing/selftests/bpf/ clean
    $ m -C tools/lib/bpf/ clean
    $ rm -rf xxx; mkdir xxx; m -C tools/testing/selftests/bpf/ OUTPUT=$PWD/xxx
    $ m -C tools/testing/selftests/bpf/

    Fixes: 3f30658830f3 ("selftests: bpf: break up test_progs - preparations")
    Fixes: 2dfb40121ee8 ("selftests: bpf: prepare for break up of verifier tests")
    Fixes: 3ef84346c561 ("selftests: bpf: makefile support sub-register code-gen test mode")
    Signed-off-by: Stanislav Fomichev
    Acked-by: Yonghong Song
    Signed-off-by: Daniel Borkmann

    Stanislav Fomichev
     
  • Add a test on egress that a large TCP packet successfully goes through
    the lwt+bpf encap tunnel.

    Although there is no direct evidence that GSO worked, as opposed to
    e.g. TCP segmentation or IP fragmentation (maybe a kernel stats counter
    should be added to track the number of failed GSO attempts?), without
    the previous patch in the patchset this test fails, and printk-debugging
    showed that software-based GSO succeeded here (veth is not compatible with
    SKB_GSO_DODGY, so GSO happens in the software stack).

    Also removed an unnecessary nodad and added a missed failed flag.

    Signed-off-by: Peter Oskolkov
    Acked-by: Song Liu
    Signed-off-by: Daniel Borkmann

    Peter Oskolkov
     
  • Pull staging/IIO updates from Greg KH:
    "Here is the big staging/iio driver pull request for 5.1-rc1.

    Lots of good IIO driver updates and cleanups in here as always.
    Combined with the removal of the xgifb driver, we have a net "loss" of
    over 9000 lines in the pull request, always a nice thing.

    As the outreachy application process is currently happening, there are
    loads of tiny checkpatch cleanup fixes all over the staging tree,
    which accounts for the majority of the fixups"

    * tag 'staging-5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (341 commits)
    staging: mt7621-dma: remove license boilerplate text
    staging: mt7621-dma: add SPDX GPL-2.0+ license identifier
    Staging: ks7010: Replace typecast to int
    Staging: vt6655: Align a static function declaration
    staging: speakup: fix line over 80 characters.
    staging: mt7621-eth: Remove license boilerplate text
    staging: mt7621-eth: Add SPDX license identifier
    staging: ks7010: removed custom Michael MIC implementation.
    staging: rtl8192e: Fix space and suspect issue
    Staging: vt6655: Modify comment style of SPDX License Identifier
    Staging: vt6655: Modify comment style for SPDX-License-Identifier
    Staging: vt6655: Align a function declaration
    Staging: vt6655: Alignment of function declaration
    staging: rtl8712: Fix indentation issue
    staging: wilc1000: fix incorrent type in initializer
    staging: rtl8188eu: remove unused P2P_PRIVATE_IOCTL_SET_LEN
    staging: rtl8188eu: remove unused enum P2P_PROTO_WK_ID
    staging: rtl8723bs: Remove duplicated include from drv_types.h
    Staging: vt6655: Alignment should match open parenthesis
    staging: erofs: fix mis-acted TAIL merging behavior
    ...

    Linus Torvalds
     
  • Pull driver core updates from Greg KH:
    "Here is the big driver core patchset for 5.1-rc1

    More patches than "normal" here this merge window, due to some work in
    the driver core by Alexander Duyck to rework the async probe
    functionality to work better for a number of devices, and independant
    work from Rafael for the device link functionality to make it work
    "correctly".

    Also in here is:

    - lots of BUS_ATTR() removals, the macro is about to go away

    - firmware test fixups

    - ihex fixups and simplification

    - component additions (also includes i915 patches)

    - lots of minor coding style fixups and cleanups.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'driver-core-5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (65 commits)
    driver core: platform: remove misleading err_alloc label
    platform: set of_node in platform_device_register_full()
    firmware: hardcode the debug message for -ENOENT
    driver core: Add missing description of new struct device_link field
    driver core: Fix PM-runtime for links added during consumer probe
    drivers/component: kerneldoc polish
    async: Add cmdline option to specify drivers to be async probed
    driver core: Fix possible supplier PM-usage counter imbalance
    PM-runtime: Fix __pm_runtime_set_status() race with runtime resume
    driver: platform: Support parsing GpioInt 0 in platform_get_irq()
    selftests: firmware: fix verify_reqs() return value
    Revert "selftests: firmware: remove use of non-standard diff -Z option"
    Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK to config"
    device: Fix comment for driver_data in struct device
    kernfs: Allocating memory for kernfs_iattrs with kmem_cache.
    sysfs: remove unused include of kernfs-internal.h
    driver core: Postpone DMA tear-down until after devres release
    driver core: Document limitation related to DL_FLAG_RPM_ACTIVE
    PM-runtime: Take suppliers into account in __pm_runtime_set_status()
    device.h: Add __cold to dev_ logging functions
    ...

    Linus Torvalds
     
  • Pull ACPI updates from Rafael Wysocki:
    "These are ACPICA updates including ACPI 6.3 support among other
    things, APEI updates including the ARM Software Delegated Exception
    Interface (SDEI) support, ACPI EC driver fixes and cleanups and other
    assorted improvements.

    Specifics:

    - Update the ACPICA code in the kernel to upstream revision 20190215
    including ACPI 6.3 support and more:
    * New predefined methods: _NBS, _NCH, _NIC, _NIH, and _NIG (Erik
    Schmauss).
    * Update of the PCC Identifier structure in PDTT (Erik Schmauss).
    * Support for new Generic Affinity Structure subtable in SRAT
    (Erik Schmauss).
    * New PCC operation region support (Erik Schmauss).
    * Support for GICC statistical profiling for MADT (Erik Schmauss).
    * New Error Disconnect Recover notification support (Erik
    Schmauss).
    * New PPTT Processor Structure Flags fields support (Erik
    Schmauss).
    * ACPI 6.3 HMAT updates (Erik Schmauss).
    * GTDT Revision 3 support (Erik Schmauss).
    * Legacy module-level code (MLC) support removal (Erik Schmauss).
    * Update/clarification of messages for control method failures
    (Bob Moore).
    * Warning on creation of a zero-length opregion (Bob Moore).
    * acpiexec option to dump extra info for memory leaks (Bob Moore).
    * More ACPI error to firmware error conversions (Bob Moore).
    * Debugger fix (Bob Moore).
    * Copyrights update (Bob Moore)

    - Clean up sleep states support code in ACPICA (Christoph Hellwig)

    - Rework in_nmi() handling in the APEI code and add suppor for the
    ARM Software Delegated Exception Interface (SDEI) to it (James
    Morse)

    - Fix possible out-of-bounds accesses in BERT-related core (Ross
    Lagerwall)

    - Fix the APEI code parsing HEST that includes a Deferred Machine
    Check subtable (Yazen Ghannam)

    - Use DEFINE_DEBUGFS_ATTRIBUTE for APEI-related debugfs files
    (YueHaibing)

    - Switch the APEI ERST code to the new generic UUID API (Andy
    Shevchenko)

    - Update the MAINTAINERS entry for APEI (Borislav Petkov)

    - Fix and clean up the ACPI EC driver (Rafael Wysocki, Zhang Rui)

    - Fix DMI checks handling in the ACPI backlight driver and add the
    "Lunch Box" chassis-type check to it (Hans de Goede)

    - Add support for using ACPI table overrides included in built-in
    initrd images (Shunyong Yang)

    - Update ACPI device enumeration to treat the PWM2 device as "always
    present" on Lenovo Yoga Book (Yauhen Kharuzhy)

    - Fix up the enumeration of device objects with the PRP0001 device ID
    (Andy Shevchenko)

    - Clean up PPTT parsing error messages (John Garry)

    - Clean up debugfs files creation handling (Greg Kroah-Hartman,
    Rafael Wysocki)

    - Clean up the ACPI DPTF Makefile (Masahiro Yamada)"

    * tag 'acpi-5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (65 commits)
    ACPI / bus: Respect PRP0001 when retrieving device match data
    ACPICA: Update version to 20190215
    ACPI/ACPICA: Trivial: fix spelling mistakes and fix whitespace formatting
    ACPICA: ACPI 6.3: add GTDT Revision 3 support
    ACPICA: ACPI 6.3: HMAT updates
    ACPICA: ACPI 6.3: PPTT add additional fields in Processor Structure Flags
    ACPICA: ACPI 6.3: add Error Disconnect Recover Notification value
    ACPICA: ACPI 6.3: MADT: add support for statistical profiling in GICC
    ACPICA: ACPI 6.3: add PCC operation region support for AML interpreter
    efi: cper: Fix possible out-of-bounds access
    ACPI: APEI: Fix possible out-of-bounds access to BERT region
    ACPICA: ACPI 6.3: SRAT: add Generic Affinity Structure subtable
    ACPICA: ACPI 6.3: Add Trigger order to PCC Identifier structure in PDTT
    ACPICA: ACPI 6.3: Adding predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG
    ACPICA: Update/clarify messages for control method failures
    ACPICA: Debugger: Fix possible fault with the "test objects" command
    ACPICA: Interpreter: Emit warning for creation of a zero-length op region
    ACPICA: Remove legacy module-level code support
    ACPI / x86: Make PWM2 device always present at Lenovo Yoga Book
    ACPI / video: Extend chassis-type detection with a "Lunch Box" check
    ..

    Linus Torvalds
     
  • Making sure the data->file.path is zeroed on perf_data__open error path
    and in perf_data__close, so we don't double free it in case someone call
    it twice.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Nageswara R Sastry
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Ravi Bangoria
    Link: http://lkml.kernel.org/r/20190305152536.21035-9-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We can't call perf_data__close and subsequently perf_session__delete,
    because it will call perf_data__close again and cause double free for
    data->file.path.

    $ perf report -i .
    incompatible file format (rerun with -v to learn more)
    free(): double free detected in tcache 2
    Aborted (core dumped)

    In fact we don't need to call perf_data__close at all, because at the
    time the got out_close is reached, session->data is already initialized,
    so the perf_data__close call will be triggered from
    perf_session__delete.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Nageswara R Sastry
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Ravi Bangoria
    Fixes: 2d4f27999b88 ("perf data: Add global path holder")
    Link: http://lkml.kernel.org/r/20190305152536.21035-8-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Currently we probe for precise_ip with user specified perf_event_attr,
    which might fail because of unsupported kernel features, which would get
    disabled during the open time anyway.

    Switching the probe to take place on simple hw cycles, so the following
    record sets proper precise_ip:

    # perf record -e cycles:P ls
    # perf evlist -v
    cycles:P: size: 112, ... precise_ip: 3, ...

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Nageswara R Sastry
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Ravi Bangoria
    Link: http://lkml.kernel.org/r/20190305152536.21035-7-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Read the caps/max_precise value and store it in struct perf_pmu to be
    used when setting the maximum precise_ip field in following patch.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Nageswara R Sastry
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Ravi Bangoria
    Link: http://lkml.kernel.org/r/20190305152536.21035-5-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We can't allocate he->srcline unconditionaly, only when new hist_entry
    is created. Moving he->srcline allocation into hist_entry__init
    function.

    Original-patch-by: Jonas Rabenstein
    Suggested-by: Namhyung Kim
    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Nageswara R Sastry
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Ravi Bangoria
    Link: http://lkml.kernel.org/r/20190305152536.21035-4-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Adding error path into hist_entry__init to unify error handling, so
    every new member does not need to free everything else.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Ravi Bangoria
    Cc: nageswara r sastry
    Link: http://lkml.kernel.org/r/20190305152536.21035-3-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Ravi Bangoria reported that we fail with an empty NUMA node with the
    following message:

    $ lscpu
    NUMA node0 CPU(s):
    NUMA node1 CPU(s): 0-4

    $ sudo ./perf c2c report
    node/cpu topology bugFailed setup nodes

    Fix this by detecting the empty node and keeping its CPU set empty.

    Reported-by: Nageswara R Sastry
    Signed-off-by: Jiri Olsa
    Tested-by: Ravi Bangoria
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190305152536.21035-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Support both Python2 and Python3 in the intel-pt-events.py script

    There may be differences in the ordering of output lines due to
    differences in dictionary ordering etc. However the format within lines
    should be unchanged.

    The use of 'from __future__' implies the minimum supported Python2 version
    is now v2.6

    Signed-off-by: Tony Jones
    Acked-by: Adrian Hunter
    Link: http://lkml.kernel.org/r/fd26acf9-0c0f-717f-9664-a3c33043ce19@suse.de
    Signed-off-by: Seeteena Thoufeek
    Signed-off-by: Arnaldo Carvalho de Melo

    Tony Jones