04 Dec, 2019

1 commit

  • …git/jj/linux-apparmor

    Pull apparmor updates from John Johansen:
    "Features:

    - increase left match history buffer size to provide improved
    conflict resolution in overlapping execution rules.

    - switch buffer allocation to use a memory pool and GFP_KERNEL where
    possible.

    - add compression of policy blobs to reduce memory usage.

    Cleanups:

    - fix spelling mistake "immutible" -> "immutable"

    Bug fixes:

    - fix unsigned len comparison in update_for_len macro

    - fix sparse warning for type-casting of current->real_cred"

    * tag 'apparmor-pr-2019-12-03' of git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor:
    apparmor: make it so work buffers can be allocated from atomic context
    apparmor: reduce rcu_read_lock scope for aa_file_perm mediation
    apparmor: fix wrong buffer allocation in aa_new_mount
    apparmor: fix unsigned len comparison with less than zero
    apparmor: increase left match history buffer size
    apparmor: Switch to GFP_KERNEL where possible
    apparmor: Use a memory pool instead per-CPU caches
    apparmor: Force type-casting of current->real_cred
    apparmor: fix spelling mistake "immutible" -> "immutable"
    apparmor: fix blob compression when ns is forced on a policy load
    apparmor: fix missing ZLIB defines
    apparmor: fix blob compression build failure on ppc
    apparmor: Initial implementation of raw policy blob compression

    Linus Torvalds
     

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
     

01 Dec, 2019

3 commits

  • Pull selinux updates from Paul Moore:
    "Only three SELinux patches for v5.5:

    - Remove the size limit on SELinux policies, the limitation was a
    lingering vestige and no longer necessary.

    - Allow file labeling before the policy is loaded. This should ease
    some of the burden when the policy is initially loaded (no need to
    relabel files), but it should also help enable some new system
    concepts which dynamically create the root filesystem in the
    initrd.

    - Add support for the "greatest lower bound" policy construct which
    is defined as the intersection of the MLS range of two SELinux
    labels"

    * tag 'selinux-pr-20191126' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux:
    selinux: default_range glblub implementation
    selinux: allow labeling before policy is loaded
    selinux: remove load size limit

    Linus Torvalds
     
  • Pull powerpc updates from Michael Ellerman:
    "Highlights:

    - Infrastructure for secure boot on some bare metal Power9 machines.
    The firmware support is still in development, so the code here
    won't actually activate secure boot on any existing systems.

    - A change to xmon (our crash handler / pseudo-debugger) to restrict
    it to read-only mode when the kernel is lockdown'ed, otherwise it's
    trivial to drop into xmon and modify kernel data, such as the
    lockdown state.

    - Support for KASLR on 32-bit BookE machines (Freescale / NXP).

    - Fixes for our flush_icache_range() and __kernel_sync_dicache()
    (VDSO) to work with memory ranges >4GB.

    - Some reworks of the pseries CMM (Cooperative Memory Management)
    driver to make it behave more like other balloon drivers and enable
    some cleanups of generic mm code.

    - A series of fixes to our hardware breakpoint support to properly
    handle unaligned watchpoint addresses.

    Plus a bunch of other smaller improvements, fixes and cleanups.

    Thanks to: Alastair D'Silva, Andrew Donnellan, Aneesh Kumar K.V,
    Anthony Steinhauser, Cédric Le Goater, Chris Packham, Chris Smart,
    Christophe Leroy, Christopher M. Riedl, Christoph Hellwig, Claudio
    Carvalho, Daniel Axtens, David Hildenbrand, Deb McLemore, Diana
    Craciun, Eric Richter, Geert Uytterhoeven, Greg Kroah-Hartman, Greg
    Kurz, Gustavo L. F. Walbon, Hari Bathini, Harish, Jason Yan, Krzysztof
    Kozlowski, Leonardo Bras, Mathieu Malaterre, Mauro S. M. Rodrigues,
    Michal Suchanek, Mimi Zohar, Nathan Chancellor, Nathan Lynch, Nayna
    Jain, Nick Desaulniers, Oliver O'Halloran, Qian Cai, Rasmus Villemoes,
    Ravi Bangoria, Sam Bobroff, Santosh Sivaraj, Scott Wood, Thomas Huth,
    Tyrel Datwyler, Vaibhav Jain, Valentin Longchamp, YueHaibing"

    * tag 'powerpc-5.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (144 commits)
    powerpc/fixmap: fix crash with HIGHMEM
    x86/efi: remove unused variables
    powerpc: Define arch_is_kernel_initmem_freed() for lockdep
    powerpc/prom_init: Use -ffreestanding to avoid a reference to bcmp
    powerpc: Avoid clang warnings around setjmp and longjmp
    powerpc: Don't add -mabi= flags when building with Clang
    powerpc: Fix Kconfig indentation
    powerpc/fixmap: don't clear fixmap area in paging_init()
    selftests/powerpc: spectre_v2 test must be built 64-bit
    powerpc/powernv: Disable native PCIe port management
    powerpc/kexec: Move kexec files into a dedicated subdir.
    powerpc/32: Split kexec low level code out of misc_32.S
    powerpc/sysdev: drop simple gpio
    powerpc/83xx: map IMMR with a BAT.
    powerpc/32s: automatically allocate BAT in setbat()
    powerpc/ioremap: warn on early use of ioremap()
    powerpc: Add support for GENERIC_EARLY_IOREMAP
    powerpc/fixmap: Use __fix_to_virt() instead of fix_to_virt()
    powerpc/8xx: use the fixmapped IMMR in cpm_reset()
    powerpc/8xx: add __init to cpm1 init functions
    ...

    Linus Torvalds
     
  • …ux/kernel/git/dhowells/linux-fs

    Pull pipe rework from David Howells:
    "This is my set of preparatory patches for building a general
    notification queue on top of pipes. It makes a number of significant
    changes:

    - It removes the nr_exclusive argument from __wake_up_sync_key() as
    this is always 1. This prepares for the next step:

    - Adds wake_up_interruptible_sync_poll_locked() so that poll can be
    woken up from a function that's holding the poll waitqueue
    spinlock.

    - Change the pipe buffer ring to be managed in terms of unbounded
    head and tail indices rather than bounded index and length. This
    means that reading the pipe only needs to modify one index, not
    two.

    - A selection of helper functions are provided to query the state of
    the pipe buffer, plus a couple to apply updates to the pipe
    indices.

    - The pipe ring is allowed to have kernel-reserved slots. This allows
    many notification messages to be spliced in by the kernel without
    allowing userspace to pin too many pages if it writes to the same
    pipe.

    - Advance the head and tail indices inside the pipe waitqueue lock
    and use wake_up_interruptible_sync_poll_locked() to poke poll
    without having to take the lock twice.

    - Rearrange pipe_write() to preallocate the buffer it is going to
    write into and then drop the spinlock. This allows kernel
    notifications to then be added the ring whilst it is filling the
    buffer it allocated. The read side is stalled because the pipe
    mutex is still held.

    - Don't wake up readers on a pipe if there was already data in it
    when we added more.

    - Don't wake up writers on a pipe if the ring wasn't full before we
    removed a buffer"

    * tag 'notifications-pipe-prep-20191115' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
    pipe: Remove sync on wake_ups
    pipe: Increase the writer-wakeup threshold to reduce context-switch count
    pipe: Check for ring full inside of the spinlock in pipe_write()
    pipe: Remove redundant wakeup from pipe_write()
    pipe: Rearrange sequence in pipe_write() to preallocate slot
    pipe: Conditionalise wakeup in pipe_read()
    pipe: Advance tail pointer inside of wait spinlock in pipe_read()
    pipe: Allow pipes to have kernel-reserved slots
    pipe: Use head and tail pointers for the ring, not cursor and length
    Add wake_up_interruptible_sync_poll_locked()
    Remove the nr_exclusive argument from __wake_up_sync_key()
    pipe: Reduce #inclusion of pipe_fs_i.h

    Linus Torvalds
     

29 Nov, 2019

1 commit

  • commit ad723674d675 ("x86/efi: move common keyring handler functions
    to new file") leave this unused.

    Fixes: ad723674d675 ("x86/efi: move common keyring handler functions to new file")
    Reported-by: Hulk Robot
    Signed-off-by: YueHaibing
    Link: https://lore.kernel.org/r/20191115130830.13320-1-yuehaibing@huawei.com

    YueHaibing
     

28 Nov, 2019

2 commits

  • Pull drm updates from Dave Airlie:
    "Lots of stuff in here, though it hasn't been too insane this merge
    apart from dealing with the security fun.

    uapi:
    - export different colorspace properties on DP vs HDMI
    - new fourcc for ARM 16x16 block format
    - syncobj: allow querying last submitted timeline value
    - DRM_FORMAT_BIG_ENDIAN defined as unsigned

    core:
    - allow using gem vma manager in ttm
    - connector/encoder/bridge doc fixes
    - allow more than 3 encoders for a connector
    - displayport mst suspend/resume reprobing support
    - vram lazy unmapping, uniform vram mm and gem vram
    - edid cleanups + AVI informframe bar info
    - displayport helpers - dpcd parser added

    dp_cec:
    - Allow a connector to be associated with a cec device

    ttm:
    - pipelining with no_gpu_wait fix
    - always keep BOs on the LRU

    sched:
    - allow free_job routine to sleep

    i915:
    - Block userptr from mappable GTT
    - i915 perf uapi versioning
    - OA stream dynamic reconfiguration
    - make context persistence optional
    - introduce DRM_I915_UNSTABLE Kconfig
    - add fake lmem testing under unstable
    - BT.2020 support for DP MSA
    - struct mutex elimination
    - Tigerlake display/PLL/power management improvements
    - Jasper Lake PCH support
    - refactor PMU for multiple GPUs
    - Icelake firmware update
    - Split out vga + switcheroo code

    amdgpu:
    - implement dma-buf import/export without helpers
    - vega20 RAS enablement
    - DC i2c over aux fixes
    - renoir GPU reset
    - DC HDCP support
    - BACO support for CI/VI asics
    - MSI-X support
    - Arcturus EEPROM support
    - Arcturus VCN encode support
    - VCN dynamic powergating on RV/RV2

    amdkfd:
    - add navi12/14/renoir support to kfd

    radeon:
    - SI dpm fix ported from amdgpu
    - fix bad DMA on ppc platforms

    gma500:
    - memory leak fixes

    qxl:
    - convert to new gem mmap

    exynos:
    - build warning fix

    komeda:
    - add aclk sysfs attribute

    v3d:
    - userspace cleanup uapi change

    i810:
    - fix for underflow in dispatch ioctls

    ast:
    - refactor show_cursor

    mgag200:
    - refactor show_cursor

    arcgpu:
    - encoder finding improvements

    mediatek:
    - mipi_tx, dsi and partial crtc support for MT8183 SoC
    - rotation support

    meson:
    - add suspend/resume support

    omap:
    - misc refactors

    tegra:
    - DisplayPort support for Tegra 210, 186 and 194.
    - IOMMU-backed DMA API fixes

    panfrost:
    - fix lockdep issue
    - simplify devfreq integration

    rcar-du:
    - R8A774B1 SoC support
    - fixes for H2 ES2.0

    sun4i:
    - vcc-dsi regulator support

    virtio-gpu:
    - vmexit vs spinlock fix
    - move to gem shmem helpers
    - handle large command buffers with cma"

    * tag 'drm-next-2019-11-27' of git://anongit.freedesktop.org/drm/drm: (1855 commits)
    drm/amdgpu: invalidate mmhub semaphore workaround in gmc9/gmc10
    drm/amdgpu: initialize vm_inv_eng0_sem for gfxhub and mmhub
    drm/amd/amdgpu/sriov skip RLCG s/r list for arcturus VF.
    drm/amd/amdgpu/sriov temporarily skip ras,dtm,hdcp for arcturus VF
    drm/amdgpu/gfx10: re-init clear state buffer after gpu reset
    merge fix for "ftrace: Rework event_create_dir()"
    drm/amdgpu: Update Arcturus golden registers
    drm/amdgpu/gfx10: fix out-of-bound mqd_backup array access
    drm/amdgpu/gfx10: explicitly wait for cp idle after halt/unhalt
    Revert "drm/amd/display: enable S/G for RAVEN chip"
    drm/amdgpu: disable gfxoff on original raven
    drm/amdgpu: remove experimental flag for Navi14
    drm/amdgpu: disable gfxoff when using register read interface
    drm/amdgpu/powerplay: properly set PP_GFXOFF_MASK (v2)
    drm/amdgpu: fix bad DMA from INTERRUPT_CNTL2
    drm/radeon: fix bad DMA from INTERRUPT_CNTL2
    drm/amd/display: Fix debugfs on MST connectors
    drm/amdgpu/nv: add asic func for fetching vbios from rom directly
    drm/amdgpu: put flush_delayed_work at first
    drm/amdgpu/vcn2.5: fix the enc loop with hw fini
    ...

    Linus Torvalds
     
  • Pull networking fixes from David Miller:
    "This is mostly to fix the iwlwifi regression:

    1) Flush GRO state properly in iwlwifi driver, from Alexander Lobakin.

    2) Validate TIPC link name with properly length macro, from John
    Rutherford.

    3) Fix completion init and device query timeouts in ibmvnic, from
    Thomas Falcon.

    4) Fix SKB size calculation for netlink messages in psample, from
    Nikolay Aleksandrov.

    5) Similar kind of fix for OVS flow dumps, from Paolo Abeni.

    6) Handle queue allocation failure unwind properly in gve driver, we
    could try to release pages we didn't allocate. From Jeroen de
    Borst.

    7) Serialize TX queue SKB list accesses properly in mscc ocelot
    driver. From Yangbo Lu"

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net:
    net: usb: aqc111: Use the correct style for SPDX License Identifier
    net: phy: Use the correct style for SPDX License Identifier
    net: wireless: intel: iwlwifi: fix GRO_NORMAL packet stalling
    net: mscc: ocelot: use skb queue instead of skbs list
    net: mscc: ocelot: avoid incorrect consuming in skbs list
    gve: Fix the queue page list allocated pages count
    net: inet_is_local_reserved_port() port arg should be unsigned short
    openvswitch: fix flow command message size
    net: phy: dp83869: Fix return paths to return proper values
    net: psample: fix skb_over_panic
    net: usbnet: Fix -Wcast-function-type
    net: hso: Fix -Wcast-function-type
    net: port < inet_prot_sock(net) --> inet_port_requires_bind_service(net, port)
    ibmvnic: Serialize device queries
    ibmvnic: Bound waits for device queries
    ibmvnic: Terminate waiting device threads after loss of service
    ibmvnic: Fix completion structure initialization
    net-sctp: replace some sock_net(sk) with just 'net'
    net: Fix a documentation bug wrt. ip_unprivileged_port_start
    tipc: fix link name length check

    Linus Torvalds
     

27 Nov, 2019

3 commits

  • Pull RCU updates from Ingo Molnar:
    "The main changes in this cycle were:

    - Dynamic tick (nohz) updates, perhaps most notably changes to force
    the tick on when needed due to lengthy in-kernel execution on CPUs
    on which RCU is waiting.

    - Linux-kernel memory consistency model updates.

    - Replace rcu_swap_protected() with rcu_prepace_pointer().

    - Torture-test updates.

    - Documentation updates.

    - Miscellaneous fixes"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (51 commits)
    security/safesetid: Replace rcu_swap_protected() with rcu_replace_pointer()
    net/sched: Replace rcu_swap_protected() with rcu_replace_pointer()
    net/netfilter: Replace rcu_swap_protected() with rcu_replace_pointer()
    net/core: Replace rcu_swap_protected() with rcu_replace_pointer()
    bpf/cgroup: Replace rcu_swap_protected() with rcu_replace_pointer()
    fs/afs: Replace rcu_swap_protected() with rcu_replace_pointer()
    drivers/scsi: Replace rcu_swap_protected() with rcu_replace_pointer()
    drm/i915: Replace rcu_swap_protected() with rcu_replace_pointer()
    x86/kvm/pmu: Replace rcu_swap_protected() with rcu_replace_pointer()
    rcu: Upgrade rcu_swap_protected() to rcu_replace_pointer()
    rcu: Suppress levelspread uninitialized messages
    rcu: Fix uninitialized variable in nocb_gp_wait()
    rcu: Update descriptions for rcu_future_grace_period tracepoint
    rcu: Update descriptions for rcu_nocb_wake tracepoint
    rcu: Remove obsolete descriptions for rcu_barrier tracepoint
    rcu: Ensure that ->rcu_urgent_qs is set before resched IPI
    workqueue: Convert for_each_wq to use built-in list check
    rcu: Several rcu_segcblist functions can be static
    rcu: Remove unused function hlist_bl_del_init_rcu()
    Documentation: Rename rcu_node_context_switch() to rcu_note_context_switch()
    ...

    Linus Torvalds
     
  • Pull perf updates from Ingo Molnar:
    "The main kernel side changes in this cycle were:

    - Various Intel-PT updates and optimizations (Alexander Shishkin)

    - Prohibit kprobes on Xen/KVM emulate prefixes (Masami Hiramatsu)

    - Add support for LSM and SELinux checks to control access to the
    perf syscall (Joel Fernandes)

    - Misc other changes, optimizations, fixes and cleanups - see the
    shortlog for details.

    There were numerous tooling changes as well - 254 non-merge commits.
    Here are the main changes - too many to list in detail:

    - Enhancements to core tooling infrastructure, perf.data, libperf,
    libtraceevent, event parsing, vendor events, Intel PT, callchains,
    BPF support and instruction decoding.

    - There were updates to the following tools:

    perf annotate
    perf diff
    perf inject
    perf kvm
    perf list
    perf maps
    perf parse
    perf probe
    perf record
    perf report
    perf script
    perf stat
    perf test
    perf trace

    - And a lot of other changes: please see the shortlog and Git log for
    more details"

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (279 commits)
    perf parse: Fix potential memory leak when handling tracepoint errors
    perf probe: Fix spelling mistake "addrees" -> "address"
    libtraceevent: Fix memory leakage in copy_filter_type
    libtraceevent: Fix header installation
    perf intel-bts: Does not support AUX area sampling
    perf intel-pt: Add support for decoding AUX area samples
    perf intel-pt: Add support for recording AUX area samples
    perf pmu: When using default config, record which bits of config were changed by the user
    perf auxtrace: Add support for queuing AUX area samples
    perf session: Add facility to peek at all events
    perf auxtrace: Add support for dumping AUX area samples
    perf inject: Cut AUX area samples
    perf record: Add aux-sample-size config term
    perf record: Add support for AUX area sampling
    perf auxtrace: Add support for AUX area sample recording
    perf auxtrace: Move perf_evsel__find_pmu()
    perf record: Add a function to test for kernel support for AUX area sampling
    perf tools: Add kernel AUX area sampling definitions
    perf/core: Make the mlock accounting simple again
    perf report: Jump to symbol source view from total cycles view
    ...

    Linus Torvalds
     
  • Note that the sysctl write accessor functions guarantee that:
    net->ipv4.sysctl_ip_prot_sock ipv4.ip_local_ports.range[0]
    invariant is maintained, and as such the max() in selinux hooks is actually spurious.

    ie. even though
    if (snum < max(inet_prot_sock(sock_net(sk)), low) || snum > high) {
    per logic is the same as
    if ((snum < inet_prot_sock(sock_net(sk)) && snum < low) || snum > high) {
    it is actually functionally equivalent to:
    if (snum < low || snum > high) {
    which is equivalent to:
    if (snum < inet_prot_sock(sock_net(sk)) || snum < low || snum > high) {
    even though the first clause is spurious.

    But we want to hold on to it in case we ever want to change what what
    inet_port_requires_bind_service() means (for example by changing
    it from a, by default, [0..1024) range to some sort of set).

    Test: builds, git 'grep inet_prot_sock' finds no other references
    Cc: Eric Dumazet
    Signed-off-by: Maciej Żenczykowski
    Signed-off-by: David S. Miller

    Maciej Żenczykowski
     

26 Nov, 2019

1 commit

  • Pull networking updates from David Miller:
    "Another merge window, another pull full of stuff:

    1) Support alternative names for network devices, from Jiri Pirko.

    2) Introduce per-netns netdev notifiers, also from Jiri Pirko.

    3) Support MSG_PEEK in vsock/virtio, from Matias Ezequiel Vara
    Larsen.

    4) Allow compiling out the TLS TOE code, from Jakub Kicinski.

    5) Add several new tracepoints to the kTLS code, also from Jakub.

    6) Support set channels ethtool callback in ena driver, from Sameeh
    Jubran.

    7) New SCTP events SCTP_ADDR_ADDED, SCTP_ADDR_REMOVED,
    SCTP_ADDR_MADE_PRIM, and SCTP_SEND_FAILED_EVENT. From Xin Long.

    8) Add XDP support to mvneta driver, from Lorenzo Bianconi.

    9) Lots of netfilter hw offload fixes, cleanups and enhancements,
    from Pablo Neira Ayuso.

    10) PTP support for aquantia chips, from Egor Pomozov.

    11) Add UDP segmentation offload support to igb, ixgbe, and i40e. From
    Josh Hunt.

    12) Add smart nagle to tipc, from Jon Maloy.

    13) Support L2 field rewrite by TC offloads in bnxt_en, from Venkat
    Duvvuru.

    14) Add a flow mask cache to OVS, from Tonghao Zhang.

    15) Add XDP support to ice driver, from Maciej Fijalkowski.

    16) Add AF_XDP support to ice driver, from Krzysztof Kazimierczak.

    17) Support UDP GSO offload in atlantic driver, from Igor Russkikh.

    18) Support it in stmmac driver too, from Jose Abreu.

    19) Support TIPC encryption and auth, from Tuong Lien.

    20) Introduce BPF trampolines, from Alexei Starovoitov.

    21) Make page_pool API more numa friendly, from Saeed Mahameed.

    22) Introduce route hints to ipv4 and ipv6, from Paolo Abeni.

    23) Add UDP segmentation offload to cxgb4, Rahul Lakkireddy"

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1857 commits)
    libbpf: Fix usage of u32 in userspace code
    mm: Implement no-MMU variant of vmalloc_user_node_flags
    slip: Fix use-after-free Read in slip_open
    net: dsa: sja1105: fix sja1105_parse_rgmii_delays()
    macvlan: schedule bc_work even if error
    enetc: add support Credit Based Shaper(CBS) for hardware offload
    net: phy: add helpers phy_(un)lock_mdio_bus
    mdio_bus: don't use managed reset-controller
    ax88179_178a: add ethtool_op_get_ts_info()
    mlxsw: spectrum_router: Fix use of uninitialized adjacency index
    mlxsw: spectrum_router: After underlay moves, demote conflicting tunnels
    bpf: Simplify __bpf_arch_text_poke poke type handling
    bpf: Introduce BPF_TRACE_x helper for the tracing tests
    bpf: Add bpf_jit_blinding_enabled for !CONFIG_BPF_JIT
    bpf, testing: Add various tail call test cases
    bpf, x86: Emit patchable direct jump as tail call
    bpf: Constant map key tracking for prog array pokes
    bpf: Add poke dependency tracking for prog array maps
    bpf: Add initial poke descriptor table for jit images
    bpf: Move owner type, jited info into array auxiliary data
    ...

    Linus Torvalds
     

23 Nov, 2019

4 commits

  • In some situations AppArmor needs to be able to use its work buffers
    from atomic context. Add the ability to specify when in atomic context
    and hold a set of work buffers in reserve for atomic context to
    reduce the chance that a large work buffer allocation will need to
    be done.

    Fixes: df323337e507 ("apparmor: Use a memory pool instead per-CPU caches")
    Signed-off-by: John Johansen

    John Johansen
     
  • Now that the buffers allocation has changed and no longer needs
    the full mediation under an rcu_read_lock, reduce the rcu_read_lock
    scope to only where it is necessary.

    Fixes: df323337e507 ("apparmor: Use a memory pool instead per-CPU caches")
    Signed-off-by: John Johansen

    John Johansen
     
  • Fix the following trace caused by the dev_path buffer not being
    allocated.

    [ 641.044262] AppArmor WARN match_mnt: ((devpath && !devbuffer)):
    [ 641.044284] WARNING: CPU: 1 PID: 30709 at ../security/apparmor/mount.c:385 match_mnt+0x133/0x180
    [ 641.044286] Modules linked in: snd_hda_codec_generic ledtrig_audio snd_hda_intel snd_hda_codec snd_hda_core qxl ttm snd_hwdep snd_pcm drm_kms_helper snd_seq_midi snd_seq_midi_event drm snd_rawmidi crct10dif_pclmul crc32_pclmul ghash_clmulni_intel iptable_mangle aesni_intel aes_x86_64 xt_tcpudp crypto_simd snd_seq cryptd bridge stp llc iptable_filter glue_helper snd_seq_device snd_timer joydev input_leds snd serio_raw fb_sys_fops 9pnet_virtio 9pnet syscopyarea sysfillrect soundcore sysimgblt qemu_fw_cfg mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 8139too psmouse 8139cp i2c_piix4 pata_acpi mii floppy
    [ 641.044318] CPU: 1 PID: 30709 Comm: mount Tainted: G D W 5.1.0-rc4+ #223
    [ 641.044320] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    [ 641.044323] RIP: 0010:match_mnt+0x133/0x180
    [ 641.044325] Code: 41 5d 41 5e 41 5f c3 48 8b 4c 24 18 eb b1 48 c7 c6 08 84 26 83 48 c7 c7 f0 56 54 83 4c 89 54 24 08 48 89 14 24 e8 7d d3 bb ff 0b 4c 8b 54 24 08 48 8b 14 24 e9 25 ff ff ff 48 c7 c6 08 84 26
    [ 641.044327] RSP: 0018:ffffa9b34ac97d08 EFLAGS: 00010282
    [ 641.044329] RAX: 0000000000000000 RBX: ffff9a86725a8558 RCX: 0000000000000000
    [ 641.044331] RDX: 0000000000000002 RSI: 0000000000000001 RDI: 0000000000000246
    [ 641.044333] RBP: ffffa9b34ac97db0 R08: 0000000000000000 R09: 0000000000000000
    [ 641.044334] R10: 0000000000000000 R11: 00000000000077f5 R12: 0000000000000000
    [ 641.044336] R13: ffffa9b34ac97e98 R14: ffff9a865e000008 R15: ffff9a86c4cf42b8
    [ 641.044338] FS: 00007fab73969740(0000) GS:ffff9a86fbb00000(0000) knlGS:0000000000000000
    [ 641.044340] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 641.044342] CR2: 000055f90bc62035 CR3: 00000000aab5f006 CR4: 00000000003606e0
    [ 641.044346] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 641.044348] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 641.044349] Call Trace:
    [ 641.044355] aa_new_mount+0x119/0x2c0
    [ 641.044363] apparmor_sb_mount+0xd4/0x430
    [ 641.044367] security_sb_mount+0x46/0x70
    [ 641.044372] do_mount+0xbb/0xeb0
    [ 641.044377] ? memdup_user+0x4b/0x70
    [ 641.044380] ksys_mount+0x7e/0xd0
    [ 641.044384] __x64_sys_mount+0x21/0x30
    [ 641.044388] do_syscall_64+0x5a/0x1a0
    [ 641.044392] entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [ 641.044394] RIP: 0033:0x7fab73a8790a
    [ 641.044397] Code: 48 8b 0d 89 85 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 00 0f 05 3d 01 f0 ff ff 73 01 c3 48 8b 0d 56 85 0c 00 f7 d8 64 89 01 48
    [ 641.044399] RSP: 002b:00007ffe0ffe4238 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5
    [ 641.044401] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fab73a8790a
    [ 641.044429] RDX: 000055f90bc6203b RSI: 00007ffe0ffe57b1 RDI: 00007ffe0ffe57a5
    [ 641.044431] RBP: 00007ffe0ffe4250 R08: 0000000000000000 R09: 00007fab73b51d80
    [ 641.044433] R10: 00000000c0ed0004 R11: 0000000000000206 R12: 000055f90bc610b0
    [ 641.044434] R13: 00007ffe0ffe4330 R14: 0000000000000000 R15: 0000000000000000
    [ 641.044457] irq event stamp: 0
    [ 641.044460] hardirqs last enabled at (0): [] (null)
    [ 641.044463] hardirqs last disabled at (0): [] copy_process.part.30+0x734/0x23f0
    [ 641.044467] softirqs last enabled at (0): [] copy_process.part.30+0x734/0x23f0
    [ 641.044469] softirqs last disabled at (0): [] (null)
    [ 641.044470] ---[ end trace c0d54bdacf6af6b2 ]---

    Fixes: df323337e507 ("apparmor: Use a memory pool instead per-CPU caches")
    Signed-off-by: John Johansen

    John Johansen
     
  • The sanity check in macro update_for_len checks to see if len
    is less than zero, however, len is a size_t so it can never be
    less than zero, so this sanity check is a no-op. Fix this by
    making len a ssize_t so the comparison will work and add ulen
    that is a size_t copy of len so that the min() macro won't
    throw warnings about comparing different types.

    Addresses-Coverity: ("Macro compares unsigned to 0")
    Fixes: f1bd904175e8 ("apparmor: add the base fns() for domain labels")
    Signed-off-by: Colin Ian King
    Signed-off-by: John Johansen

    Colin Ian King
     

15 Nov, 2019

1 commit

  • Preparing for a change to the itimer internals, stop using the
    do_setitimer() symbol and instead use a new higher-level interface.

    The do_getitimer()/do_setitimer functions can now be made static,
    allowing the compiler to potentially produce better object code.

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

    Arnd Bergmann
     

14 Nov, 2019

1 commit


13 Nov, 2019

6 commits

  • Merge the secureboot support, as well as the IMA changes needed to
    support it.

    From Nayna's cover letter:
    In order to verify the OS kernel on PowerNV systems, secure boot
    requires X.509 certificates trusted by the platform. These are
    stored in secure variables controlled by OPAL, called OPAL secure
    variables. In order to enable users to manage the keys, the secure
    variables need to be exposed to userspace.

    OPAL provides the runtime services for the kernel to be able to
    access the secure variables. This patchset defines the kernel
    interface for the OPAL APIs. These APIs are used by the hooks, which
    load these variables to the keyring and expose them to the userspace
    for reading/writing.

    Overall, this patchset adds the following support:
    * expose secure variables to the kernel via OPAL Runtime API interface
    * expose secure variables to the userspace via kernel sysfs interface
    * load kernel verification and revocation keys to .platform and
    .blacklist keyring respectively.

    The secure variables can be read/written using simple linux
    utilities cat/hexdump.

    For example:
    Path to the secure variables is: /sys/firmware/secvar/vars

    Each secure variable is listed as directory.
    $ ls -l
    total 0
    drwxr-xr-x. 2 root root 0 Aug 20 21:20 db
    drwxr-xr-x. 2 root root 0 Aug 20 21:20 KEK
    drwxr-xr-x. 2 root root 0 Aug 20 21:20 PK

    The attributes of each of the secure variables are (for example: PK):
    $ ls -l
    total 0
    -r--r--r--. 1 root root 4096 Oct 1 15:10 data
    -r--r--r--. 1 root root 65536 Oct 1 15:10 size
    --w-------. 1 root root 4096 Oct 1 15:12 update

    The "data" is used to read the existing variable value using
    hexdump. The data is stored in ESL format. The "update" is used to
    write a new value using cat. The update is to be submitted as AUTH
    file.

    Michael Ellerman
     
  • Fixes gcc '-Wunused-but-set-variable' warning:

    security/keys/trusted-keys/trusted_tpm1.c: In function tpm_unseal:
    security/keys/trusted-keys/trusted_tpm1.c:588:11: warning: variable keyhndl set but not used [-Wunused-but-set-variable]

    Fixes: 00aa975bd031 ("KEYS: trusted: Create trusted keys subsystem")
    Reported-by: Hulk Robot
    Signed-off-by: zhengbin
    Reviewed-by: Jarkko Sakkinen
    Signed-off-by: Jarkko Sakkinen

    zhengbin
     
  • Move TPM2 trusted keys code to trusted keys subsystem. The reason
    being it's better to consolidate all the trusted keys code to a single
    location so that it can be maintained sanely.

    Also, utilize existing tpm_send() exported API which wraps the internal
    tpm_transmit_cmd() API.

    Suggested-by: Jarkko Sakkinen
    Signed-off-by: Sumit Garg
    Reviewed-by: Jarkko Sakkinen
    Tested-by: Jarkko Sakkinen
    Signed-off-by: Jarkko Sakkinen

    Sumit Garg
     
  • Move existing code to trusted keys subsystem. Also, rename files with
    "tpm" as suffix which provides the underlying implementation.

    Suggested-by: Jarkko Sakkinen
    Signed-off-by: Sumit Garg
    Reviewed-by: Jarkko Sakkinen
    Tested-by: Jarkko Sakkinen
    Signed-off-by: Jarkko Sakkinen

    Sumit Garg
     
  • Switch to utilize common heap based tpm_buf code for TPM based trusted
    and asymmetric keys rather than using stack based tpm1_buf code. Also,
    remove tpm1_buf code.

    Suggested-by: Jarkko Sakkinen
    Signed-off-by: Sumit Garg
    Reviewed-by: Jerry Snitselaar
    Reviewed-by: Jarkko Sakkinen
    Tested-by: Jarkko Sakkinen
    Signed-off-by: Jarkko Sakkinen

    Sumit Garg
     
  • Move tpm_buf code to common include/linux/tpm.h header so that it can
    be reused via other subsystems like trusted keys etc.

    Also rename trusted keys and asymmetric keys usage of TPM 1.x buffer
    implementation to tpm1_buf to avoid any compilation errors.

    Suggested-by: Jarkko Sakkinen
    Signed-off-by: Sumit Garg
    Reviewed-by: Jerry Snitselaar
    Reviewed-by: Jarkko Sakkinen
    Tested-by: Jarkko Sakkinen
    Signed-off-by: Jarkko Sakkinen

    Sumit Garg
     

12 Nov, 2019

4 commits

  • The keys used to verify the Host OS kernel are managed by firmware as
    secure variables. This patch loads the verification keys into the
    .platform keyring and revocation hashes into .blacklist keyring. This
    enables verification and loading of the kernels signed by the boot
    time keys which are trusted by firmware.

    Signed-off-by: Nayna Jain
    Reviewed-by: Mimi Zohar
    Signed-off-by: Eric Richter
    [mpe: Search by compatible in load_powerpc_certs(), not using format]
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/1573441836-3632-5-git-send-email-nayna@linux.ibm.com

    Nayna Jain
     
  • The handlers to add the keys to the .platform keyring and blacklisted
    hashes to the .blacklist keyring is common for both the uefi and powerpc
    mechanisms of loading the keys/hashes from the firmware.

    This patch moves the common code from load_uefi.c to keyring_handler.c

    Signed-off-by: Nayna Jain
    Acked-by: Mimi Zohar
    Signed-off-by: Eric Richter
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/1573441836-3632-4-git-send-email-nayna@linux.ibm.com

    Nayna Jain
     
  • Asymmetric private keys are used to sign multiple files. The kernel
    currently supports checking against blacklisted keys. However, if the
    public key is blacklisted, any file signed by the blacklisted key will
    automatically fail signature verification. Blacklisting the public key
    is not fine enough granularity, as we might want to only blacklist a
    particular file.

    This patch adds support for checking against the blacklisted hash of
    the file, without the appended signature, based on the IMA policy. It
    defines a new policy option "appraise_flag=check_blacklist".

    In addition to the blacklisted binary hashes stored in the firmware
    "dbx" variable, the Linux kernel may be configured to load blacklisted
    binary hashes onto the .blacklist keyring as well. The following
    example shows how to blacklist a specific kernel module hash.

    $ sha256sum kernel/kheaders.ko
    77fa889b35a05338ec52e51591c1b89d4c8d1c99a21251d7c22b1a8642a6bad3
    kernel/kheaders.ko

    $ grep BLACKLIST .config
    CONFIG_SYSTEM_BLACKLIST_KEYRING=y
    CONFIG_SYSTEM_BLACKLIST_HASH_LIST="blacklist-hash-list"

    $ cat certs/blacklist-hash-list
    "bin:77fa889b35a05338ec52e51591c1b89d4c8d1c99a21251d7c22b1a8642a6bad3"

    Update the IMA custom measurement and appraisal policy
    rules (/etc/ima-policy):

    measure func=MODULE_CHECK template=ima-modsig
    appraise func=MODULE_CHECK appraise_flag=check_blacklist
    appraise_type=imasig|modsig

    After building, installing, and rebooting the kernel:

    545660333 ---lswrv 0 0 \_ blacklist:
    bin:77fa889b35a05338ec52e51591c1b89d4c8d1c99a21251d7c22b1a8642a6bad3

    measure func=MODULE_CHECK template=ima-modsig
    appraise func=MODULE_CHECK appraise_flag=check_blacklist
    appraise_type=imasig|modsig

    modprobe: ERROR: could not insert 'kheaders': Permission denied

    10 0c9834db5a0182c1fb0cdc5d3adcf11a11fd83dd ima-sig
    sha256:3bc6ed4f0b4d6e31bc1dbc9ef844605abc7afdc6d81a57d77a1ec9407997c40
    2 /usr/lib/modules/5.4.0-rc3+/kernel/kernel/kheaders.ko

    10 82aad2bcc3fa8ed94762356b5c14838f3bcfa6a0 ima-modsig
    sha256:3bc6ed4f0b4d6e31bc1dbc9ef844605abc7afdc6d81a57d77a1ec9407997c40
    2 /usr/lib/modules/5.4.0rc3+/kernel/kernel/kheaders.ko sha256:77fa889b3
    5a05338ec52e51591c1b89d4c8d1c99a21251d7c22b1a8642a6bad3
    3082029a06092a864886f70d010702a082028b30820287020101310d300b0609608648
    016503040201300b06092a864886f70d01070131820264....

    10 25b72217cc1152b44b134ce2cd68f12dfb71acb3 ima-buf
    sha256:8b58427fedcf8f4b20bc8dc007f2e232bf7285d7b93a66476321f9c2a3aa132
    b blacklisted-hash
    77fa889b35a05338ec52e51591c1b89d4c8d1c99a21251d7c22b1a8642a6bad3

    Signed-off-by: Nayna Jain
    [zohar@linux.ibm.com: updated patch description]
    Signed-off-by: Mimi Zohar
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/1572492694-6520-8-git-send-email-zohar@linux.ibm.com

    Nayna Jain
     
  • process_buffer_measurement() is limited to measuring the kexec boot
    command line. This patch makes process_buffer_measurement() more
    generic, allowing it to measure other types of buffer data (e.g.
    blacklisted binary hashes or key hashes).

    process_buffer_measurement() may be called directly from an IMA hook
    or as an auxiliary measurement record. In both cases the buffer
    measurement is based on policy. This patch modifies the function to
    conditionally retrieve the policy defined PCR and template for the IMA
    hook case.

    Signed-off-by: Nayna Jain
    [zohar@linux.ibm.com: added comment in process_buffer_measurement()]
    Signed-off-by: Mimi Zohar
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/1572492694-6520-6-git-send-email-zohar@linux.ibm.com

    Nayna Jain
     

11 Nov, 2019

1 commit


03 Nov, 2019

1 commit


31 Oct, 2019

2 commits

  • The driver exposes EFI runtime services to user-space through an IOCTL
    interface, calling the EFI services function pointers directly without
    using the efivar API.

    Disallow access to the /dev/efi_test character device when the kernel is
    locked down to prevent arbitrary user-space to call EFI runtime services.

    Also require CAP_SYS_ADMIN to open the chardev to prevent unprivileged
    users to call the EFI runtime services, instead of just relying on the
    chardev file mode bits for this.

    The main user of this driver is the fwts [0] tool that already checks if
    the effective user ID is 0 and fails otherwise. So this change shouldn't
    cause any regression to this tool.

    [0]: https://wiki.ubuntu.com/FirmwareTestSuite/Reference/uefivarinfo

    Signed-off-by: Javier Martinez Canillas
    Signed-off-by: Ard Biesheuvel
    Acked-by: Laszlo Ersek
    Acked-by: Matthew Garrett
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-efi@vger.kernel.org
    Link: https://lkml.kernel.org/r/20191029173755.27149-7-ardb@kernel.org
    Signed-off-by: Ingo Molnar

    Javier Martinez Canillas
     
  • …k/linux-rcu into core/rcu

    Pull RCU and LKMM changes from Paul E. McKenney:

    - Documentation updates.

    - Miscellaneous fixes.

    - Dynamic tick (nohz) updates, perhaps most notably changes to
    force the tick on when needed due to lengthy in-kernel execution
    on CPUs on which RCU is waiting.

    - Replace rcu_swap_protected() with rcu_prepace_pointer().

    - Torture-test updates.

    - Linux-kernel memory consistency model updates.

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

30 Oct, 2019

1 commit

  • This commit replaces the use of rcu_swap_protected() with the more
    intuitively appealing rcu_replace_pointer() as a step towards removing
    rcu_swap_protected().

    Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
    Reported-by: Linus Torvalds
    Reported-by: Reported-by: kbuild test robot
    [ paulmck: From rcu_replace() to rcu_replace_pointer() per Ingo Molnar. ]
    Signed-off-by: Paul E. McKenney
    Cc: Micah Morton
    Cc: James Morris
    Cc: "Serge E. Hallyn"
    Cc:

    Paul E. McKenney
     

28 Oct, 2019

1 commit

  • Xmon should be either fully or partially disabled depending on the
    kernel lockdown state.

    Put xmon into read-only mode for lockdown=integrity and prevent user
    entry into xmon when lockdown=confidentiality. Xmon checks the lockdown
    state on every attempted entry:

    (1) during early xmon'ing

    (2) when triggered via sysrq

    (3) when toggled via debugfs

    (4) when triggered via a previously enabled breakpoint

    The following lockdown state transitions are handled:

    (1) lockdown=none -> lockdown=integrity
    set xmon read-only mode

    (2) lockdown=none -> lockdown=confidentiality
    clear all breakpoints, set xmon read-only mode,
    prevent user re-entry into xmon

    (3) lockdown=integrity -> lockdown=confidentiality
    clear all breakpoints, set xmon read-only mode,
    prevent user re-entry into xmon

    Suggested-by: Andrew Donnellan
    Signed-off-by: Christopher M. Riedl
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/20190907061124.1947-3-cmr@informatik.wtf

    Christopher M. Riedl
     

26 Oct, 2019

1 commit

  • drm-next-5.5-2019-10-09:

    amdgpu:
    - Additional RAS enablement for vega20
    - RAS page retirement and bad page storage in EEPROM
    - No GPU reset with unrecoverable RAS errors
    - Reserve vram for page tables rather than trying to evict
    - Fix issues with GPU reset and xgmi hives
    - DC i2c over aux fixes
    - Direct submission for clears, PTE/PDE updates
    - Improvements to help support recoverable GPU page faults
    - Silence harmless SAD block messages
    - Clean up code for creating a bo at a fixed location
    - Initial DC HDCP support
    - Lots of documentation fixes
    - GPU reset for renoir
    - Add IH clockgating support for soc15 asics
    - Powerplay improvements
    - DC MST cleanups
    - Add support for MSI-X
    - Misc cleanups and bug fixes

    amdkfd:
    - Query KFD device info by asic type rather than pci ids
    - Add navi14 support
    - Add renoir support
    - Add navi12 support
    - gfx10 trap handler improvements
    - pasid cleanups
    - Check against device cgroup

    ttm:
    - Return -EBUSY with pipelining with no_gpu_wait

    radeon:
    - Silence harmless SAD block messages

    device_cgroup:
    - Export devcgroup_check_permission

    Signed-off-by: Dave Airlie

    From: Alex Deucher
    Link: https://patchwork.freedesktop.org/patch/msgid/20191010041713.3412-1-alexander.deucher@amd.com

    Dave Airlie
     

24 Oct, 2019

1 commit


21 Oct, 2019

1 commit


18 Oct, 2019

1 commit

  • In current mainline, the degree of access to perf_event_open(2) system
    call depends on the perf_event_paranoid sysctl. This has a number of
    limitations:

    1. The sysctl is only a single value. Many types of accesses are controlled
    based on the single value thus making the control very limited and
    coarse grained.
    2. The sysctl is global, so if the sysctl is changed, then that means
    all processes get access to perf_event_open(2) opening the door to
    security issues.

    This patch adds LSM and SELinux access checking which will be used in
    Android to access perf_event_open(2) for the purposes of attaching BPF
    programs to tracepoints, perf profiling and other operations from
    userspace. These operations are intended for production systems.

    5 new LSM hooks are added:
    1. perf_event_open: This controls access during the perf_event_open(2)
    syscall itself. The hook is called from all the places that the
    perf_event_paranoid sysctl is checked to keep it consistent with the
    systctl. The hook gets passed a 'type' argument which controls CPU,
    kernel and tracepoint accesses (in this context, CPU, kernel and
    tracepoint have the same semantics as the perf_event_paranoid sysctl).
    Additionally, I added an 'open' type which is similar to
    perf_event_paranoid sysctl == 3 patch carried in Android and several other
    distros but was rejected in mainline [1] in 2016.

    2. perf_event_alloc: This allocates a new security object for the event
    which stores the current SID within the event. It will be useful when
    the perf event's FD is passed through IPC to another process which may
    try to read the FD. Appropriate security checks will limit access.

    3. perf_event_free: Called when the event is closed.

    4. perf_event_read: Called from the read(2) and mmap(2) syscalls for the event.

    5. perf_event_write: Called from the ioctl(2) syscalls for the event.

    [1] https://lwn.net/Articles/696240/

    Since Peter had suggest LSM hooks in 2016 [1], I am adding his
    Suggested-by tag below.

    To use this patch, we set the perf_event_paranoid sysctl to -1 and then
    apply selinux checking as appropriate (default deny everything, and then
    add policy rules to give access to domains that need it). In the future
    we can remove the perf_event_paranoid sysctl altogether.

    Suggested-by: Peter Zijlstra
    Co-developed-by: Peter Zijlstra
    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: James Morris
    Cc: Arnaldo Carvalho de Melo
    Cc: rostedt@goodmis.org
    Cc: Yonghong Song
    Cc: Kees Cook
    Cc: Ingo Molnar
    Cc: Alexei Starovoitov
    Cc: jeffv@google.com
    Cc: Jiri Olsa
    Cc: Daniel Borkmann
    Cc: primiano@google.com
    Cc: Song Liu
    Cc: rsavitski@google.com
    Cc: Namhyung Kim
    Cc: Matthew Garrett
    Link: https://lkml.kernel.org/r/20191014170308.70668-1-joel@joelfernandes.org

    Joel Fernandes (Google)
     

09 Oct, 2019

1 commit


08 Oct, 2019

1 commit

  • A policy developer can now specify glblub as a default_range default and
    the computed transition will be the intersection of the mls range of
    the two contexts.

    The glb (greatest lower bound) lub (lowest upper bound) of a range is calculated
    as the greater of the low sensitivities and the lower of the high sensitivities
    and the and of each category bitmap.

    This can be used by MLS solution developers to compute a context that satisfies,
    for example, the range of a network interface and the range of a user logging in.

    Some examples are:

    User Permitted Range | Network Device Label | Computed Label
    ---------------------|----------------------|----------------
    s0-s1:c0.c12 | s0 | s0
    s0-s1:c0.c12 | s0-s1:c0.c1023 | s0-s1:c0.c12
    s0-s4:c0.c512 | s1-s1:c0.c1023 | s1-s1:c0.c512
    s0-s15:c0,c2 | s4-s6:c0.c128 | s4-s6:c0,c2
    s0-s4 | s2-s6 | s2-s4
    s0-s4 | s5-s8 | INVALID
    s5-s8 | s0-s4 | INVALID

    Signed-off-by: Joshua Brindle
    [PM: subject lines and checkpatch.pl fixes]
    Signed-off-by: Paul Moore

    Joshua Brindle