18 Feb, 2019

16 commits

  • The sd argument of this macro can be a more complex expression. Since it
    is used 5 times in the macro it can be evaluated that many times as well.

    So assign it to a temp variable in the beginning and use that instead.

    This also avoids any potential side-effects of evaluating sd.

    Signed-off-by: Hans Verkuil
    Acked-by: Sakari Ailus
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • Remove unused but set variables to clean up the code and avoid
    warning.

    Signed-off-by: Lucas A. M. Magalhães
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Lucas A. M. Magalhães
     
  • The capture compose rectangle was not getting updated when setting
    the source subdevice's source pad format. This causes the compose window
    to be zero (or not updated) at stream start unless the capture device
    format was set explicitly at the capture device node.

    Fix by moving the calculation of the capture compose rectangle to
    imx_media_mbus_fmt_to_pix_fmt(), and pass the rectangle to
    imx_media_capture_device_set_format().

    Fixes: 439d8186fb23 ("media: imx: add capture compose rectangle")

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add VB2_USERPTR to the vimc capture device.

    Signed-off-by: Hans Verkuil
    Acked-by: Helen Koike
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • A merge conflict rised when merging from -rc7. Fix it.

    In this specific case, we don't need the if anymore, as the
    work_run was moved to its rightful place (struct vim2m_ctx).

    Fixes: b3e64e5b0778 ("media: vim2m: use per-file handler work queue")
    Fixes: 240809ef6630 ("media: vim2m: only cancel work if it is for right context")
    Reviewed-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • The linked commit changed s_fmt/try_fmt to fail if num_planes is bogus.
    This, however, is against the spec, which mandates drivers
    to return a proper num_planes value, without an error.

    Replace the num_planes check and instead clamp it to a sane value,
    so we still make sure we don't overflow the planes array by accident.

    Fixes: 9048b2e15b11c5 ("media: v4l: ioctl: Validate num_planes before using it")

    Signed-off-by: Ezequiel Garcia
    Reviewed-by: Sakari Ailus
    Signed-off-by: Mauro Carvalho Chehab

    Ezequiel Garcia
     
  • Linux 5.0-rc7

    * tag 'v5.0-rc7': (1667 commits)
    Linux 5.0-rc7
    Input: elan_i2c - add ACPI ID for touchpad in Lenovo V330-15ISK
    Input: st-keyscan - fix potential zalloc NULL dereference
    Input: apanel - switch to using brightness_set_blocking()
    powerpc/64s: Fix possible corruption on big endian due to pgd/pud_present()
    efi/arm: Revert "Defer persistent reservations until after paging_init()"
    arm64, mm, efi: Account for GICv3 LPI tables in static memblock reserve table
    sunrpc: fix 4 more call sites that were using stack memory with a scatterlist
    include/linux/module.h: copy __init/__exit attrs to init/cleanup_module
    Compiler Attributes: add support for __copy (gcc >= 9)
    lib/crc32.c: mark crc32_le_base/__crc32c_le_base aliases as __pure
    auxdisplay: ht16k33: fix potential user-after-free on module unload
    x86/platform/UV: Use efi_runtime_lock to serialise BIOS calls
    i2c: bcm2835: Clear current buffer pointers and counts after a transfer
    i2c: cadence: Fix the hold bit setting
    drm: Use array_size() when creating lease
    dm thin: fix bug where bio that overwrites thin block ignores FUA
    Revert "exec: load_script: don't blindly truncate shebang string"
    Revert "gfs2: read journal in large chunks to locate the head"
    net: ethernet: freescale: set FEC ethtool regs version
    ...

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Linus Torvalds
     
  • Pull EFI fixes from Ingo Molnar:
    "This tree reverts a GICv3 commit (which was broken) and fixes it in
    another way, by adding a memblock build-time entries quirk for ARM64"

    * 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    efi/arm: Revert "Defer persistent reservations until after paging_init()"
    arm64, mm, efi: Account for GICv3 LPI tables in static memblock reserve table

    Linus Torvalds
     
  • Pull x86 fixes from Ingo Molnar:
    "Three changes:

    - An UV fix/quirk to pull UV BIOS calls into the efi_runtime_lock
    locking regime. (This done by aliasing __efi_uv_runtime_lock to
    efi_runtime_lock, which should make the quirk nature obvious and
    maintain the general policy that the EFI lock (name...) isn't
    exposed to drivers.)

    - Our version of MAGA: Make a.out Great Again.

    - Add a new Intel model name enumerator to an upstream header to help
    reduce dependencies going forward"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/platform/UV: Use efi_runtime_lock to serialise BIOS calls
    x86/CPU: Add Icelake model number
    x86/a.out: Clear the dump structure initially

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "Two fixes on the kernel side: fix an over-eager condition that failed
    larger perf ring-buffer sizes, plus fix crashes in the Intel BTS code
    for a corner case, found by fuzzing"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/core: Fix impossible ring-buffer sizes warning
    perf/x86: Add check_period PMU callback

    Linus Torvalds
     
  • Pull powerpc fix from Michael Ellerman:
    "Just one fix, for pgd/pud_present() which were broken on big endian
    since v4.20, leading to possible data corruption.

    Thanks to: Aneesh Kumar K.V., Erhard F., Jan Kara"

    * tag 'powerpc-5.0-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/64s: Fix possible corruption on big endian due to pgd/pud_present()

    Linus Torvalds
     
  • Pull arch/csky fixes from Guo Ren:
    "Here are some fixup patches for 5.0-rc6"

    * tag 'csky-for-linus-5.0-rc6' of git://github.com/c-sky/csky-linux:
    csky: Fixup dead loop in show_stack
    csky: Fixup io-range page attribute for mmap("/dev/mem")
    csky: coding convention: Use task_stack_page
    csky: Fixup wrong pt_regs size
    csky: Fixup _PAGE_GLOBAL bit for 610 tlb entry

    Linus Torvalds
     
  • Pull i2c fixes from Wolfram Sang:
    "Two more driver bugfixes"

    * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: bcm2835: Clear current buffer pointers and counts after a transfer
    i2c: cadence: Fix the hold bit setting

    Linus Torvalds
     
  • Pull input fixes from Dmitry Torokhov:

    - tweaks to Elan drivers (both PS/2 and I2C) to support new devices.
    Also revert of one of IDs as that device should really be driven by
    i2c-hid + hid-multitouch

    - a few drivers have been switched to set_brightness_blocking() call
    because they either were sleeping the their set_brightness()
    implementation or used workqueue but were not canceling it on unbind.

    - ps2-gpio and matrix_keypad needed to [properly] flush their works to
    avoid potential use-after-free on unbind.

    - other miscellaneous fixes.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: elan_i2c - add ACPI ID for touchpad in Lenovo V330-15ISK
    Input: st-keyscan - fix potential zalloc NULL dereference
    Input: apanel - switch to using brightness_set_blocking()
    Revert "Input: elan_i2c - add ACPI ID for touchpad in ASUS Aspire F5-573G"
    Input: qt2160 - switch to using brightness_set_blocking()
    Input: matrix_keypad - use flush_delayed_work()
    Input: ps2-gpio - flush TX work when closing port
    Input: cap11xx - switch to using set_brightness_blocking()
    Input: elantech - enable 3rd button support on Fujitsu CELSIUS H780
    Input: bma150 - register input device after setting private data
    Input: pwm-vibra - stop regulator after disabling pwm, not before
    Input: pwm-vibra - prevent unbalanced regulator
    Input: snvs_pwrkey - allow selecting driver for i.MX 7D

    Linus Torvalds
     
  • Pull KVM fixes from Paolo Bonzini:
    "A somewhat bigger ARM update, and the usual smattering of x86 bug
    fixes"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    kvm: vmx: Fix entry number check for add_atomic_switch_msr()
    KVM: x86: Recompute PID.ON when clearing PID.SN
    KVM: nVMX: Restore a preemption timer consistency check
    x86/kvm/nVMX: read from MSR_IA32_VMX_PROCBASED_CTLS2 only when it is available
    KVM: arm64: Forbid kprobing of the VHE world-switch code
    KVM: arm64: Relax the restriction on using stage2 PUD huge mapping
    arm: KVM: Add missing kvm_stage2_has_pmd() helper
    KVM: arm/arm64: vgic: Always initialize the group of private IRQs
    arm/arm64: KVM: Don't panic on failure to properly reset system registers
    arm/arm64: KVM: Allow a VCPU to fully reset itself
    KVM: arm/arm64: Reset the VCPU without preemption and vcpu state loaded
    arm64: KVM: Don't generate UNDEF when LORegion feature is present
    KVM: arm/arm64: vgic: Make vgic_cpu->ap_list_lock a raw_spinlock
    KVM: arm/arm64: vgic: Make vgic_dist->lpi_list_lock a raw_spinlock
    KVM: arm/arm64: vgic: Make vgic_irq->irq_lock a raw_spinlock

    Linus Torvalds
     

17 Feb, 2019

9 commits

  • This adds ELAN0617 to the ACPI table to support Elan touchpad found in
    Lenovo V330-15ISK.

    Signed-off-by: Mauro Ciancio
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov

    Mauro Ciancio
     
  • This patch fixes the following static checker warning:

    drivers/input/keyboard/st-keyscan.c:156 keyscan_probe()
    error: potential zalloc NULL dereference: 'keypad_data->input_dev'

    Reported-by: Dan Carpenter
    Signed-off-by: Gabriel Fernandez
    Signed-off-by: Dmitry Torokhov

    Gabriel Fernandez
     
  • Now that LEDs core allows "blocking" flavor of "set brightness" method we
    can use it and get rid of private work item. As a bonus, we are no longer
    forgetting to cancel it when we unbind the driver.

    Reviewed-by: Sven Van Asbroeck
    Signed-off-by: Dmitry Torokhov

    Dmitry Torokhov
     
  • In v4.20 we changed our pgd/pud_present() to check for _PAGE_PRESENT
    rather than just checking that the value is non-zero, e.g.:

    static inline int pgd_present(pgd_t pgd)
    {
    - return !pgd_none(pgd);
    + return (pgd_raw(pgd) & cpu_to_be64(_PAGE_PRESENT));
    }

    Unfortunately this is broken on big endian, as the result of the
    bitwise & is truncated to int, which is always zero because
    _PAGE_PRESENT is 0x8000000000000000ul. This means pgd_present() and
    pud_present() are always false at compile time, and the compiler
    elides the subsequent code.

    Remarkably with that bug present we are still able to boot and run
    with few noticeable effects. However under some work loads we are able
    to trigger a warning in the ext4 code:

    WARNING: CPU: 11 PID: 29593 at fs/ext4/inode.c:3927 .ext4_set_page_dirty+0x70/0xb0
    CPU: 11 PID: 29593 Comm: debugedit Not tainted 4.20.0-rc1 #1
    ...
    NIP .ext4_set_page_dirty+0x70/0xb0
    LR .set_page_dirty+0xa0/0x150
    Call Trace:
    .set_page_dirty+0xa0/0x150
    .unmap_page_range+0xbf0/0xe10
    .unmap_vmas+0x84/0x130
    .unmap_region+0xe8/0x190
    .__do_munmap+0x2f0/0x510
    .__vm_munmap+0x80/0x110
    .__se_sys_munmap+0x14/0x30
    system_call+0x5c/0x70

    The fix is simple, we need to convert the result of the bitwise & to
    an int before returning it.

    Thanks to Erhard, Jan Kara and Aneesh for help with debugging.

    Fixes: da7ad366b497 ("powerpc/mm/book3s: Update pmd_present to look at _PAGE_PRESENT bit")
    Cc: stable@vger.kernel.org # v4.20+
    Reported-by: Erhard F.
    Reviewed-by: Aneesh Kumar K.V
    Signed-off-by: Michael Ellerman

    Michael Ellerman
     
  • Pull ARM SoC fixes from Arnd Bergmann:
    "This week is a much smaller update, containing fixes only for TI OMAP,
    NXP i.MX and Rockchips platforms:

    omap:
    - omap4 had problems with lost timer interrupts
    - another IRQ handling issue with OMAP5
    - A workaround for a regression in the pwm-omap-dmtimer driver

    NXP i.MX:
    - eMMC was broken on the new imx8mq-evk board

    Rockchip:
    - a fix for new dtc graph warnings and a regulator fix for rock64
    - USB support broke on rk3328-rock64"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
    ARM: OMAP2+: fix lack of timer interrupts on CPU1 after hotplug
    arm64: dts: imx8mq: Fix boot from eMMC
    ARM: OMAP2+: Variable "reg" in function omap4_dsi_mux_pads() could be uninitialized
    ARM: dts: Configure clock parent for pwm vibra
    bus: ti-sysc: Fix timer handling with drop pm_runtime_irq_safe()
    arm64: dts: rockchip: enable usb-host regulators at boot on rk3328-rock64
    arm64: dts: rockchip: fix graph_port warning on rk3399 bob kevin and excavator
    ARM: OMAP5+: Fix inverted nirq pin interrupts with irq_set_type
    clocksource: timer-ti-dm: Fix pwm dmtimer usage of fck reparenting
    ARM: dts: rockchip: remove qos_cif1 from rk3188 power-domain

    Linus Torvalds
     
  • Pull more nfsd fixes from Bruce Fields:
    "Two small fixes, one for crashes using nfs/krb5 with older enctypes,
    one that could prevent clients from reclaiming state after a kernel
    upgrade"

    * tag 'nfsd-5.0-2' of git://linux-nfs.org/~bfields/linux:
    sunrpc: fix 4 more call sites that were using stack memory with a scatterlist
    Revert "nfsd4: return default lease period"

    Linus Torvalds
     
  • Pull more NFS client fixes from Anna Schumaker:
    "Three fixes this time.

    Nicolas's is for xprtrdma completion vector allocation on single-core
    systems. Greg's adds an error check when allocating a debugfs dentry.
    And Ben's is an additional fix for nfs_page_async_flush() to prevent
    pages from accidentally getting truncated.

    Summary:

    - Make sure Send CQ is allocated on an existing compvec

    - Properly check debugfs dentry before using it

    - Don't use page_file_mapping() after removing a page"

    * tag 'nfs-for-5.0-4' of git://git.linux-nfs.org/projects/anna/linux-nfs:
    NFS: Don't use page_file_mapping after removing the page
    rpc: properly check debugfs dentry before using it
    xprtrdma: Make sure Send CQ is allocated on an existing compvec

    Linus Torvalds
     
  • Pull auxdisplay fix from Miguel Ojeda:
    "Fix potential user-after-free on ht16k33 module unload. Reported by
    Sven Van Asbroeck"

    * tag 'auxdisplay-for-linus-v5.0-rc7' of git://github.com/ojeda/linux:
    auxdisplay: ht16k33: fix potential user-after-free on module unload

    Linus Torvalds
     
  • Pull compiler attributes fixes from Miguel Ojeda:
    "Clean the new GCC 9 -Wmissing-attributes warnings

    The upcoming GCC 9 release extends the -Wmissing-attributes warnings
    (enabled by -Wall) to C and aliases: it warns when particular function
    attributes are missing in the aliases but not in their target, e.g.:

    void __cold f(void) {}
    void __alias("f") g(void);

    diagnoses:

    warning: 'g' specifies less restrictive attribute than
    its target 'f': 'cold' [-Wmissing-attributes]

    These patch series clean these new warnings. Most of them are caused
    by the module_init/exit macros"

    Link: https://lore.kernel.org/lkml/20190125104353.2791-1-labbott@redhat.com/

    * tag 'compiler-attributes-for-linus-v5.0-rc7' of git://github.com/ojeda/linux:
    include/linux/module.h: copy __init/__exit attrs to init/cleanup_module
    Compiler Attributes: add support for __copy (gcc >= 9)
    lib/crc32.c: mark crc32_le_base/__crc32c_le_base aliases as __pure

    Linus Torvalds
     

16 Feb, 2019

15 commits

  • This reverts commit eff896288872d687d9662000ec9ae11b6d61766f, which
    deferred the processing of persistent memory reservations to a point
    where the memory may have already been allocated and overwritten,
    defeating the purpose.

    Signed-off-by: Ard Biesheuvel
    Acked-by: Will Deacon
    Cc: Linus Torvalds
    Cc: Marc Zyngier
    Cc: Mike Rapoport
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190215123333.21209-3-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Ard Biesheuvel
     
  • In the irqchip and EFI code, we have what basically amounts to a quirk
    to work around a peculiarity in the GICv3 architecture, which permits
    the system memory address of LPI tables to be programmable only once
    after a CPU reset. This means kexec kernels must use the same memory
    as the first kernel, and thus ensure that this memory has not been
    given out for other purposes by the time the ITS init code runs, which
    is not very early for secondary CPUs.

    On systems with many CPUs, these reservations could overflow the
    memblock reservation table, and this was addressed in commit:

    eff896288872 ("efi/arm: Defer persistent reservations until after paging_init()")

    However, this turns out to have made things worse, since the allocation
    of page tables and heap space for the resized memblock reservation table
    itself may overwrite the regions we are attempting to reserve, which may
    cause all kinds of corruption, also considering that the ITS will still
    be poking bits into that memory in response to incoming MSIs.

    So instead, let's grow the static memblock reservation table on such
    systems so it can accommodate these reservations at an earlier time.
    This will permit us to revert the above commit in a subsequent patch.

    [ mingo: Minor cleanups. ]

    Signed-off-by: Ard Biesheuvel
    Acked-by: Mike Rapoport
    Acked-by: Will Deacon
    Acked-by: Marc Zyngier
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190215123333.21209-2-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar

    Ard Biesheuvel
     
  • Pull SCSI fixes from James Bottomley:
    "Two fairly small fixes: the qla one is a panic inducing use after free
    and the entropy fix may seem minor but it has had huge userspace
    impact thanks to an unrelated change in openssl that causes sshd to
    refuse logins until it has enough entropy for the session keys, which
    causes tens of minutes delay before the affected systems allow logins
    after reboot"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: qla2xxx: Fix panic from use after free in qla2x00_async_tm_cmd
    scsi: sd: fix entropy gathering for most rotational disks

    Linus Torvalds
     
  • While trying to reproduce a reported kernel panic on arm64, I discovered
    that AUTH_GSS basically doesn't work at all with older enctypes on arm64
    systems with CONFIG_VMAP_STACK enabled. It turns out there still a few
    places using stack memory with scatterlists, causing krb5_encrypt() and
    krb5_decrypt() to produce incorrect results (or a BUG if CONFIG_DEBUG_SG
    is enabled).

    Tested with cthon on v4.0/v4.1/v4.2 with krb5/krb5i/krb5p using
    des3-cbc-sha1 and arcfour-hmac-md5.

    Signed-off-by: Scott Mayhew
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields

    Scott Mayhew
     
  • …/git/tmlind/linux-omap into arm/fixes

    Fix omap4 and later lost cpu1 interrupts for periodic timer

    A fix from Russell that took a while to get applied into fixes as
    I thought Russell is merging this one.

    * tag 'omap-for-v5.0/fixes-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: OMAP2+: fix lack of timer interrupts on CPU1 after hotplug

    Arnd Bergmann
     
  • The upcoming GCC 9 release extends the -Wmissing-attributes warnings
    (enabled by -Wall) to C and aliases: it warns when particular function
    attributes are missing in the aliases but not in their target.

    In particular, it triggers for all the init/cleanup_module
    aliases in the kernel (defined by the module_init/exit macros),
    ending up being very noisy.

    These aliases point to the __init/__exit functions of a module,
    which are defined as __cold (among other attributes). However,
    the aliases themselves do not have the __cold attribute.

    Since the compiler behaves differently when compiling a __cold
    function as well as when compiling paths leading to calls
    to __cold functions, the warning is trying to point out
    the possibly-forgotten attribute in the alias.

    In order to keep the warning enabled, we decided to silence
    this case. Ideally, we would mark the aliases directly
    as __init/__exit. However, there are currently around 132 modules
    in the kernel which are missing __init/__exit in their init/cleanup
    functions (either because they are missing, or for other reasons,
    e.g. the functions being called from somewhere else); and
    a section mismatch is a hard error.

    A conservative alternative was to mark the aliases as __cold only.
    However, since we would like to eventually enforce __init/__exit
    to be always marked, we chose to use the new __copy function
    attribute (introduced by GCC 9 as well to deal with this).
    With it, we copy the attributes used by the target functions
    into the aliases. This way, functions that were not marked
    as __init/__exit won't have their aliases marked either,
    and therefore there won't be a section mismatch.

    Note that the warning would go away marking either the extern
    declaration, the definition, or both. However, we only mark
    the definition of the alias, since we do not want callers
    (which only see the declaration) to be compiled as if the function
    was __cold (and therefore the paths leading to those calls
    would be assumed to be unlikely).

    Link: https://lore.kernel.org/lkml/20190123173707.GA16603@gmail.com/
    Link: https://lore.kernel.org/lkml/20190206175627.GA20399@gmail.com/
    Suggested-by: Martin Sebor
    Acked-by: Jessica Yu
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     
  • From the GCC manual:

    copy
    copy(function)

    The copy attribute applies the set of attributes with which function
    has been declared to the declaration of the function to which
    the attribute is applied. The attribute is designed for libraries
    that define aliases or function resolvers that are expected
    to specify the same set of attributes as their targets. The copy
    attribute can be used with functions, variables, or types. However,
    the kind of symbol to which the attribute is applied (either
    function or variable) must match the kind of symbol to which
    the argument refers. The copy attribute copies only syntactic and
    semantic attributes but not attributes that affect a symbol’s
    linkage or visibility such as alias, visibility, or weak.
    The deprecated attribute is also not copied.

    https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html

    The upcoming GCC 9 release extends the -Wmissing-attributes warnings
    (enabled by -Wall) to C and aliases: it warns when particular function
    attributes are missing in the aliases but not in their target, e.g.:

    void __cold f(void) {}
    void __alias("f") g(void);

    diagnoses:

    warning: 'g' specifies less restrictive attribute than
    its target 'f': 'cold' [-Wmissing-attributes]

    Using __copy(f) we can copy the __cold attribute from f to g:

    void __cold f(void) {}
    void __copy(f) __alias("f") g(void);

    This attribute is most useful to deal with situations where an alias
    is declared but we don't know the exact attributes the target has.

    For instance, in the kernel, the widely used module_init/exit macros
    define the init/cleanup_module aliases, but those cannot be marked
    always as __init/__exit since some modules do not have their
    functions marked as such.

    Suggested-by: Martin Sebor
    Reviewed-by: Nick Desaulniers
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     
  • The upcoming GCC 9 release extends the -Wmissing-attributes warnings
    (enabled by -Wall) to C and aliases: it warns when particular function
    attributes are missing in the aliases but not in their target.

    In particular, it triggers here because crc32_le_base/__crc32c_le_base
    aren't __pure while their target crc32_le/__crc32c_le are.

    These aliases are used by architectures as a fallback in accelerated
    versions of CRC32. See commit 9784d82db3eb ("lib/crc32: make core crc32()
    routines weak so they can be overridden").

    Therefore, being fallbacks, it is likely that even if the aliases
    were called from C, there wouldn't be any optimizations possible.
    Currently, the only user is arm64, which calls this from asm.

    Still, marking the aliases as __pure makes sense and is a good idea
    for documentation purposes and possible future optimizations,
    which also silences the warning.

    Acked-by: Ard Biesheuvel
    Tested-by: Laura Abbott
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     
  • On module unload/remove, we need to ensure that work does not run
    after we have freed resources. Concretely, cancel_delayed_work()
    may return while the callback function is still running.

    From kernel/workqueue.c:

    The work callback function may still be running on return,
    unless it returns true and the work doesn't re-arm itself.
    Explicitly flush or use cancel_delayed_work_sync() to wait on it.

    Link: https://lore.kernel.org/lkml/20190204220952.30761-1-TheSven73@googlemail.com/
    Reported-by: Sven Van Asbroeck
    Reviewed-by: Dmitry Torokhov
    Reviewed-by: Sven Van Asbroeck
    Acked-by: Robin van der Gracht
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     
  • Pull block fixes from Jens Axboe:

    - Ensure we insert into the hctx dispatch list, if a request is marked
    as DONTPREP (Jianchao)

    - NVMe pull request, single missing unlock on error fix (Keith)

    - MD pull request, single fix for a potentially data corrupting issue
    (Nate)

    - Floppy check_events regression fix (Yufen)

    * tag 'for-linus-20190215' of git://git.kernel.dk/linux-block:
    md/raid1: don't clear bitmap bits on interrupted recovery.
    floppy: check_events callback should not return a negative number
    nvme-pci: add missing unlock for reset error
    blk-mq: insert rq with DONTPREP to hctx dispatch list when requeue

    Linus Torvalds
     
  • …device-mapper/linux-dm

    Pull device mapper fixes from Mike Snitzer:

    - Fix bug in DM crypt's sizing of its block integrity tag space,
    resulting in less memory use when DM crypt layers on DM integrity.

    - Fix a long-standing DM thinp crash consistency bug that was due to
    improper handling of FUA. This issue is specific to writes that fill
    an entire thinp block which needs to be allocated.

    * tag 'for-5.0/dm-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm thin: fix bug where bio that overwrites thin block ignores FUA
    dm crypt: don't overallocate the integrity tag space

    Linus Torvalds
     
  • Pull MMC fixes from Ulf Hansson:
    "A couple of MMC fixes intended for v5.0-rc7.

    MMC core:
    - Fix deadlock bug for block I/O requests

    MMC host:
    - sunxi: Disable broken HS-DDR mode for H5 by default
    - sunxi: Avoid unsupported speed modes declared via DT
    - meson-gx: Restore interrupt name"

    * tag 'mmc-v5.0-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
    mmc: meson-gx: fix interrupt name
    mmc: block: handle complete_work on separate workqueue
    mmc: sunxi: Filter out unsupported modes declared in the device tree
    mmc: sunxi: Disable HS-DDR mode for H5 eMMC controller by default

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Usual pull request, little larger than I'd like but nothing too
    strange in it. Willy found an bug in the lease ioctl calculations, but
    it's a drm master only ioctl which makes it harder to mess with.

    i915:
    - combo phy programming fix
    - opregion version check fix for VBT RVDA lookup
    - gem mmap ioctl race fix
    - fbdev hpd during suspend fix
    - array size bounds check fix in pmu

    amdgpu:
    - Vega20 psp fix
    - Add vrr range to debugfs for freesync debugging

    sched:
    - Scheduler race fix

    vkms:
    - license header fixups

    imx:
    - Fix CSI register offsets for i.MX51 and i.MX53.
    - Fix delayed page flip completion events on i.MX6QP due to
    unexpected behaviour of the PRE when issuing NOP buffer updates to
    the same buffer address.
    - Stop throwing errors for plane updates on disabled CRTCs when a
    userspace process is killed while a plane update is pending.
    - Add missing of_node_put cleanup in imx_ldb_bind"

    * tag 'drm-fixes-2019-02-15-1' of git://anongit.freedesktop.org/drm/drm:
    drm: Use array_size() when creating lease
    drm/amdgpu/psp11: TA firmware is optional (v3)
    drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
    drm/i915/opregion: fix version check
    drm/i915: Prevent a race during I915_GEM_MMAP ioctl with WC set
    drm/i915: Block fbdev HPD processing during suspend
    drm/i915/pmu: Fix enable count array size and bounds checking
    drm/i915/cnl: Fix CNL macros for Voltage Swing programming
    drm/i915/icl: combo port vswing programming changes per BSPEC
    drm/vkms: Fix license inconsistent
    drm/amd/display: Expose connector VRR range via debugfs
    drm/sched: Always trace the dependencies we wait on, to fix a race.
    gpu: ipu-v3: pre: don't trigger update if buffer address doesn't change
    gpu: ipu-v3: Fix CSI offsets for imx53
    drm/imx: imx-ldb: add missing of_node_puts
    gpu: ipu-v3: Fix i.MX51 CSI control registers offset
    drm/imx: ignore plane updates on disabled crtcs

    Linus Torvalds
     
  • Pull crypto fix from Herbert Xu:
    "This fixes a crash on resume in the ccree driver"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: ccree - fix resume race condition on init

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Fix MAC address setting in mac80211 pmsr code, from Johannes Berg.

    2) Probe SFP modules after being attached, from Russell King.

    3) Byte ordering bug in SMC rx_curs_confirmed code, from Ursula Braun.

    4) Revert some r8169 changes that are causing regressions, from Heiner
    Kallweit.

    5) Fix spurious connection timeouts in netfilter nat code, from Florian
    Westphal.

    6) SKB leak in tipc, from Hoang Le.

    7) Short packet checkum issue in mlx4, similar to a previous mlx5
    change, from Saeed Mahameed. The issue is that whilst padding bytes
    are usually zero, it is not guarateed and the hardware doesn't take
    the padding bytes into consideration when generating the checksum.

    8) Fix various races in cls_tcindex, from Cong Wang.

    9) Need to set stream ext to NULL before freeing in SCTP code, from Xin
    Long.

    10) Fix locking in phy_is_started, from Heiner Kallweit.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (54 commits)
    net: ethernet: freescale: set FEC ethtool regs version
    net: hns: Fix object reference leaks in hns_dsaf_roce_reset()
    mm: page_alloc: fix ref bias in page_frag_alloc() for 1-byte allocs
    net: phy: fix potential race in the phylib state machine
    net: phy: don't use locking in phy_is_started
    selftests: fix timestamping Makefile
    net: dsa: bcm_sf2: potential array overflow in bcm_sf2_sw_suspend()
    net: fix possible overflow in __sk_mem_raise_allocated()
    dsa: mv88e6xxx: Ensure all pending interrupts are handled prior to exit
    net: phy: fix interrupt handling in non-started states
    sctp: set stream ext to NULL after freeing it in sctp_stream_outq_migrate
    sctp: call gso_reset_checksum when computing checksum in sctp_gso_segment
    net/mlx5e: XDP, fix redirect resources availability check
    net/mlx5: Fix a compilation warning in events.c
    net/mlx5: No command allowed when command interface is not ready
    net/mlx5e: Fix NULL pointer derefernce in set channels error flow
    netfilter: nft_compat: use-after-free when deleting targets
    team: avoid complex list operations in team_nl_cmd_options_set()
    net_sched: fix two more memory leaks in cls_tcindex
    net_sched: fix a memory leak in cls_tcindex
    ...

    Linus Torvalds