23 Mar, 2020

1 commit

  • Merge misc fixes from Andrew Morton:
    "10 fixes"

    * emailed patches from Andrew Morton :
    x86/mm: split vmalloc_sync_all()
    mm, slub: prevent kmalloc_node crashes and memory leaks
    mm/mmu_notifier: silence PROVE_RCU_LIST warnings
    epoll: fix possible lost wakeup on epoll_ctl() path
    mm: do not allow MADV_PAGEOUT for CoW pages
    mm, memcg: throttle allocators based on ancestral memory.high
    mm, memcg: fix corruption on 64-bit divisor in memory.high throttling
    page-flags: fix a crash at SetPageError(THP_SWAP)
    mm/hotplug: fix hot remove failure in SPARSEMEM|!VMEMMAP case
    memcg: fix NULL pointer dereference in __mem_cgroup_usage_unregister_event

    Linus Torvalds
     

22 Mar, 2020

3 commits

  • Commit 3f8fd02b1bf1 ("mm/vmalloc: Sync unmappings in
    __purge_vmap_area_lazy()") introduced a call to vmalloc_sync_all() in
    the vunmap() code-path. While this change was necessary to maintain
    correctness on x86-32-pae kernels, it also adds additional cycles for
    architectures that don't need it.

    Specifically on x86-64 with CONFIG_VMAP_STACK=y some people reported
    severe performance regressions in micro-benchmarks because it now also
    calls the x86-64 implementation of vmalloc_sync_all() on vunmap(). But
    the vmalloc_sync_all() implementation on x86-64 is only needed for newly
    created mappings.

    To avoid the unnecessary work on x86-64 and to gain the performance
    back, split up vmalloc_sync_all() into two functions:

    * vmalloc_sync_mappings(), and
    * vmalloc_sync_unmappings()

    Most call-sites to vmalloc_sync_all() only care about new mappings being
    synchronized. The only exception is the new call-site added in the
    above mentioned commit.

    Shile Zhang directed us to a report of an 80% regression in reaim
    throughput.

    Fixes: 3f8fd02b1bf1 ("mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy()")
    Reported-by: kernel test robot
    Reported-by: Shile Zhang
    Signed-off-by: Joerg Roedel
    Signed-off-by: Andrew Morton
    Tested-by: Borislav Petkov
    Acked-by: Rafael J. Wysocki [GHES]
    Cc: Dave Hansen
    Cc: Andy Lutomirski
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc:
    Link: http://lkml.kernel.org/r/20191009124418.8286-1-joro@8bytes.org
    Link: https://lists.01.org/hyperkitty/list/lkp@lists.01.org/thread/4D3JPPHBNOSPFK2KEPC6KGKS6J25AIDB/
    Link: http://lkml.kernel.org/r/20191113095530.228959-1-shile.zhang@linux.alibaba.com
    Signed-off-by: Linus Torvalds

    Joerg Roedel
     
  • Commit bd4c82c22c36 ("mm, THP, swap: delay splitting THP after swapped
    out") supported writing THP to a swap device but forgot to upgrade an
    older commit df8c94d13c7e ("page-flags: define behavior of FS/IO-related
    flags on compound pages") which could trigger a crash during THP
    swapping out with DEBUG_VM_PGFLAGS=y,

    kernel BUG at include/linux/page-flags.h:317!

    page dumped because: VM_BUG_ON_PAGE(1 && PageCompound(page))
    page:fffff3b2ec3a8000 refcount:512 mapcount:0 mapping:000000009eb0338c index:0x7f6e58200 head:fffff3b2ec3a8000 order:9 compound_mapcount:0 compound_pincount:0
    anon flags: 0x45fffe0000d8454(uptodate|lru|workingset|owner_priv_1|writeback|head|reclaim|swapbacked)

    end_swap_bio_write()
    SetPageError(page)
    VM_BUG_ON_PAGE(1 && PageCompound(page))


    bio_endio+0x297/0x560
    dec_pending+0x218/0x430 [dm_mod]
    clone_endio+0xe4/0x2c0 [dm_mod]
    bio_endio+0x297/0x560
    blk_update_request+0x201/0x920
    scsi_end_request+0x6b/0x4b0
    scsi_io_completion+0x509/0x7e0
    scsi_finish_command+0x1ed/0x2a0
    scsi_softirq_done+0x1c9/0x1d0
    __blk_mqnterrupt+0xf/0x20

    Fix by checking PF_NO_TAIL in those places instead.

    Fixes: bd4c82c22c36 ("mm, THP, swap: delay splitting THP after swapped out")
    Signed-off-by: Qian Cai
    Signed-off-by: Andrew Morton
    Reviewed-by: David Hildenbrand
    Acked-by: "Huang, Ying"
    Acked-by: Rafael Aquini
    Cc:
    Link: http://lkml.kernel.org/r/20200310235846.1319-1-cai@lca.pw
    Signed-off-by: Linus Torvalds

    Qian Cai
     
  • Pull io_uring fixes from Jens Axboe:
    "Two different fixes in here:

    - Fix for a potential NULL pointer deref for links with async or
    drain marked (Pavel)

    - Fix for not properly checking RLIMIT_NOFILE for async punted
    operations.

    This affects openat/openat2, which were added this cycle, and
    accept4. I did a full audit of other cases where we might check
    current->signal->rlim[] and found only RLIMIT_FSIZE for buffered
    writes and fallocate. That one is fixed and queued for 5.7 and
    marked stable"

    * tag 'io_uring-5.6-20200320' of git://git.kernel.dk/linux-block:
    io_uring: make sure accept honor rlimit nofile
    io_uring: make sure openat/openat2 honor rlimit nofile
    io_uring: NULL-deref for IOSQE_{ASYNC,DRAIN}

    Linus Torvalds
     

20 Mar, 2020

2 commits

  • Just like commit 4022e7af86be, this fixes the fact that
    IORING_OP_ACCEPT ends up using get_unused_fd_flags(), which checks
    current->signal->rlim[] for limits.

    Add an extra argument to __sys_accept4_file() that allows us to pass
    in the proper nofile limit, and grab it at request prep time.

    Acked-by: David S. Miller
    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Dmitry reports that a test case shows that io_uring isn't honoring a
    modified rlimit nofile setting. get_unused_fd_flags() checks the task
    signal->rlimi[] for the limits. As this isn't easily inheritable,
    provide a __get_unused_fd_flags() that takes the value instead. Then we
    can grab it when the request is prepared (from the original task), and
    pass that in when we do the async part part of the open.

    Reported-by: Dmitry Kadashev
    Tested-by: Dmitry Kadashev
    Acked-by: David S. Miller
    Signed-off-by: Jens Axboe

    Jens Axboe
     

16 Mar, 2020

2 commits

  • Pull futex fix from Thomas Gleixner:
    "Fix for yet another subtle futex issue.

    The futex code used ihold() to prevent inodes from vanishing, but
    ihold() does not guarantee inode persistence. Replace the inode
    pointer with a per boot, machine wide, unique inode identifier.

    The second commit fixes the breakage of the hash mechanism which
    causes a 100% performance regression"

    * tag 'locking-urgent-2020-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    futex: Unbreak futex hashing
    futex: Fix inode life-time issue

    Linus Torvalds
     
  • Pull IOMMU fixes from Joerg Roedel:

    - Intel VT-d fixes:
    - RCU list handling fixes
    - Replace WARN_TAINT with pr_warn + add_taint for reporting firmware
    issues
    - DebugFS fixes
    - Fix for hugepage handling in iova_to_phys implementation
    - Fix for handling VMD devices, which have a domain number which
    doesn't fit into 16 bits
    - Warning message fix

    - MSI allocation fix for iommu-dma code

    - Sign-extension fix for io page-table code

    - Fix for AMD-Vi to properly update the is-running bit when AVIC is
    used

    * tag 'iommu-fixes-v5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    iommu/vt-d: Populate debugfs if IOMMUs are detected
    iommu/amd: Fix IOMMU AVIC not properly update the is_run bit in IRTE
    iommu/vt-d: Ignore devices with out-of-spec domain number
    iommu/vt-d: Fix the wrong printing in RHSA parsing
    iommu/vt-d: Fix debugfs register reads
    iommu/vt-d: quirk_ioat_snb_local_iommu: replace WARN_TAINT with pr_warn + add_taint
    iommu/vt-d: dmar_parse_one_rmrr: replace WARN_TAINT with pr_warn + add_taint
    iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint
    iommu/vt-d: Silence RCU-list debugging warnings
    iommu/vt-d: Fix RCU-list bugs in intel_iommu_init()
    iommu/dma: Fix MSI reservation allocation
    iommu/io-pgtable-arm: Fix IOVA validation for 32-bit
    iommu/vt-d: Fix a bug in intel_iommu_iova_to_phys() for huge page
    iommu/vt-d: Fix RCU list debugging warnings

    Linus Torvalds
     

14 Mar, 2020

3 commits

  • Pull clk fixes from Stephen Boyd:
    "A small collection of fixes. I'll make another sweep soon to look for
    more fixes for this -rc series.

    - Mark device node const in of_clk_get_parent APIs to ease landing
    changes in users later

    - Fix flag for Qualcomm SC7180 video clocks where we thought it would
    never turn off but actually hardware takes care of it

    - Remove disp_cc_mdss_rscc_ahb_clk on Qualcomm SC7180 SoCs because
    this clk is always on anyway

    - Correct some bad dt-binding numbers for i.MX8MN SoCs"

    * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
    clk: imx8mn: Fix incorrect clock defines
    clk: qcom: dispcc: Remove support of disp_cc_mdss_rscc_ahb_clk
    clk: qcom: videocc: Update the clock flag for video_cc_vcodec0_core_clk
    of: clk: Make of_clk_get_parent_{count,name}() parameter const

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "A few fixes that should go into this release. This contains:

    - Fix for a corruption issue with the s390 dasd driver (Stefan)

    - Fixup/improvement for the flush insertion change that we had in
    this series (Ming)

    - Fix for the partition suppor for host aware zoned devices
    (Shin'ichiro)

    - Fix incorrect blk-iocost comparison (Tejun)

    The diffstat looks large, but that's a) mostly dasd, and b) the flush
    fix from Ming adds a big comment"

    * tag 'block-5.6-2020-03-13' of git://git.kernel.dk/linux-block:
    block: Fix partition support for host aware zoned block devices
    blk-mq: insert flush request to the front of dispatch queue
    s390/dasd: fix data corruption for thin provisioned devices
    blk-iocost: fix incorrect vtime comparison in iocg_is_idle()

    Linus Torvalds
     
  • Pull MMC fixes from Ulf Hansson:
    "MMC core:

    - Fix HW busy detection support for host controllers requiring the
    MMC_RSP_BUSY response flag (R1B) to be set for the command. In
    particular for CMD6 (eMMC), erase/trim/discard (SD/eMMC) and CMD5
    (eMMC sleep).

    MMC host:

    - sdhci-omap|tegra: Fix support for HW busy detection"

    * tag 'mmc-v5.6-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
    mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for eMMC sleep command
    mmc: sdhci-tegra: Fix busy detection by enabling MMC_CAP_NEED_RSP_BUSY
    mmc: sdhci-omap: Fix busy detection by enabling MMC_CAP_NEED_RSP_BUSY
    mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for erase/trim/discard
    mmc: core: Allow host controllers to require R1B for CMD6

    Linus Torvalds
     

13 Mar, 2020

6 commits

  • Commit 6825d3ea6cde ("iommu/vt-d: Add debugfs support to show register
    contents") dumps the register contents for all IOMMU devices.

    Currently, a 64 bit read(dmar_readq) is done for all the IOMMU registers,
    even though some of the registers are 32 bits, which is incorrect.

    Use the correct read function variant (dmar_readl/dmar_readq) while
    reading the contents of 32/64 bit registers respectively.

    Signed-off-by: Megha Dey
    Link: https://lore.kernel.org/r/1583784587-26126-2-git-send-email-megha.dey@linux.intel.com
    Acked-by: Lu Baolu
    Signed-off-by: Joerg Roedel

    Megha Dey
     
  • Pull drm fixes from Dave Airlie:
    "It's a bit quieter, probably not as much as it could be.

    There is on large regression fix in here from Lyude for displayport
    bandwidth calculations, there've been reports of multi-monitor in
    docks not working since -rc1 and this has been tested to fix those.

    Otherwise it's a bunch of i915 (with some GVT fixes), a set of amdgpu
    watermark + bios fixes, and an exynos iommu cleanup fix.

    core:
    - DP MST bandwidth regression fix.

    i915:
    - hard lockup fix
    - GVT fixes
    - 32-bit alignment issue fix
    - timeline wait fixes
    - cacheline_retire and free

    amdgpu:
    - Update the display watermark bounding box for navi14
    - Fix fetching vbios directly from rom on vega20/arcturus
    - Navi and renoir watermark fixes

    exynos:
    - iommu object cleanup fix"

    `

    * tag 'drm-fixes-2020-03-13' of git://anongit.freedesktop.org/drm/drm:
    drm/dp_mst: Rewrite and fix bandwidth limit checks
    drm/dp_mst: Reprobe path resources in CSN handler
    drm/dp_mst: Use full_pbn instead of available_pbn for bandwidth checks
    drm/dp_mst: Rename drm_dp_mst_is_dp_mst_end_device() to be less redundant
    drm/i915: Defer semaphore priority bumping to a workqueue
    drm/i915/gt: Close race between cacheline_retire and free
    drm/i915/execlists: Enable timeslice on partial virtual engine dequeue
    drm/i915: be more solid in checking the alignment
    drm/i915/gvt: Fix dma-buf display blur issue on CFL
    drm/i915: Return early for await_start on same timeline
    drm/i915: Actually emit the await_start
    drm/amdgpu/powerplay: nv1x, renior copy dcn clock settings of watermark to smu during boot up
    drm/exynos: Fix cleanup of IOMMU related objects
    drm/amdgpu: correct ROM_INDEX/DATA offset for VEGA20
    drm/amd/display: update soc bb for nv14
    drm/i915/gvt: Fix emulated vbt size issue
    drm/i915/gvt: Fix unnecessary schedule timer when no vGPU exits

    Linus Torvalds
     
  • Pull networking fixes from David Miller:
    "It looks like a decent sized set of fixes, but a lot of these are one
    liner off-by-one and similar type changes:

    1) Fix netlink header pointer to calcular bad attribute offset
    reported to user. From Pablo Neira Ayuso.

    2) Don't double clear PHY interrupts when ->did_interrupt is set,
    from Heiner Kallweit.

    3) Add missing validation of various (devlink, nl802154, fib, etc.)
    attributes, from Jakub Kicinski.

    4) Missing *pos increments in various netfilter seq_next ops, from
    Vasily Averin.

    5) Missing break in of_mdiobus_register() loop, from Dajun Jin.

    6) Don't double bump tx_dropped in veth driver, from Jiang Lidong.

    7) Work around FMAN erratum A050385, from Madalin Bucur.

    8) Make sure ARP header is pulled early enough in bonding driver,
    from Eric Dumazet.

    9) Do a cond_resched() during multicast processing of ipvlan and
    macvlan, from Mahesh Bandewar.

    10) Don't attach cgroups to unrelated sockets when in interrupt
    context, from Shakeel Butt.

    11) Fix tpacket ring state management when encountering unknown GSO
    types. From Willem de Bruijn.

    12) Fix MDIO bus PHY resume by checking mdio_bus_phy_may_suspend()
    only in the suspend context. From Heiner Kallweit"

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (112 commits)
    net: systemport: fix index check to avoid an array out of bounds access
    tc-testing: add ETS scheduler to tdc build configuration
    net: phy: fix MDIO bus PM PHY resuming
    net: hns3: clear port base VLAN when unload PF
    net: hns3: fix RMW issue for VLAN filter switch
    net: hns3: fix VF VLAN table entries inconsistent issue
    net: hns3: fix "tc qdisc del" failed issue
    taprio: Fix sending packets without dequeueing them
    net: mvmdio: avoid error message for optional IRQ
    net: dsa: mv88e6xxx: Add missing mask of ATU occupancy register
    net: memcg: fix lockdep splat in inet_csk_accept()
    s390/qeth: implement smarter resizing of the RX buffer pool
    s390/qeth: refactor buffer pool code
    s390/qeth: use page pointers to manage RX buffer pool
    seg6: fix SRv6 L2 tunnels to use IANA-assigned protocol number
    net: dsa: Don't instantiate phylink for CPU/DSA ports unless needed
    net/packet: tpacket_rcv: do not increment ring index on drop
    sxgbe: Fix off by one in samsung driver strncpy size arg
    net: caif: Add lockdep expression to RCU traversal primitive
    MAINTAINERS: remove Sathya Perla as Emulex NIC maintainer
    ...

    Linus Torvalds
     
  • DisplayPort specifications are fun. For a while, it's been really
    unclear to us what available_pbn actually does. There's a somewhat vague
    explanation in the DisplayPort spec (starting from 1.2) that partially
    explains it:

    The minimum payload bandwidth number supported by the path. Each node
    updates this number with its available payload bandwidth number if its
    payload bandwidth number is less than that in the Message Transaction
    reply.

    So, it sounds like available_pbn represents the smallest link rate in
    use between the source and the branch device. Cool, so full_pbn is just
    the highest possible PBN that the branch device supports right?

    Well, we assumed that for quite a while until Sean Paul noticed that on
    some MST hubs, available_pbn will actually get set to 0 whenever there's
    any active payloads on the respective branch device. This caused quite a
    bit of confusion since clearing the payload ID table would end up fixing
    the available_pbn value.

    So, we just went with that until commit cd82d82cbc04 ("drm/dp_mst: Add
    branch bandwidth validation to MST atomic check") started breaking
    people's setups due to us getting erroneous available_pbn values. So, we
    did some more digging and got confused until we finally looked at the
    definition for full_pbn:

    The bandwidth of the link at the trained link rate and lane count
    between the DP Source device and the DP Sink device with no time slots
    allocated to VC Payloads, represented as a Payload Bandwidth Number. As
    with the Available_Payload_Bandwidth_Number, this number is determined
    by the link with the lowest lane count and link rate.

    That's what we get for not reading specs closely enough, hehe. So, since
    full_pbn is definitely what we want for doing bandwidth restriction
    checks - let's start using that instead and ignore available_pbn
    entirely.

    Signed-off-by: Lyude Paul
    Fixes: cd82d82cbc04 ("drm/dp_mst: Add branch bandwidth validation to MST atomic check")
    Cc: Mikita Lipski
    Cc: Hans de Goede
    Cc: Sean Paul
    Reviewed-by: Mikita Lipski
    Link: https://patchwork.freedesktop.org/patch/msgid/20200306234623.547525-3-lyude@redhat.com
    Reviewed-by: Alex Deucher
    Tested-by: Hans de Goede

    Lyude Paul
     
  • So far we have the unfortunate situation that mdio_bus_phy_may_suspend()
    is called in suspend AND resume path, assuming that function result is
    the same. After the original change this is no longer the case,
    resulting in broken resume as reported by Geert.

    To fix this call mdio_bus_phy_may_suspend() in the suspend path only,
    and let the phy_device store the info whether it was suspended by
    MDIO bus PM.

    Fixes: 503ba7c69610 ("net: phy: Avoid multiple suspends")
    Reported-by: Geert Uytterhoeven
    Tested-by: Geert Uytterhoeven
    Signed-off-by: Heiner Kallweit
    Reviewed-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Heiner Kallweit
     
  • Pull crypto fix from Herbert Xu:
    "Fix a build problem with x86/curve25519"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: x86/curve25519 - support assemblers with no adx support

    Linus Torvalds
     

12 Mar, 2020

3 commits

  • Commit b72053072c0b ("block: allow partitions on host aware zone
    devices") introduced the helper function disk_has_partitions() to check
    if a given disk has valid partitions. However, since this function result
    directly depends on the disk partition table length rather than the
    actual existence of valid partitions in the table, it returns true even
    after all partitions are removed from the disk. For host aware zoned
    block devices, this results in zone management support to be kept
    disabled even after removing all partitions.

    Fix this by changing disk_has_partitions() to walk through the partition
    table entries and return true if and only if a valid non-zero size
    partition is found.

    Fixes: b72053072c0b ("block: allow partitions on host aware zone devices")
    Cc: stable@vger.kernel.org # 5.5
    Reviewed-by: Damien Le Moal
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Shin'ichiro Kawasaki
    Signed-off-by: Jens Axboe

    Shin'ichiro Kawasaki
     
  • The Internet Assigned Numbers Authority (IANA) has recently assigned
    a protocol number value of 143 for Ethernet [1].

    Before this assignment, encapsulation mechanisms such as Segment Routing
    used the IPv6-NoNxt protocol number (59) to indicate that the encapsulated
    payload is an Ethernet frame.

    In this patch, we add the definition of the Ethernet protocol number to the
    kernel headers and update the SRv6 L2 tunnels to use it.

    [1] https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

    Signed-off-by: Paolo Lungaroni
    Reviewed-by: Andrea Mayer
    Acked-by: Ahmed Abdelsalam
    Signed-off-by: David S. Miller

    Paolo Lungaroni
     
  • This does three inter-related things to clarify the usage of the
    platform device dma_mask field. In the process, fix the bug introduced
    by cdfee5623290 ("driver core: initialize a default DMA mask for
    platform device") that caused Artem Tashkinov's laptop to not boot with
    newer Fedora kernels.

    This does:

    - First off, rename the field to "platform_dma_mask" to make it
    greppable.

    We have way too many different random fields called "dma_mask" in
    various data structures, where some of them are actual masks, and
    some of them are just pointers to the mask. And the structures all
    have pointers to each other, or embed each other inside themselves,
    and "pdev" sometimes means "platform device" and sometimes it means
    "PCI device".

    So to make it clear in the code when you actually use this new field,
    give it a unique name (it really should be something even more unique
    like "platform_device_dma_mask", since it's per platform device, not
    per platform, but that gets old really fast, and this is unique
    enough in context).

    To further clarify when the field gets used, initialize it when we
    actually start using it with the default value.

    - Then, use this field instead of the random one-off allocation in
    platform_device_register_full() that is now unnecessary since we now
    already have a perfectly fine allocation for it in the platform
    device structure.

    - The above then allows us to fix the actual bug, where the error path
    of platform_device_register_full() would unconditionally free the
    platform device DMA allocation with 'kfree()'.

    That kfree() was dont regardless of whether the allocation had been
    done earlier with the (now removed) kmalloc, or whether
    setup_pdev_dma_masks() had already been used and the dma_mask pointer
    pointed to the mask that was part of the platform device.

    It seems most people never triggered the error path, or only triggered
    it from a call chain that set an explicit pdevinfo->dma_mask value (and
    thus caused the unnecessary allocation that was "cleaned up" in the
    error path) before calling platform_device_register_full().

    Robin Murphy points out that in Artem's case the wdat_wdt driver failed
    in platform_device_add(), and that was the one that had called
    platform_device_register_full() with pdevinfo.dma_mask = 0, and would
    have caused that kfree() of pdev.dma_mask corrupting the heap.

    A later unrelated kmalloc() then oopsed due to the heap corruption.

    Fixes: cdfee5623290 ("driver core: initialize a default DMA mask for platform device")
    Reported-bisected-and-tested-by: Artem S. Tashkinov
    Reviewed-by: Robin Murphy
    Cc: Greg Kroah-Hartman
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     

11 Mar, 2020

3 commits

  • It has turned out that some host controllers can't use R1B for CMD6 and
    other commands that have R1B associated with them. Therefore invent a new
    host cap, MMC_CAP_NEED_RSP_BUSY to let them specify this.

    In __mmc_switch(), let's check the flag and use it to prevent R1B responses
    from being converted into R1. Note that, this also means that the host are
    on its own, when it comes to manage the busy timeout.

    Suggested-by: Sowjanya Komatineni
    Cc:
    Tested-by: Anders Roxell
    Tested-by: Sowjanya Komatineni
    Tested-by: Faiz Abbas
    Tested-By: Peter Geis
    Signed-off-by: Ulf Hansson

    Ulf Hansson
     
  • Pull cgroup fixes from Tejun Heo:

    - cgroup.procs listing related fixes.

    It didn't interlock properly with exiting tasks leaving a short
    window where a cgroup has empty cgroup.procs but still can't be
    removed and misbehaved on short reads.

    - psi_show() crash fix on 32bit ino archs

    - Empty release_agent handling fix

    * 'for-5.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cgroup1: don't call release_agent when it is ""
    cgroup: fix psi_show() crash on 32bit ino archs
    cgroup: Iterate tasks that did not finish do_exit()
    cgroup: cgroup_procs_next should increase position index
    cgroup-v1: cgroup_pidlist_next should update position index

    Linus Torvalds
     
  • Pull workqueue fixes from Tejun Heo:
    "Workqueue has been incorrectly round-robining per-cpu work items.
    Hillf's patch fixes that.

    The other patch documents memory-ordering properties of workqueue
    operations"

    * 'for-5.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
    workqueue: don't use wq_select_unbound_cpu() for bound works
    workqueue: Document (some) memory-ordering properties of {queue,schedule}_work()

    Linus Torvalds
     

10 Mar, 2020

2 commits

  • Similar to the commit 02d715b4a818 ("iommu/vt-d: Fix RCU list debugging
    warnings"), there are several other places that call
    list_for_each_entry_rcu() outside of an RCU read side critical section
    but with dmar_global_lock held. Silence those false positives as well.

    drivers/iommu/intel-iommu.c:4288 RCU-list traversed in non-reader section!!
    1 lock held by swapper/0/1:
    #0: ffffffff935892c8 (dmar_global_lock){+.+.}, at: intel_iommu_init+0x1ad/0xb97

    drivers/iommu/dmar.c:366 RCU-list traversed in non-reader section!!
    1 lock held by swapper/0/1:
    #0: ffffffff935892c8 (dmar_global_lock){+.+.}, at: intel_iommu_init+0x125/0xb97

    drivers/iommu/intel-iommu.c:5057 RCU-list traversed in non-reader section!!
    1 lock held by swapper/0/1:
    #0: ffffffffa71892c8 (dmar_global_lock){++++}, at: intel_iommu_init+0x61a/0xb13

    Signed-off-by: Qian Cai
    Acked-by: Lu Baolu
    Signed-off-by: Joerg Roedel

    Qian Cai
     
  • What the driver writes into MAC_MAXLEN_CFG does not actually represent
    VLAN_ETH_FRAME_LEN but instead ETH_FRAME_LEN + ETH_FCS_LEN. Yes they are
    numerically equal, but the difference is important, as the switch treats
    VLAN-tagged traffic specially and knows to increase the maximum accepted
    frame size automatically. So it is always wrong to account for VLAN in
    the MAC_MAXLEN_CFG register.

    Unconditionally increase the maximum allowed frame size for
    double-tagged traffic. Accounting for the additional length does not
    mean that the other VLAN membership checks aren't performed, so there's
    no harm done.

    Also, stop abusing the MTU name for configuring the MRU. There is no
    support for configuring the MRU on an interface at the moment.

    Fixes: a556c76adc05 ("net: mscc: Add initial Ocelot switch support")
    Fixes: fa914e9c4d94 ("net: mscc: ocelot: create a helper for changing the port MTU")
    Signed-off-by: Vladimir Oltean
    Signed-off-by: David S. Miller

    Vladimir Oltean
     

09 Mar, 2020

1 commit

  • In commit 1ec17dbd90f8 ("inet_diag: fix reporting cgroup classid and
    fallback to priority") croup classid reporting was fixed. But this works
    only for TCP sockets because for other socket types icsk parameter can
    be NULL and classid code path is skipped. This change moves classid
    handling to inet_diag_msg_attrs_fill() function.

    Also inet_diag_msg_attrs_size() helper was added and addends in
    nlmsg_new() were reordered to save order from inet_sk_diag_fill().

    Fixes: 1ec17dbd90f8 ("inet_diag: fix reporting cgroup classid and fallback to priority")
    Signed-off-by: Dmitry Yakunin
    Reviewed-by: Konstantin Khlebnikov
    Signed-off-by: David S. Miller

    Dmitry Yakunin
     

08 Mar, 2020

2 commits

  • Pull driver core and debugfs fixes from Greg KH:
    "Here are four small driver core / debugfs patches for 5.6-rc3:

    - debugfs api cleanup now that all debugfs_create_regset32() callers
    have been fixed up. This was waiting until after the -rc1 merge as
    these fixes came in through different trees

    - driver core sync state fixes based on reports of minor issues found
    in the feature

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

    * tag 'driver-core-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    driver core: Skip unnecessary work when device doesn't have sync_state()
    driver core: Add dev_has_sync_state()
    driver core: Call sync_state() even if supplier has no consumers
    debugfs: remove return value of debugfs_create_regset32()

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "Here are a few fixes that should go into this release. This contains:

    - Revert of a bad bcache patch from this merge window

    - Removed unused function (Daniel)

    - Fixup for the blktrace fix from Jan from this release (Cengiz)

    - Fix of deeper level bfqq overwrite in BFQ (Carlo)"

    * tag 'block-5.6-2020-03-07' of git://git.kernel.dk/linux-block:
    block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group()
    blktrace: fix dereference after null check
    Revert "bcache: ignore pending signals when creating gc and allocator thread"
    block: Remove used kblockd_schedule_work_on()

    Linus Torvalds
     

07 Mar, 2020

5 commits

  • Pull xen fixes from Juergen Gross:
    "Four fixes and a small cleanup patch:

    - two fixes by Dongli Zhang fixing races in the xenbus driver

    - two fixes by me fixing issues introduced in 5.6

    - a small cleanup by Gustavo Silva replacing a zero-length array with
    a flexible-array"

    * tag 'for-linus-5.6b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen/blkfront: fix ring info addressing
    xen/xenbus: fix locking
    xenbus: req->err should be updated before req->state
    xenbus: req->body should be updated before req->state
    xen: Replace zero-length array with flexible-array member

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "The regular "bump-in-the-middle" updates, containing mostly ASoC-
    related fixes at this time. All changes are reasonably small.

    A few entries are for ASoC and ALSA core parts (DAPM, PCM, topology)
    for followups of the recent changes and potential buffer overflow by
    snprintf(), while the rest are (both new and old) device-specific
    fixes for Intel, meson, tas2562, rt1015, as well as the usual HD-audio
    quirks"

    * tag 'sound-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (25 commits)
    ALSA: sgio2audio: Remove usage of dropped hw_params/hw_free functions
    ALSA: hda/realtek - Enable the headset of ASUS B9450FA with ALC294
    ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master
    ALSA: hda/realtek - Add Headset Button supported for ThinkPad X1
    ALSA: hda/realtek - Add Headset Mic supported
    ASoC: wm8741: Fix typo in Kconfig prompt
    ASoC: stm32: sai: manage rebind issue
    ASoC: SOF: Fix snd_sof_ipc_stream_posn()
    ASoC: rt1015: modify pre-divider for sysclk
    ASoC: rt1015: add operation callback function for rt1015_dai[]
    ASoC: soc-component: tidyup snd_soc_pcm_component_sync_stop()
    ASoC: dapm: Correct DAPM handling of active widgets during shutdown
    ASoC: tas2562: Fix sample rate error message
    ASoC: Intel: Skylake: Fix available clock counter incrementation
    ASoC: soc-pcm/soc-compress: don't use snd_soc_dapm_stream_stop()
    ASoC: meson: g12a: add tohdmitx reset
    ASoC: pcm512x: Fix unbalanced regulator enable call in probe error path
    ASoC: soc-core: fix for_rtd_codec_dai_rollback() macro
    ASoC: topology: Fix memleak in soc_tplg_manifest_load()
    ASoC: topology: Fix memleak in soc_tplg_link_elems_load()
    ...

    Linus Torvalds
     
  • rhashtable_lookup_get_insert_key doesn't have a parameter `data`. It
    does have a parameter `key`, however.

    Signed-off-by: Jonathan Neuschäfer
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Jonathan Neuschäfer
     
  • …/broonie/sound into for-linus

    ASoC: Fixes for v5.6

    More fixes that have arrived since the merge window, spread out all
    over. There's a few things like the operation callback addition for
    rt1015 and the meson reset addition which add small new bits of
    functionality to fix non-working systems, they're all very small and for
    parts of newly added functionality.

    Takashi Iwai
     
  • Pull spi fixes from Mark Brown:
    "A selection of small fixes, mostly for drivers, that have arrived
    since the merge window. None of them are earth shattering in
    themselves but all useful for affected systems"

    * tag 'spi-fix-v5.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
    spi: spi_register_controller(): free bus id on error paths
    spi: bcm63xx-hsspi: Really keep pll clk enabled
    spi: atmel-quadspi: fix possible MMIO window size overrun
    spi/zynqmp: remove entry that causes a cs glitch
    spi: pxa2xx: Add CS control clock quirk
    spi: spidev: Fix CS polarity if GPIO descriptors are used
    spi: qup: call spi_qup_pm_resume_runtime before suspending
    spi: spi-omap2-mcspi: Support probe deferral for DMA channels
    spi: spi-omap2-mcspi: Handle DMA size restriction on AM65x

    Linus Torvalds
     

06 Mar, 2020

5 commits

  • Merge misc fixes from Andrew Morton:
    "7 fixes"

    * emailed patches from Andrew Morton :
    arch/Kconfig: update HAVE_RELIABLE_STACKTRACE description
    mm, hotplug: fix page online with DEBUG_PAGEALLOC compiled but not enabled
    mm/z3fold.c: do not include rwlock.h directly
    fat: fix uninit-memory access for partial initialized inode
    mm: avoid data corruption on CoW fault into PFN-mapped VMA
    mm: fix possible PMD dirty bit lost in set_pmd_migration_entry()
    mm, numa: fix bad pmd by atomically check for pmd_trans_huge when marking page tables prot_numa

    Linus Torvalds
     
  • Commit cd02cf1aceea ("mm/hotplug: fix an imbalance with DEBUG_PAGEALLOC")
    fixed memory hotplug with debug_pagealloc enabled, where onlining a page
    goes through page freeing, which removes the direct mapping. Some arches
    don't like when the page is not mapped in the first place, so
    generic_online_page() maps it first. This is somewhat wasteful, but
    better than special casing page freeing fast paths.

    The commit however missed that DEBUG_PAGEALLOC configured doesn't mean
    it's actually enabled. One has to test debug_pagealloc_enabled() since
    031bc5743f15 ("mm/debug-pagealloc: make debug-pagealloc boottime
    configurable"), or alternatively debug_pagealloc_enabled_static() since
    8e57f8acbbd1 ("mm, debug_pagealloc: don't rely on static keys too early"),
    but this is not done.

    As a result, a s390 kernel with DEBUG_PAGEALLOC configured but not enabled
    will crash:

    Unable to handle kernel pointer dereference in virtual kernel address space
    Failing address: 0000000000000000 TEID: 0000000000000483
    Fault in home space mode while using kernel ASCE.
    AS:0000001ece13400b R2:000003fff7fd000b R3:000003fff7fcc007 S:000003fff7fd7000 P:000000000000013d
    Oops: 0004 ilc:2 [#1] SMP
    CPU: 1 PID: 26015 Comm: chmem Kdump: loaded Tainted: GX 5.3.18-5-default #1 SLE15-SP2 (unreleased)
    Krnl PSW : 0704e00180000000 0000001ecd281b9e (__kernel_map_pages+0x166/0x188)
    R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 RI:0 EA:3
    Krnl GPRS: 0000000000000000 0000000000000800 0000400b00000000 0000000000000100
    0000000000000001 0000000000000000 0000000000000002 0000000000000100
    0000001ece139230 0000001ecdd98d40 0000400b00000100 0000000000000000
    000003ffa17e4000 001fffe0114f7d08 0000001ecd4d93ea 001fffe0114f7b20
    Krnl Code: 0000001ecd281b8e: ec17ffff00d8 ahik %r1,%r7,-1
    0000001ecd281b94: ec111dbc0355 risbg %r1,%r1,29,188,3
    >0000001ecd281b9e: 94fb5006 ni 6(%r5),251
    0000001ecd281ba2: 41505008 la %r5,8(%r5)
    0000001ecd281ba6: ec51fffc6064 cgrj %r5,%r1,6,1ecd281b9e
    0000001ecd281bac: 1a07 ar %r0,%r7
    0000001ecd281bae: ec03ff584076 crj %r0,%r3,4,1ecd281a5e
    Call Trace:
    [] __kernel_map_pages+0x166/0x188
    [] online_pages_range+0xf6/0x128
    [] walk_system_ram_range+0x7e/0xd8
    [] online_pages+0x2fe/0x3f0
    [] memory_subsys_online+0x8e/0xc0
    [] device_online+0x5a/0xc8
    [] state_store+0x88/0x118
    [] kernfs_fop_write+0xc2/0x200
    [] vfs_write+0x176/0x1e0
    [] ksys_write+0xa2/0x100
    [] system_call+0xd8/0x2c8

    Fix this by checking debug_pagealloc_enabled_static() before calling
    kernel_map_pages(). Backports for kernel before 5.5 should use
    debug_pagealloc_enabled() instead. Also add comments.

    Fixes: cd02cf1aceea ("mm/hotplug: fix an imbalance with DEBUG_PAGEALLOC")
    Reported-by: Gerald Schaefer
    Signed-off-by: Andrew Morton
    Signed-off-by: Vlastimil Babka
    Reviewed-by: David Hildenbrand
    Cc:
    Cc: Joonsoo Kim
    Cc: Qian Cai
    Link: http://lkml.kernel.org/r/20200224094651.18257-1-vbabka@suse.cz
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     
  • Pull drm fixes from Dave Airlie:
    "Weekly fixes round, looks like a few people woke up, got a bunch of
    fixes across the drivers. Bit bigger than I'd like but they all seem
    fine and hopefully it quiets down now.

    sun4i, kirin, mediatek and exynos on the ARM side. virtio-gpu and core
    have some mmap fixes, and there is a dma-buf leak. one ttm fence leak
    is also fixed.

    Otherwise it's mostly amdgpu and i915.

    One of the i915 fixes is for a very long latency I was seeing (using
    latencytop) running gnome-shell locally when using firefox and eating
    nearly all my RAM, it really helps with desktop responsiveness esp
    when firefox is chewing a lot.

    dma-buf:
    - fix memory leak

    core:
    - shmem object mmap fix.

    ttm:
    - Fix fence leak in ttm_buffer_object_transfer().

    amdgpu:
    - Gfx reset fix for gfx9, 10
    - Fix for gfx10
    - DP MST fix
    - DCC fix
    - Renoir power fixes
    - Navi power fix

    i915:
    - Break up long lists of object reclaim with cond_resched()
    - PSR probe fix
    - TGL workarounds
    - Selftest return value fix
    - Drop timeline mutex while waiting for retirement
    - Wait for OA configuration completion before writes to OA buffer

    virtio:
    - Fix resource id creation race in virtio.
    - mmap fixes

    sun4i:
    - Fixes for sun4i VI layer format support.

    kirin:
    - kirin: Revert "Fix for hikey620 display offset problem"

    exynos:
    - fix a kernel oops problem in case that driver is loaded as module.
    - fix a regulator warning issue when I2C DDC adapter cannot be gathered.
    - print out an error message only in error case excepting -EPROBE_DEFER.

    mediatek:
    - overlay, cursor and gce fixes"
    `

    * tag 'drm-fixes-2020-03-06' of git://anongit.freedesktop.org/drm/drm: (38 commits)
    drm/amdgpu/display: navi1x copy dcn watermark clock settings to smu resume from s3 (v2)
    drm/amd/powerplay: map mclk to fclk for COMBINATIONAL_BYPASS case
    drm/amd/powerplay: fix pre-check condition for setting clock range
    drm/amd/display: fix dcc swath size calculations on dcn1
    drm/amd/display: Clear link settings on MST disable connector
    drm/amdgpu: disable 3D pipe 1 on Navi1x
    drm/amdgpu: clean wptr on wb when gpu recovery
    drm: kirin: Revert "Fix for hikey620 display offset problem"
    drm/i915/gt: Drop the timeline->mutex as we wait for retirement
    drm/i915/perf: Reintroduce wait on OA configuration completion
    drm/sun4i: Fix DE2 VI layer format support
    drm/sun4i: Add separate DE3 VI layer formats
    drm/sun4i: de2/de3: Remove unsupported VI layer formats
    drm/i915/selftests: Fix return in assert_mmap_offset()
    drm/i915: Protect i915_request_await_start from early waits
    drm/i915/tgl: Add Wa_1608008084
    drm/i915/tgl: Add Wa_22010178259:tgl
    drm/i915: Program MBUS with rmw during initialization
    drm/i915/psr: Force PSR probe only after full initialization
    drm/i915/gem: Break up long lists of object reclaim
    ...

    Linus Torvalds
     
  • As reported by Jann, ihold() does not in fact guarantee inode
    persistence. And instead of making it so, replace the usage of inode
    pointers with a per boot, machine wide, unique inode identifier.

    This sequence number is global, but shared (file backed) futexes are
    rare enough that this should not become a performance issue.

    Reported-by: Jann Horn
    Suggested-by: Linus Torvalds
    Signed-off-by: Peter Zijlstra (Intel)

    Peter Zijlstra
     
  • Fixes for v5.6.rc5:
    - dma-buf fix memory leak
    - Fix resource id creation race in virtio.
    - Various mmap fixes.
    - Fix fence leak in ttm_buffer_object_transfer().
    - Fixes for sun4i VI layer format support.
    - kirin: Revert "Fix for hikey620 display offset problem"

    Signed-off-by: Dave Airlie

    From: Maarten Lankhorst
    Link: https://patchwork.freedesktop.org/patch/msgid/56de63c7-0cdf-5805-e268-44944af7fef2@linux.intel.com

    Dave Airlie
     

05 Mar, 2020

2 commits

  • Commit 060eabe8fbe726 ("xenbus/backend: Protect xenbus callback with
    lock") introduced a bug by holding a lock while calling a function
    which might schedule.

    Fix that by using a semaphore instead.

    Fixes: 060eabe8fbe726 ("xenbus/backend: Protect xenbus callback with lock")
    Signed-off-by: Juergen Gross
    Link: https://lore.kernel.org/r/20200305100323.16736-1-jgross@suse.com
    Reviewed-by: Boris Ostrovsky
    Signed-off-by: Boris Ostrovsky

    Juergen Gross
     
  • The current codebase makes use of the zero-length array language
    extension to the C90 standard, but the preferred mechanism to declare
    variable-length types such as these ones is a flexible array member[1][2],
    introduced in C99:

    struct foo {
    int stuff;
    struct boo array[];
    };

    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last in the structure, which
    will help us prevent some kind of undefined behavior bugs from being
    inadvertently introduced[3] to the codebase from now on.

    Also, notice that, dynamic memory allocations won't be affected by
    this change:

    "Flexible array members have incomplete type, and so the sizeof operator
    may not be applied. As a quirk of the original implementation of
    zero-length arrays, sizeof evaluates to zero."[1]

    This issue was found with the help of Coccinelle.

    [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
    [2] https://github.com/KSPP/linux/issues/21
    [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

    Signed-off-by: Gustavo A. R. Silva
    Link: https://lore.kernel.org/r/20200226212612.GA4663@embeddedor
    Reviewed-by: Juergen Gross
    Signed-off-by: Boris Ostrovsky

    Gustavo A. R. Silva