11 Mar, 2021

17 commits

  • When SF id is unavailable, code jumps to wrong label that accesses
    sw id array outside of its range.
    Hence, when SF id is not allocated, avoid accessing such array.

    Fixes: 8f0105418668 ("net/mlx5: SF, Add port add delete functionality")
    Signed-off-by: Shay Drory
    Reviewed-by: Parav Pandit
    Signed-off-by: Saeed Mahameed

    Shay Drory
     
  • Cited patch in the fixes tag missed to free the allocated work.
    Fix it by freeing the work after work execution.

    Fixes: f3196bb0f14c ("net/mlx5: Introduce vhca state event notifier")
    Signed-off-by: Shay Drory
    Reviewed-by: Parav Pandit
    Signed-off-by: Saeed Mahameed

    Shay Drory
     
  • Fix vhca context size as defined by device interface specification.

    Fixes: f3196bb0f14c ("net/mlx5: Introduce vhca state event notifier")
    Signed-off-by: Parav Pandit
    Signed-off-by: Saeed Mahameed

    Parav Pandit
     
  • do_div() returns reminder, while cited patch wanted to use
    quotient.
    Fix it by using quotient.

    Fixes: 0e22bfb7c046 ("net/mlx5e: E-switch, Fix rate calculation for overflow")
    Signed-off-by: Parav Pandit
    Signed-off-by: Maor Dickman
    Signed-off-by: Saeed Mahameed

    Parav Pandit
     
  • 1. Don't set the ts_format bit to default when it reserved - device is
    running in the old mode (free running).
    2. XRC doesn't have a CQ therefore the ts format in the QP
    context should be default / free running.
    3. Set ts_format to WQ.

    Fixes: 2fe8d4b87802 ("RDMA/mlx5: Fail QP creation if the device can not support the CQE TS")
    Signed-off-by: Maor Gottlieb
    Signed-off-by: Saeed Mahameed

    Maor Gottlieb
     
  • QPs which don't care from timestamp mode, should set the ts_format
    to default, otherwise the QP creation could be failed if the timestamp
    mode is not supported.

    Fixes: 2fe8d4b87802 ("RDMA/mlx5: Fail QP creation if the device can not support the CQE TS")
    Signed-off-by: Maor Gottlieb
    Signed-off-by: Saeed Mahameed

    Maor Gottlieb
     
  • Move priv memset from init to cleanup to avoid double priv cleanup
    that can happen on profile change if also roolback fails.
    Add missing cleanup flow in mlx5e_netdev_attach_profile().

    Fixes: c4d7eb57687f ("net/mxl5e: Add change profile method")
    Signed-off-by: Roi Dayan
    Signed-off-by: Saeed Mahameed

    Roi Dayan
     
  • VF tunnel TX traffic offload is adding flow which forward to flow
    tables with lower level, which isn't support on all FW versions
    and may cause firmware to fail with syndrome.

    Fixed by enabling VF tunnel TX offload only if flow table capability
    ignore_flow_level is enabled.

    Fixes: 10742efc20a4 ("net/mlx5e: VF tunnel TX traffic offloading")
    Signed-off-by: Maor Dickman
    Reviewed-by: Vlad Buslov
    Signed-off-by: Saeed Mahameed

    Maor Dickman
     
  • flow_attr->ip_version has the matching that should be done inner/outer.
    When working with chains, decapsulation is done on chain0 and next chain
    match on outer header which is the original inner which could be ipv4.
    So in tunnel route resolution we cannot use that to know which ip version
    we are at so save tun_ip_version when parsing the tunnel match and use
    that.

    Fixes: a508728a4c8b ("net/mlx5e: VF tunnel RX traffic offloading")
    Signed-off-by: Roi Dayan
    Reviewed-by: Dmytro Linkin
    Signed-off-by: Saeed Mahameed

    Roi Dayan
     
  • Fix a bug of uninitialized pin index when trying to turn off PPS out.

    Fixes: de19cd6cc977 ("net/mlx5: Move some PPS logic into helper functions")
    Signed-off-by: Aya Levin
    Reviewed-by: Eran Ben Elisha
    Signed-off-by: Saeed Mahameed

    Aya Levin
     
  • The cited change added offload support for Geneve options without verifying
    the validity of the options masks, this caused offload of rules with match
    on Geneve options with class,type and data masks which are zero to fail.

    Fix by ignoring the match on Geneve options in case option masks are
    all zero.

    Fixes: 9272e3df3023 ("net/mlx5e: Geneve, Add support for encap/decap flows offload")
    Signed-off-by: Maor Dickman
    Reviewed-by: Roi Dayan
    Reviewed-by: Oz Shlomo
    Reviewed-by: Yevgeny Kliteynik
    Signed-off-by: Saeed Mahameed

    Maor Dickman
     
  • Port timestamping for PTP can be enabled/disabled while the channels are
    closed. In that case mlx5e_safe_switch_channels is skipped, and the
    preactivate hook is called directly. However, if that hook returns an
    error, the channel parameters must be reverted back to their old values.
    This commit adds missing handling on this case.

    Fixes: 145e5637d941 ("net/mlx5e: Add TX PTP port object support")
    Signed-off-by: Maxim Mikityanskiy
    Reviewed-by: Tariq Toukan
    Signed-off-by: Saeed Mahameed

    Maxim Mikityanskiy
     
  • Each RQ (including XSK RQs) takes a reference to the XDP program. When
    an XDP program is attached or detached, the channels and queues are
    recreated, however, there is a special flow for changing an active XDP
    program to another one. In that flow, channels and queues stay alive,
    but the refcounts of the old and new XDP programs are adjusted. This
    flow didn't increment refcount by the number of active XSK RQs, and this
    commit fixes it.

    Fixes: db05815b36cb ("net/mlx5e: Add XSK zero-copy support")
    Signed-off-by: Maxim Mikityanskiy
    Reviewed-by: Tariq Toukan
    Signed-off-by: Saeed Mahameed

    Maxim Mikityanskiy
     
  • When closing the PTP channel, set its pointer explicitly to NULL. PTP
    channel is opened on demand, the code verify the pointer validity before
    access. Nullify it when closing the PTP channel to avoid unexpected
    behavior.

    Fixes: 145e5637d941 ("net/mlx5e: Add TX PTP port object support")
    Signed-off-by: Aya Levin
    Reviewed-by: Tariq Toukan
    Signed-off-by: Saeed Mahameed

    Aya Levin
     
  • In addition to .get_ethtool_stats, add port PTP TX stats to
    .ndo_get_stats64.

    Fixes: 145e5637d941 ("net/mlx5e: Add TX PTP port object support")
    Signed-off-by: Aya Levin
    Reviewed-by: Tariq Toukan
    Signed-off-by: Saeed Mahameed

    Aya Levin
     
  • Since cited patch, MLX5E_REQUIRED_WQE_MTTS is not a power of two.
    Hence, usage of MLX5E_LOG_ALIGNED_MPWQE_PPW should be replaced,
    as it lost some accuracy. Use the designated macro to calculate
    the number of required MTTs.

    This makes sure the solution in cited patch works properly.

    While here, un-inline mlx5e_get_mpwqe_offset(), and remove the
    unused RQ parameter.

    Fixes: c3c9402373fe ("net/mlx5e: Add resiliency in Striding RQ mode for packets larger than MTU")
    Signed-off-by: Tariq Toukan
    Signed-off-by: Saeed Mahameed

    Tariq Toukan
     
  • The ICOSQ size should not go below MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE.
    Enforce this where it's missing.

    Signed-off-by: Tariq Toukan
    Reviewed-by: Maxim Mikityanskiy
    Reviewed-by: Saeed Mahameed
    Signed-off-by: Saeed Mahameed

    Tariq Toukan
     

10 Mar, 2021

16 commits

  • Pull networking fixes from David Miller:

    1) Fix transmissions in dynamic SMPS mode in ath9k, from Felix Fietkau.

    2) TX skb error handling fix in mt76 driver, also from Felix.

    3) Fix BPF_FETCH atomic in x86 JIT, from Brendan Jackman.

    4) Avoid double free of percpu pointers when freeing a cloned bpf prog.
    From Cong Wang.

    5) Use correct printf format for dma_addr_t in ath11k, from Geert
    Uytterhoeven.

    6) Fix resolve_btfids build with older toolchains, from Kun-Chuan
    Hsieh.

    7) Don't report truncated frames to mac80211 in mt76 driver, from
    Lorenzop Bianconi.

    8) Fix watcdog timeout on suspend/resume of stmmac, from Joakim Zhang.

    9) mscc ocelot needs NET_DEVLINK selct in Kconfig, from Arnd Bergmann.

    10) Fix sign comparison bug in TCP_ZEROCOPY_RECEIVE getsockopt(), from
    Arjun Roy.

    11) Ignore routes with deleted nexthop object in mlxsw, from Ido
    Schimmel.

    12) Need to undo tcp early demux lookup sometimes in nf_nat, from
    Florian Westphal.

    13) Fix gro aggregation for udp encaps with zero csum, from Daniel
    Borkmann.

    14) Make sure to always use imp*_ndo_send when necessaey, from Jason A.
    Donenfeld.

    15) Fix TRSCER masks in sh_eth driver from Sergey Shtylyov.

    16) prevent overly huge skb allocationsd in qrtr, from Pavel Skripkin.

    17) Prevent rx ring copnsumer index loss of sync in enetc, from Vladimir
    Oltean.

    18) Make sure textsearch copntrol block is large enough, from Wilem de
    Bruijn.

    19) Revert MAC changes to r8152 leading to instability, from Hates Wang.

    20) Advance iov in 9p even for empty reads, from Jissheng Zhang.

    21) Double hook unregister in nftables, from PabloNeira Ayuso.

    22) Fix memleak in ixgbe, fropm Dinghao Liu.

    23) Avoid dups in pkt scheduler class dumps, from Maximilian Heyne.

    24) Various mptcp fixes from Florian Westphal, Paolo Abeni, and Geliang
    Tang.

    25) Fix DOI refcount bugs in cipso, from Paul Moore.

    26) One too many irqsave in ibmvnic, from Junlin Yang.

    27) Fix infinite loop with MPLS gso segmenting via virtio_net, from
    Balazs Nemeth.

    * git://git.kernel.org:/pub/scm/linux/kernel/git/netdev/net: (164 commits)
    s390/qeth: fix notification for pending buffers during teardown
    s390/qeth: schedule TX NAPI on QAOB completion
    s390/qeth: improve completion of pending TX buffers
    s390/qeth: fix memory leak after failed TX Buffer allocation
    net: avoid infinite loop in mpls_gso_segment when mpls_hlen == 0
    net: check if protocol extracted by virtio_net_hdr_set_proto is correct
    net: dsa: xrs700x: check if partner is same as port in hsr join
    net: lapbether: Remove netif_start_queue / netif_stop_queue
    atm: idt77252: fix null-ptr-dereference
    atm: uPD98402: fix incorrect allocation
    atm: fix a typo in the struct description
    net: qrtr: fix error return code of qrtr_sendmsg()
    mptcp: fix length of ADD_ADDR with port sub-option
    net: bonding: fix error return code of bond_neigh_init()
    net: enetc: allow hardware timestamping on TX queues with tc-etf enabled
    net: enetc: set MAC RX FIFO to recommended value
    net: davicom: Use platform_get_irq_optional()
    net: davicom: Fix regulator not turned off on driver removal
    net: davicom: Fix regulator not turned off on failed probe
    net: dsa: fix switchdev objects on bridge master mistakenly being applied on ports
    ...

    Linus Torvalds
     
  • Pull sparc fixes from David Miller:
    "Fix opcode filtering for exceptions, and clean up defconfig"

    * git://git.kernel.org:/pub/scm/linux/kernel/git/davem/sparc:
    sparc: sparc64_defconfig: remove duplicate CONFIGs
    sparc64: Fix opcode filtering in handling of no fault loads

    Linus Torvalds
     
  • After my patch there is CONFIG_ATA defined twice.
    Remove the duplicate one.
    Same problem for CONFIG_HAPPYMEAL, except I added as builtin for boot
    test with NFS.

    Reported-by: Stephen Rothwell
    Fixes: a57cdeb369ef ("sparc: sparc64_defconfig: add necessary configs for qemu")
    Signed-off-by: Corentin Labbe
    Signed-off-by: David S. Miller

    Corentin Labbe
     
  • is_no_fault_exception() has two bugs which were discovered via random
    opcode testing with stress-ng. Both are caused by improper filtering
    of opcodes.

    The first bug can be triggered by a floating point store with a no-fault
    ASI, for instance "sta %f0, [%g0] #ASI_PNF", opcode C1A01040.

    The code first tests op3[5] (0x1000000), which denotes a floating
    point instruction, and then tests op3[2] (0x200000), which denotes a
    store instruction. But these bits are not mutually exclusive, and the
    above mentioned opcode has both bits set. The intent is to filter out
    stores, so the test for stores must be done first in order to have
    any effect.

    The second bug can be triggered by a floating point load with one of
    the invalid ASI values 0x8e or 0x8f, which pass this check in
    is_no_fault_exception():
    if ((asi & 0xf2) == ASI_PNF)

    An example instruction is "ldqa [%l7 + %o7] #ASI 0x8f, %f38",
    opcode CF95D1EF. Asi values greater than 0x8b (ASI_SNFL) are fatal
    in handle_ldf_stq(), and is_no_fault_exception() must not allow these
    invalid asi values to make it that far.

    In both of these cases, handle_ldf_stq() reacts by calling
    sun4v_data_access_exception() or spitfire_data_access_exception(),
    which call is_no_fault_exception() and results in an infinite
    recursion.

    Signed-off-by: Rob Gardner
    Tested-by: Anatoly Pugachev
    Signed-off-by: David S. Miller

    Rob Gardner
     
  • Julian Wiedmann says:

    ====================
    s390/qeth: fixes 2021-03-09

    please apply the following patch series to netdev's net tree.

    This brings one fix for a memleak in an error path of the setup code.
    Also several fixes for dealing with pending TX buffers - two for old
    bugs in their completion handling, and one recent regression in a
    teardown path.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The cited commit reworked the state machine for pending TX buffers.
    In qeth_iqd_tx_complete() it turned PENDING into a transient state, and
    uses NEED_QAOB for buffers that get parked while waiting for their QAOB
    completion.

    But it missed to adjust the check in qeth_tx_complete_buf(). So if
    qeth_tx_complete_pending_bufs() is called during teardown to drain
    the parked TX buffers, we no longer raise a notification for af_iucv.

    Instead of updating the checked state, just move this code into
    qeth_tx_complete_pending_bufs() itself. This also gets rid of the
    special-case in the common TX completion path.

    Fixes: 8908f36d20d8 ("s390/qeth: fix af_iucv notification race")
    Signed-off-by: Julian Wiedmann
    Signed-off-by: David S. Miller

    Julian Wiedmann
     
  • When a QAOB notifies us that a pending TX buffer has been delivered, the
    actual TX completion processing by qeth_tx_complete_pending_bufs()
    is done within the context of a TX NAPI instance. We shouldn't rely on
    this instance being scheduled by some other TX event, but just do it
    ourselves.

    qeth_qdio_handle_aob() is called from qeth_poll(), ie. our main NAPI
    instance. To avoid touching the TX queue's NAPI instance
    before/after it is (un-)registered, reorder the code in qeth_open()
    and qeth_stop() accordingly.

    Fixes: 0da9581ddb0f ("qeth: exploit asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann
    Signed-off-by: David S. Miller

    Julian Wiedmann
     
  • The current design attaches a pending TX buffer to a custom
    single-linked list, which is anchored at the buffer's slot on the
    TX ring. The buffer is then checked for final completion whenever
    this slot is processed during a subsequent TX NAPI poll cycle.

    But if there's insufficient traffic on the ring, we might never make
    enough progress to get back to this ring slot and discover the pending
    buffer's final TX completion. In particular if this missing TX
    completion blocks the application from sending further traffic.

    So convert the custom single-linked list code to a per-queue list_head,
    and scan this list on every TX NAPI cycle.

    Fixes: 0da9581ddb0f ("qeth: exploit asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann
    Signed-off-by: David S. Miller

    Julian Wiedmann
     
  • When qeth_alloc_qdio_queues() fails to allocate one of the buffers that
    back an Output Queue, the 'out_freeoutqbufs' path will free all
    previously allocated buffers for this queue. But it misses to free the
    half-finished queue struct itself.

    Move the buffer allocation into qeth_alloc_output_queue(), and deal with
    such errors internally.

    Fixes: 0da9581ddb0f ("qeth: exploit asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann
    Reviewed-by: Alexandra Winter
    Signed-off-by: David S. Miller

    Julian Wiedmann
     
  • Balazs Nemeth says:

    ====================
    net: prevent infinite loop caused by incorrect proto from virtio_net_hdr_set_proto

    These patches prevent an infinite loop for gso packets with a protocol
    from virtio net hdr that doesn't match the protocol in the packet.
    Note that packets coming from a device without
    header_ops->parse_protocol being implemented will not be caught by
    the check in virtio_net_hdr_to_skb, but the infinite loop will still
    be prevented by the check in the gso layer.

    Changes from v2 to v3:
    - Remove unused *eth.
    - Use MPLS_HLEN to also check if the MPLS header length is a multiple
    of four.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • A packet with skb_inner_network_header(skb) == skb_network_header(skb)
    and ETH_P_MPLS_UC will prevent mpls_gso_segment from pulling any headers
    from the packet. Subsequently, the call to skb_mac_gso_segment will
    again call mpls_gso_segment with the same packet leading to an infinite
    loop. In addition, ensure that the header length is a multiple of four,
    which should hold irrespective of the number of stacked labels.

    Signed-off-by: Balazs Nemeth
    Acked-by: Willem de Bruijn
    Reviewed-by: David Ahern
    Signed-off-by: David S. Miller

    Balazs Nemeth
     
  • For gso packets, virtio_net_hdr_set_proto sets the protocol (if it isn't
    set) based on the type in the virtio net hdr, but the skb could contain
    anything since it could come from packet_snd through a raw socket. If
    there is a mismatch between what virtio_net_hdr_set_proto sets and
    the actual protocol, then the skb could be handled incorrectly later
    on.

    An example where this poses an issue is with the subsequent call to
    skb_flow_dissect_flow_keys_basic which relies on skb->protocol being set
    correctly. A specially crafted packet could fool
    skb_flow_dissect_flow_keys_basic preventing EINVAL to be returned.

    Avoid blindly trusting the information provided by the virtio net header
    by checking that the protocol in the packet actually matches the
    protocol set by virtio_net_hdr_set_proto. Note that since the protocol
    is only checked if skb->dev implements header_ops->parse_protocol,
    packets from devices without the implementation are not checked at this
    stage.

    Fixes: 9274124f023b ("net: stricter validation of untrusted gso packets")
    Signed-off-by: Balazs Nemeth
    Acked-by: Willem de Bruijn
    Signed-off-by: David S. Miller

    Balazs Nemeth
     
  • Don't assign dp to partner if it's the same port that xrs700x_hsr_join
    was called with. The partner port is supposed to be the other port in
    the HSR/PRP redundant pair not the same port. This fixes an issue
    observed in testing where forwarding between redundant HSR ports on this
    switch didn't work depending on the order the ports were added to the
    hsr device.

    Fixes: bd62e6f5e6a9 ("net: dsa: xrs700x: add HSR offloading support")
    Signed-off-by: George McCollister
    Reviewed-by: Vladimir Oltean
    Signed-off-by: David S. Miller

    George McCollister
     
  • Pull gpio fixes from Bartosz Golaszewski:
    "A bunch of fixes for the GPIO subsystem. We have two regressions in
    the core code spotted right after the merge window, a series of fixes
    for ACPI GPIO and a subsequent fix for a related regression in
    gpio-pca953x + a minor tweak in .gitignore and a rework of handling of
    the gpio-line-names to remedy a regression in stm32mp151.

    Summary:

    - fix two regressions in core GPIO subsystem code: one NULL-pointer
    dereference and one list corruption

    - read GPIO line names from fwnode instead of using the generic
    device properties to fix a regression on stm32mp151

    - fixes to ACPI GPIO and gpio-pca953x to handle a regression in IRQ
    handling on Intel Galileo

    - update .gitignore in GPIO selftests"

    * tag 'gpio-fixes-for-v5.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
    gpiolib: Read "gpio-line-names" from a firmware node
    gpio: pca953x: Set IRQ type when handle Intel Galileo Gen 2
    gpiolib: acpi: Allow to find GpioInt() resource by name and index
    gpiolib: acpi: Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk
    gpiolib: acpi: Add missing IRQF_ONESHOT
    gpio: fix gpio-device list corruption
    gpio: fix NULL-deref-on-deregistration regression
    selftests: gpio: update .gitignore

    Linus Torvalds
     
  • Pull MIPS fixes from Thomas Bogendoerfer:

    - fixes for boot breakage because of misaligned FDTs

    - fix for overwritten exception handlers

    - enable MIPS optimized crypto for all MIPS CPUs to improve wireguard
    performance

    * tag 'mips-fixes_5.12_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
    MIPS: kernel: Reserve exception base early to prevent corruption
    MIPS: vmlinux.lds.S: align raw appended dtb to 8 bytes
    crypto: mips/poly1305 - enable for all MIPS processors
    MIPS: boot/compressed: Copy DTB to aligned address

    Linus Torvalds
     
  • For the devices in this driver, the default qdisc is "noqueue",
    because their "tx_queue_len" is 0.

    In function "__dev_queue_xmit" in "net/core/dev.c", devices with the
    "noqueue" qdisc are specially handled. Packets are transmitted without
    being queued after a "dev->flags & IFF_UP" check. However, it's possible
    that even if this check succeeds, "ops->ndo_stop" may still have already
    been called. This is because in "__dev_close_many", "ops->ndo_stop" is
    called before clearing the "IFF_UP" flag.

    If we call "netif_stop_queue" in "ops->ndo_stop", then it's possible in
    "__dev_queue_xmit", it sees the "IFF_UP" flag is present, and then it
    checks "netif_xmit_stopped" and finds that the queue is already stopped.
    In this case, it will complain that:
    "Virtual device ... asks to queue packet!"

    To prevent "__dev_queue_xmit" from generating this complaint, we should
    not call "netif_stop_queue" in "ops->ndo_stop".

    We also don't need to call "netif_start_queue" in "ops->ndo_open",
    because after a netdev is allocated and registered, the
    "__QUEUE_STATE_DRV_XOFF" flag is initially not set, so there is no need
    to call "netif_start_queue" to clear it.

    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xie He
    Acked-by: Martin Schiller
    Signed-off-by: David S. Miller

    Xie He
     

09 Mar, 2021

7 commits

  • BMIPS is one of the few platforms that do change the exception base.
    After commit 2dcb39645441 ("memblock: do not start bottom-up allocations
    with kernel_end") we started seeing BMIPS boards fail to boot with the
    built-in FDT being corrupted.

    Before the cited commit, early allocations would be in the [kernel_end,
    RAM_END] range, but after commit they would be within [RAM_START +
    PAGE_SIZE, RAM_END].

    The custom exception base handler that is installed by
    bmips_ebase_setup() done for BMIPS5000 CPUs ends-up trampling on the
    memory region allocated by unflatten_and_copy_device_tree() thus
    corrupting the FDT used by the kernel.

    To fix this, we need to perform an early reservation of the custom
    exception space. Additional we reserve the first 4k (1k for R3k) for
    either normal exception vector space (legacy CPUs) or special vectors
    like cache exceptions.

    Huge thanks to Serge for analysing and proposing a solution to this
    issue.

    Fixes: 2dcb39645441 ("memblock: do not start bottom-up allocations with kernel_end")
    Reported-by: Kamal Dasu
    Debugged-by: Serge Semin
    Acked-by: Mike Rapoport
    Tested-by: Florian Fainelli
    Reviewed-by: Serge Semin
    Signed-off-by: Thomas Bogendoerfer

    Thomas Bogendoerfer
     
  • Pull sparc updates from David Miller:
    "Just some more random bits from Al, including a conversion over to
    generic extables"

    * git://git.kernel.org:/pub/scm/linux/kernel/git/davem/sparc:
    sparc32: take ->thread.flags out
    sparc32: get rid of fake_swapper_regs
    sparc64: get rid of fake_swapper_regs
    sparc32: switch to generic extables
    sparc32: switch copy_user.S away from range exception table entries
    sparc32: get rid of range exception table entries in checksum_32.S
    sparc32: switch __bzero() away from range exception table entries
    sparc32: kill lookup_fault()
    sparc32: don't bother with lookup_fault() in __bzero()

    Linus Torvalds
     
  • this one is similar to the phy_data allocation fix in uPD98402, the
    driver allocate the idt77105_priv and store to dev_data but later
    dereference using dev->dev_data, which will cause null-ptr-dereference.

    fix this issue by changing dev_data to phy_data so that PRIV(dev) can
    work correctly.

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     
  • dev->dev_data is set in zatm.c, calling zatm_start() will overwrite this
    dev->dev_data in uPD98402_start() and a subsequent PRIV(dev)->lock
    (i.e dev->phy_data->lock) will result in a null-ptr-dereference.

    I believe this is a typo and what it actually want to do is to allocate
    phy_data instead of dev_data.

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     
  • phy_data means private PHY data not date

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     
  • When sock_alloc_send_skb() returns NULL to skb, no error return code of
    qrtr_sendmsg() is assigned.
    To fix this bug, rc is assigned with -ENOMEM in this case.

    Fixes: 194ccc88297a ("net: qrtr: Support decoding incoming v2 packets")
    Reported-by: TOTE Robot
    Signed-off-by: Jia-Ju Bai
    Signed-off-by: David S. Miller

    Jia-Ju Bai
     
  • in current Linux, MPTCP peers advertising endpoints with port numbers use
    a sub-option length that wrongly accounts for the trailing TCP NOP. Also,
    receivers will only process incoming ADD_ADDR with port having such wrong
    sub-option length. Fix this, making ADD_ADDR compliant to RFC8684 §3.4.1.

    this can be verified running tcpdump on the kselftests artifacts:

    unpatched kernel:
    [root@bottarga mptcp]# tcpdump -tnnr unpatched.pcap | grep add-addr
    reading from file unpatched.pcap, link-type LINUX_SLL (Linux cooked v1), snapshot length 65535
    IP 10.0.1.1.10000 > 10.0.1.2.53078: Flags [.], ack 101, win 509, options [nop,nop,TS val 214459678 ecr 521312851,mptcp add-addr v1 id 1 a00:201:2774:2d88:7436:85c3:17fd:101], length 0
    IP 10.0.1.2.53078 > 10.0.1.1.10000: Flags [.], ack 101, win 502, options [nop,nop,TS val 521312852 ecr 214459678,mptcp add-addr[bad opt]]

    patched kernel:
    [root@bottarga mptcp]# tcpdump -tnnr patched.pcap | grep add-addr
    reading from file patched.pcap, link-type LINUX_SLL (Linux cooked v1), snapshot length 65535
    IP 10.0.1.1.10000 > 10.0.1.2.38178: Flags [.], ack 101, win 509, options [nop,nop,TS val 3728873902 ecr 2732713192,mptcp add-addr v1 id 1 10.0.2.1:10100 hmac 0xbccdfcbe59292a1f,nop,nop], length 0
    IP 10.0.1.2.38178 > 10.0.1.1.10000: Flags [.], ack 101, win 502, options [nop,nop,TS val 2732713195 ecr 3728873902,mptcp add-addr v1-echo id 1 10.0.2.1:10100,nop,nop], length 0

    Fixes: 22fb85ffaefb ("mptcp: add port support for ADD_ADDR suboption writing")
    CC: stable@vger.kernel.org # 5.11+
    Reviewed-by: Mat Martineau
    Acked-and-tested-by: Geliang Tang
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller

    Davide Caratti