Skip to content
  1. Jun 07, 2020
  2. Jun 01, 2020
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 1806c13d
      David S. Miller authored
      
      
      xdp_umem.c had overlapping changes between the 64-bit math fix
      for the calculation of npgs and the removal of the zerocopy
      memory type which got rid of the chunk_size_nohdr member.
      
      The mlx5 Kconfig conflict is a case where we just take the
      net-next copy of the Kconfig entry dependency as it takes on
      the ESWITCH dependency by one level of indirection which is
      what the 'net' conflicting change is trying to ensure.
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1806c13d
    • David S. Miller's avatar
      Merge tag 'mac80211-next-for-davem-2020-05-31' of... · 1079a34c
      David S. Miller authored
      
      Merge tag 'mac80211-next-for-davem-2020-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
      
      Johannes Berg says:
      
      ====================
      Another set of changes, including
       * many 6 GHz changes, though it's not _quite_ complete
         (I left out scanning for now, we're still discussing)
       * allow userspace SA-query processing for operating channel
         validation
       * TX status for control port TX, for AP-side operation
       * more per-STA/TID control options
       * move to kHz for channels, for future S1G operation
       * various other small changes
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1079a34c
    • Joe Perches's avatar
      checkpatch/coding-style: deprecate 80-column warning · bdc48fa1
      Joe Perches authored
      
      
      Yes, staying withing 80 columns is certainly still _preferred_.  But
      it's not the hard limit that the checkpatch warnings imply, and other
      concerns can most certainly dominate.
      
      Increase the default limit to 100 characters.  Not because 100
      characters is some hard limit either, but that's certainly a "what are
      you doing" kind of value and less likely to be about the occasional
      slightly longer lines.
      
      Miscellanea:
      
       - to avoid unnecessary whitespace changes in files, checkpatch will no
         longer emit a warning about line length when scanning files unless
         --strict is also used
      
       - Add a bit to coding-style about alignment to open parenthesis
      
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bdc48fa1
    • Linus Torvalds's avatar
      Merge tag 'x86-urgent-2020-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8fc984ae
      Linus Torvalds authored
      Pull x86 fixes from Thomas Gleixner:
       "A pile of x86 fixes:
      
         - Prevent a memory leak in ioperm which was caused by the stupid
           assumption that the exit cleanup is always called for current,
           which is not the case when fork fails after taking a reference on
           the ioperm bitmap.
      
         - Fix an arithmething overflow in the DMA code on 32bit systems
      
         - Fill gaps in the xstate copy with defaults instead of leaving them
           uninitialized
      
         - Revert: "Make __X32_SYSCALL_BIT be unsigned long" as it turned out
           that existing user space fails to build"
      
      * tag 'x86-urgent-2020-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/ioperm: Prevent a memory leak when fork fails
        x86/dma: Fix max PFN arithmetic overflow on 32 bit systems
        copy_xstate_to_kernel(): don't leave parts of destination uninitialized
        x86/syscalls: Revert "x86/syscalls: Make __X32_SYSCALL_BIT be unsigned long"
      8fc984ae
    • Linus Torvalds's avatar
      Merge tag 'sched-urgent-2020-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3d042823
      Linus Torvalds authored
      Pull scheduler fix from Thomas Gleixner:
       "A single scheduler fix preventing a crash in NUMA balancing.
      
        The current->mm check is not reliable as the mm might be temporary due
        to use_mm() in a kthread. Check for PF_KTHREAD explictly"
      
      * tag 'sched-urgent-2020-05-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/fair: Don't NUMA balance for kthreads
      3d042823
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 19835b1b
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Another week, another set of bug fixes:
      
         1) Fix pskb_pull length in __xfrm_transport_prep(), from Xin Long.
      
         2) Fix double xfrm_state put in esp{4,6}_gro_receive(), also from Xin
            Long.
      
         3) Re-arm discovery timer properly in mac80211 mesh code, from Linus
            Lüssing.
      
         4) Prevent buffer overflows in nf_conntrack_pptp debug code, from
            Pablo Neira Ayuso.
      
         5) Fix race in ktls code between tls_sw_recvmsg() and
            tls_decrypt_done(), from Vinay Kumar Yadav.
      
         6) Fix crashes on TCP fallback in MPTCP code, from Paolo Abeni.
      
         7) More validation is necessary of untrusted GSO packets coming from
            virtualization devices, from Willem de Bruijn.
      
         8) Fix endianness of bnxt_en firmware message length accesses, from
            Edwin Peer.
      
         9) Fix infinite loop in sch_fq_pie, from Davide Caratti.
      
        10) Fix lockdep splat in DSA by setting lockless TX in netdev features
            for slave ports, from Vladimir Oltean.
      
        11) Fix suspend/resume crashes in mlx5, from Mark Bloch.
      
        12) Fix use after free in bpf fmod_ret, from Alexei Starovoitov.
      
        13) ARP retransmit timer guard uses wrong offset, from Hongbin Liu.
      
        14) Fix leak in inetdev_init(), from Yang Yingliang.
      
        15) Don't try to use inet hash and unhash in l2tp code, results in
            crashes. From Eric Dumazet"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (77 commits)
        l2tp: add sk_family checks to l2tp_validate_socket
        l2tp: do not use inet_hash()/inet_unhash()
        net: qrtr: Allocate workqueue before kernel_bind
        mptcp: remove msk from the token container at destruction time.
        mptcp: fix race between MP_JOIN and close
        mptcp: fix unblocking connect()
        net/sched: act_ct: add nat mangle action only for NAT-conntrack
        devinet: fix memleak in inetdev_init()
        virtio_vsock: Fix race condition in virtio_transport_recv_pkt
        drivers/net/ibmvnic: Update VNIC protocol version reporting
        NFC: st21nfca: add missed kfree_skb() in an error path
        neigh: fix ARP retransmit timer guard
        bpf, selftests: Add a verifier test for assigning 32bit reg states to 64bit ones
        bpf, selftests: Verifier bounds tests need to be updated
        bpf: Fix a verifier issue when assigning 32bit reg states to 64bit ones
        bpf: Fix use-after-free in fmod_ret check
        net/mlx5e: replace EINVAL in mlx5e_flower_parse_meta()
        net/mlx5e: Fix MLX5_TC_CT dependencies
        net/mlx5e: Properly set default values when disabling adaptive moderation
        net/mlx5e: Fix arch depending casting issue in FEC
        ...
      19835b1b
  3. May 31, 2020
    • Nathan Errera's avatar
      cfg80211: support bigger kek/kck key length · 093a48d2
      Nathan Errera authored
      
      
      With some newer AKMs, the KCK and KEK are bigger, so allow that
      if the driver advertises support for it. In addition, add a new
      attribute for the AKM so we can use it for offloaded rekeying.
      
      Signed-off-by: default avatarNathan Errera <nathan.errera@intel.com>
      [reword commit message]
      Link: https://lore.kernel.org/r/20200528212237.5eb58b00a5d1.I61b09d77c4f382e8d58a05dcca78096e99a6bc15@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      093a48d2
    • Tova Mussai's avatar
      mac80211: set short_slot for 6 GHz band · 07c12d61
      Tova Mussai authored
      
      
      Set short slot also for 6 GHz band, just like 5 GHz.
      
      Signed-off-by: default avatarTova Mussai <tova.mussai@intel.com>
      Link: https://lore.kernel.org/r/20200528213443.75f38e6f5efd.I272fbae402b03123f04e9ae69204eeab960c70cd@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      07c12d61
    • Ilan Peer's avatar
      mac80211: Consider 6 GHz band when handling power constraint · 6fcb56ce
      Ilan Peer authored
      
      
      Treat it like the 5 GHz band.
      
      Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
      Link: https://lore.kernel.org/r/20200528213443.889e5c9dd006.Id8ed3bb8000ba8738be5df05639415eb2e23c61a@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      6fcb56ce
    • Johannes Berg's avatar
      mac80211: accept aggregation sessions on 6 GHz · 93382a0d
      Johannes Berg authored
      
      
      On 6 GHz, stations don't have ht_supported set, but they can
      still do aggregation since they must have HE, allow that.
      
      Link: https://lore.kernel.org/r/20200528213443.776d3c891b64.Ifa099d450617b50c691832b3c4aa08959fab520a@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      93382a0d
    • Johannes Berg's avatar
      cfg80211: require HE capabilities for 6 GHz band · f4381365
      Johannes Berg authored
      
      
      On 6 GHz band, HE capabilities must be available for all of
      the interface types, otherwise we shouldn't use 6 GHz. Check
      this.
      
      Link: https://lore.kernel.org/r/20200528213443.5881cb3c8c4a.I583b54172f91f98d44af64a16c5826fe458cbb27@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f4381365
    • Johannes Berg's avatar
      cfg80211: reject HT/VHT capabilities on 6 GHz band · 461ce35d
      Johannes Berg authored
      
      
      On the 6 GHz band, HE should be used, but without any direct HT/VHT
      capabilities, instead the HE 6 GHz band capabilities will capture
      the relevant information. Reject HT/VHT capabilities here.
      
      Link: https://lore.kernel.org/r/20200528213443.bfe89c35459a.Ibba5e066fa0087fd49d13cfee89d196ea0c68ae2@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      461ce35d
    • Johannes Berg's avatar
      cfg80211: treat 6 GHz channels as valid regardless of capability · ba8f6a03
      Johannes Berg authored
      
      
      If a 6 GHz channel exists, then we can probably safely assume that
      the device actually supports it, and then it should support most
      bandwidths.
      
      This will probably need to be extended to check the interface type
      and then dig into the HE capabilities for that though, to have the
      correct bandwidth check.
      
      Link: https://lore.kernel.org/r/20200528213443.d4864ef52e92.I82f09b2b14a56413ce20376d09967fe954a033eb@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      ba8f6a03
    • Ilan Peer's avatar
      mac80211: Add HE 6GHz capabilities element to probe request · 2ad2274c
      Ilan Peer authored
      
      
      On 6 GHz, the 6 GHz capabilities element should be added, do that.
      
      Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
      [add commit message]
      Link: https://lore.kernel.org/r/20200528213443.8ee764f0cde0.I2b0c66b60e11818c97c9803e04a6a197c6376243@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      2ad2274c
    • Johannes Berg's avatar
      mac80211: use HE 6 GHz band capability and pass it to the driver · 1bb9a8a4
      Johannes Berg authored
      
      
      In order to handle 6 GHz AP side, take the HE 6 GHz band capability
      data and pass it to the driver (which needs it for A-MPDU spacing
      and A-MPDU length).
      
      Link: https://lore.kernel.org/r/1589399105-25472-6-git-send-email-rmanohar@codeaurora.org
      Co-developed-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/20200528213443.784e4890d82f.I5f1230d5ab27e84e7bbe88e3645b24ea15a0c146@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      1bb9a8a4
    • Shaul Triebitz's avatar
      mac80211: check the correct bit for EMA AP · 3b3ec3d5
      Shaul Triebitz authored
      
      
      An AP supporting EMA (Enhanced Multi-BSSID advertisement) should set
      bit 83 in the extended capabilities IE (9.4.2.26 in the 802.11ax D5 spec).
      So the *3rd* bit of the 10th byte should be checked.
      Also, in one place, the wrong byte was checked.
      (cfg80211_find_ie returns a pointer to the beginning of the IE,
       so the data really starts at ie[2], so the 10th byte
       should be ie[12]. To avoid this confusion, use cfg80211_find_elem
       instead).
      
      Signed-off-by: default avatarShaul Triebitz <shaul.triebitz@intel.com>
      Link: https://lore.kernel.org/r/20200528213443.4316121fa2a3.I9745582f8d41ad8e689dac0fefcd70b276d7c1ea@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      3b3ec3d5
    • Johannes Berg's avatar
      mac80211: determine chandef from HE 6 GHz operation · 57fa5e85
      Johannes Berg authored
      
      
      Support connecting to HE 6 GHz APs and mesh networks on 6 GHz,
      where the HT/VHT information is missing but instead the HE 6 GHz
      band capability is present, and the 6 GHz Operation information
      field is used to encode the channel configuration instead of the
      HT/VHT operation elements.
      
      Also add some other bits needed to connect to 6 GHz networks.
      
      Link: https://lore.kernel.org/r/1589399105-25472-10-git-send-email-rmanohar@codeaurora.org
      Co-developed-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/20200528213443.25687d2695bc.I3f9747c1147480f65445f13eda5c4a5ed4e86757@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      57fa5e85
    • Johannes Berg's avatar
      mac80211: avoid using ext NSS high BW if not supported · 2a333a0d
      Johannes Berg authored
      
      
      If the AP advertises inconsistent data, namely it has CCFS1 or CCFS2,
      but doesn't advertise support for 160/80+80 bandwidth or "Extended NSS
      BW Support", then we cannot use any MCSes in the the higher bandwidth.
      Thus, avoid connecting with higher bandwidth since it's less efficient
      that way.
      
      Link: https://lore.kernel.org/r/20200528213443.0e55d40c3ccc.I6fd0b4708ebd087e5e46466c3e91f6efbcbef668@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      2a333a0d
    • Rajkumar Manoharan's avatar
      mac80211: do not allow HT/VHT IEs in 6 GHz mesh mode · 607ca9ea
      Rajkumar Manoharan authored
      
      
      As HT/VHT elements are not allowed in 6 GHz band, do not include
      them in mesh beacon template formation.
      
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/1589399105-25472-9-git-send-email-rmanohar@codeaurora.org
      Link: https://lore.kernel.org/r/20200528193455.76796-2-johannes@sipsolutions.net
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      607ca9ea
    • Rajkumar Manoharan's avatar
      mac80211: build HE operation with 6 GHz oper information · d1b7524b
      Rajkumar Manoharan authored
      
      
      Add 6 GHz operation information (IEEE 802.11ax/D6.0, Figure 9-787k)
      while building HE operation element for non-HE AP. This field is used to
      determine channel information in the absence of HT/VHT IEs.
      
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/1589399105-25472-8-git-send-email-rmanohar@codeaurora.org
      [fix skb allocation size]
      Link: https://lore.kernel.org/r/20200528193455.76796-1-johannes@sipsolutions.net
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      d1b7524b
    • Rajkumar Manoharan's avatar
      mac80211: add HE 6 GHz Band Capability element · 24a2042c
      Rajkumar Manoharan authored
      
      
      Construct HE 6 GHz band capability element (IEEE 802.11ax/D6.0,
      9.4.2.261) for association request and mesh beacon. The 6 GHz
      capability information is passed by driver through iftypes caps.
      
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/1589399105-25472-7-git-send-email-rmanohar@codeaurora.org
      [handle SMPS, adjust for previous patches, reserve SKB space properly,
       change to handle SKB directly]
      Link: https://lore.kernel.org/r/20200528213443.643aa8101111.I3f9747c1147480f65445f13eda5c4a5ed4e86757@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      24a2042c
    • Johannes Berg's avatar
      cfg80211: add and expose HE 6 GHz band capabilities · 22395217
      Johannes Berg authored
      
      
      These capabilities cover what would otherwise be transported
      in HT/VHT capabilities, but only a subset thereof that is
      actually needed on 6 GHz with HE already present. Expose the
      capabilities to userspace, drivers are expected to set them
      as using the 6 GHz band (currently) requires HE capability.
      
      Link: https://lore.kernel.org/r/20200528213443.244cd5cb9db8.Icd8c773277a88c837e7e3af1d4d1013cc3b66543@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      22395217
    • Rajkumar Manoharan's avatar
      mac80211: add HE 6 GHz Band Capabilities into parse extension · a6cf28e0
      Rajkumar Manoharan authored
      
      
      Handle 6 GHz band capability element parsing for association.
      
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/1589399105-25472-4-git-send-email-rmanohar@codeaurora.org
      [some renaming to be in line with previous patches]
      Link: https://lore.kernel.org/r/20200528213443.a13d7a0b85b0.Ia07584da4fc77aa77c4cc563248d2ce4234ffe5d@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      a6cf28e0
    • Rajkumar Manoharan's avatar
      cfg80211: handle 6 GHz capability of new station · 43e64bf3
      Rajkumar Manoharan authored
      
      
      Handle 6 GHz HE capability while adding new station. It will be used
      later in mac80211 station processing.
      
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
      Link: https://lore.kernel.org/r/1589399105-25472-2-git-send-email-rmanohar@codeaurora.org
      [handle nl80211_set_station, require WME,
       remove NL80211_HE_6GHZ_CAPABILITY_LEN]
      Link: https://lore.kernel.org/r/20200528213443.b6b711fd4312.Ic9b97d57b6c4f2b28d4b2d23d2849d8bc20bd8cc@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      43e64bf3
    • Johannes Berg's avatar
      ieee80211: add HE ext EIDs and 6 GHz capability defines · 8b30808d
      Johannes Berg authored
      
      
      Add the HE extended element IDs and the definitions for the
      HE 6 GHz band capabilities element, from Draft 5.0.
      
      Link: https://lore.kernel.org/r/20200528213443.1a6689fe093f.Ifdc5400fb01779351354daf38663ebeea03c9ad9@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8b30808d
    • Johannes Berg's avatar
      ieee80211: add code to obtain and parse 6 GHz operation field · 821273a5
      Johannes Berg authored
      
      
      Add some code to obtain and parse the 6 GHz operation field
      inside the HE operation element.
      
      While at it, fix the required length using sizeof() the new
      struct, which is 5 instead of 4 now.
      
      Link: https://lore.kernel.org/r/20200528213443.42ca72c45ca9.Id74bc1b03da9ea6574f9bc70deeb60dfc1634359@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      821273a5
    • Tova Mussai's avatar
      ieee80211: definitions for reduced neighbor reports · 372b38ea
      Tova Mussai authored
      
      
      Add the necessary definitions to parse reduced neighbor
      report elements.
      
      Signed-off-by: default avatarTova Mussai <tova.mussai@intel.com>
      [change struct name, remove IEEE80211_MIN_AP_NEIGHBOR_INFO_SIZE]
      Link: https://lore.kernel.org/r/20200528213443.4f9154461c06.I518d9898ad982f838112ea9ca14a20d6bbb16394@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      372b38ea
    • Johannes Berg's avatar
      cfg80211: add a helper to identify 6 GHz PSCs · afbc9c9e
      Johannes Berg authored
      
      
      This allows identifying whether or not a channel is a PSC
      (preferred scanning channel).
      
      Link: https://lore.kernel.org/r/20200528213443.414363ecf62c.Ic15e681a0e249eab7350a06ceb582cca8bb9a080@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      afbc9c9e
    • Johannes Berg's avatar
      nl80211: really allow client-only BIGTK support · 0e47901d
      Johannes Berg authored
      My previous commit here was wrong, it didn't check the new
      flag in two necessary places, so things didn't work. Fix that.
      
      Fixes: 155d7c73
      
       ("nl80211: allow client-only BIGTK support")
      Link: https://lore.kernel.org/r/20200528213443.993f108e96ca.I0086ae42d672379380d04ac5effb2f3d5135731b@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      0e47901d
    • Arend Van Spriel's avatar
      cfg80211: adapt to new channelization of the 6GHz band · d1a1646c
      Arend Van Spriel authored
      
      
      The 6GHz band does not have regulatory approval yet, but things are
      moving forward. However, that has led to a change in the channelization
      of the 6GHz band which has been accepted in the 11ax specification. It
      also fixes a missing MHZ_TO_KHZ() macro for 6GHz channels while at it.
      
      This change is primarily thrown in to discuss how to deal with it.
      I noticed ath11k adding 6G support with old channelization and ditto
      for iw. It probably involves changes in hostapd as well.
      
      Cc: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
      Cc: Jouni Malinen <jouni@w1.fi>
      Signed-off-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
      Link: https://lore.kernel.org/r/edf07cdd-ad15-4012-3afd-d8b961a80b69@broadcom.com
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      d1a1646c
    • Johannes Berg's avatar
      cfg80211: fix 6 GHz frequencies to kHz · 5e9cf0f0
      Johannes Berg authored
      The updates to change to kHz frequencies and the 6 GHz
      additions evidently overlapped (or rather, I didn't see
      it when applying the latter), so the 6 GHz is broken.
      Fix this.
      
      Fixes: 934f4c7d
      
       ("cfg80211: express channels with a KHz component")
      Link: https://lore.kernel.org/r/20200529140425.1bf824f6911b.I4a1174916b8f5965af4366999eb9ffc7a0347470@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      5e9cf0f0
    • Eric Dumazet's avatar
      l2tp: add sk_family checks to l2tp_validate_socket · d9a81a22
      Eric Dumazet authored
      syzbot was able to trigger a crash after using an ISDN socket
      and fool l2tp.
      
      Fix this by making sure the UDP socket is of the proper family.
      
      BUG: KASAN: slab-out-of-bounds in setup_udp_tunnel_sock+0x465/0x540 net/ipv4/udp_tunnel.c:78
      Write of size 1 at addr ffff88808ed0c590 by task syz-executor.5/3018
      
      CPU: 0 PID: 3018 Comm: syz-executor.5 Not tainted 5.7.0-rc6-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x188/0x20d lib/dump_stack.c:118
       print_address_description.constprop.0.cold+0xd3/0x413 mm/kasan/report.c:382
       __kasan_report.cold+0x20/0x38 mm/kasan/report.c:511
       kasan_report+0x33/0x50 mm/kasan/common.c:625
       setup_udp_tunnel_sock+0x465/0x540 net/ipv4/udp_tunnel.c:78
       l2tp_tunnel_register+0xb15/0xdd0 net/l2tp/l2tp_core.c:1523
       l2tp_nl_cmd_tunnel_create+0x4b2/0xa60 net/l2tp/l2tp_netlink.c:249
       genl_family_rcv_msg_doit net/netlink/genetlink.c:673 [inline]
       genl_family_rcv_msg net/netlink/genetlink.c:718 [inline]
       genl_rcv_msg+0x627/0xdf0 net/netlink/genetlink.c:735
       netlink_rcv_skb+0x15a/0x410 net/netlink/af_netlink.c:2469
       genl_rcv+0x24/0x40 net/netlink/genetlink.c:746
       netlink_unicast_kernel net/netlink/af_netlink.c:1303 [inline]
       netlink_unicast+0x537/0x740 net/netlink/af_netlink.c:1329
       netlink_sendmsg+0x882/0xe10 net/netlink/af_netlink.c:1918
       sock_sendmsg_nosec net/socket.c:652 [inline]
       sock_sendmsg+0xcf/0x120 net/socket.c:672
       ____sys_sendmsg+0x6e6/0x810 net/socket.c:2352
       ___sys_sendmsg+0x100/0x170 net/socket.c:2406
       __sys_sendmsg+0xe5/0x1b0 net/socket.c:2439
       do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
       entry_SYSCALL_64_after_hwframe+0x49/0xb3
      RIP: 0033:0x45ca29
      Code: 0d b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 db b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
      RSP: 002b:00007effe76edc78 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
      RAX: ffffffffffffffda RBX: 00000000004fe1c0 RCX: 000000000045ca29
      RDX: 0000000000000000 RSI: 0000000020000240 RDI: 0000000000000005
      RBP: 000000000078bf00 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
      R13: 000000000000094e R14: 00000000004d5d00 R15: 00007effe76ee6d4
      
      Allocated by task 3018:
       save_stack+0x1b/0x40 mm/kasan/common.c:49
       set_track mm/kasan/common.c:57 [inline]
       __kasan_kmalloc mm/kasan/common.c:495 [inline]
       __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:468
       __do_kmalloc mm/slab.c:3656 [inline]
       __kmalloc+0x161/0x7a0 mm/slab.c:3665
       kmalloc include/linux/slab.h:560 [inline]
       sk_prot_alloc+0x223/0x2f0 net/core/sock.c:1612
       sk_alloc+0x36/0x1100 net/core/sock.c:1666
       data_sock_create drivers/isdn/mISDN/socket.c:600 [inline]
       mISDN_sock_create+0x272/0x400 drivers/isdn/mISDN/socket.c:796
       __sock_create+0x3cb/0x730 net/socket.c:1428
       sock_create net/socket.c:1479 [inline]
       __sys_socket+0xef/0x200 net/socket.c:1521
       __do_sys_socket net/socket.c:1530 [inline]
       __se_sys_socket net/socket.c:1528 [inline]
       __x64_sys_socket+0x6f/0xb0 net/socket.c:1528
       do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
       entry_SYSCALL_64_after_hwframe+0x49/0xb3
      
      Freed by task 2484:
       save_stack+0x1b/0x40 mm/kasan/common.c:49
       set_track mm/kasan/common.c:57 [inline]
       kasan_set_free_info mm/kasan/common.c:317 [inline]
       __kasan_slab_free+0xf7/0x140 mm/kasan/common.c:456
       __cache_free mm/slab.c:3426 [inline]
       kfree+0x109/0x2b0 mm/slab.c:3757
       kvfree+0x42/0x50 mm/util.c:603
       __free_fdtable+0x2d/0x70 fs/file.c:31
       put_files_struct fs/file.c:420 [inline]
       put_files_struct+0x248/0x2e0 fs/file.c:413
       exit_files+0x7e/0xa0 fs/file.c:445
       do_exit+0xb04/0x2dd0 kernel/exit.c:791
       do_group_exit+0x125/0x340 kernel/exit.c:894
       get_signal+0x47b/0x24e0 kernel/signal.c:2739
       do_signal+0x81/0x2240 arch/x86/kernel/signal.c:784
       exit_to_usermode_loop+0x26c/0x360 arch/x86/entry/common.c:161
       prepare_exit_to_usermode arch/x86/entry/common.c:196 [inline]
       syscall_return_slowpath arch/x86/entry/common.c:279 [inline]
       do_syscall_64+0x6b1/0x7d0 arch/x86/entry/common.c:305
       entry_SYSCALL_64_after_hwframe+0x49/0xb3
      
      The buggy address belongs to the object at ffff88808ed0c000
       which belongs to the cache kmalloc-2k of size 2048
      The buggy address is located 1424 bytes inside of
       2048-byte region [ffff88808ed0c000, ffff88808ed0c800)
      The buggy address belongs to the page:
      page:ffffea00023b4300 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0
      flags: 0xfffe0000000200(slab)
      raw: 00fffe0000000200 ffffea0002838208 ffffea00015ba288 ffff8880aa000e00
      raw: 0000000000000000 ffff88808ed0c000 0000000100000001 0000000000000000
      page dumped because: kasan: bad access detected
      
      Memory state around the buggy address:
       ffff88808ed0c480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
       ffff88808ed0c500: 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc
      >ffff88808ed0c580: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                               ^
       ffff88808ed0c600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffff88808ed0c680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      
      Fixes: 6b9f3423 ("l2tp: fix races in tunnel creation")
      Fixes: fd558d18
      
       ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: James Chapman <jchapman@katalix.com>
      Cc: Guillaume Nault <gnault@redhat.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Acked-by: default avatarGuillaume Nault <gnault@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d9a81a22
    • Eric Dumazet's avatar
      l2tp: do not use inet_hash()/inet_unhash() · 02c71b14
      Eric Dumazet authored
      syzbot recently found a way to crash the kernel [1]
      
      Issue here is that inet_hash() & inet_unhash() are currently
      only meant to be used by TCP & DCCP, since only these protocols
      provide the needed hashinfo pointer.
      
      L2TP uses a single list (instead of a hash table)
      
      This old bug became an issue after commit 61023658
      ("bpf: Add new cgroup attach type to enable sock modifications")
      since after this commit, sk_common_release() can be called
      while the L2TP socket is still considered 'hashed'.
      
      general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] PREEMPT SMP KASAN
      KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
      CPU: 0 PID: 7063 Comm: syz-executor654 Not tainted 5.7.0-rc6-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:inet_unhash+0x11f/0x770 net/ipv4/inet_hashtables.c:600
      Code: 03 0f b6 04 02 84 c0 74 08 3c 03 0f 8e dd 04 00 00 48 8d 7d 08 44 8b 73 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 55 05 00 00 48 8d 7d 14 4c 8b 6d 08 48 b8 00 00
      RSP: 0018:ffffc90001777d30 EFLAGS: 00010202
      RAX: dffffc0000000000 RBX: ffff88809a6df940 RCX: ffffffff8697c242
      RDX: 0000000000000001 RSI: ffffffff8697c251 RDI: 0000000000000008
      RBP: 0000000000000000 R08: ffff88809f3ae1c0 R09: fffffbfff1514cc1
      R10: ffffffff8a8a6607 R11: fffffbfff1514cc0 R12: ffff88809a6df9b0
      R13: 0000000000000007 R14: 0000000000000000 R15: ffffffff873a4d00
      FS:  0000000001d2b880(0000) GS:ffff8880ae600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000006cd090 CR3: 000000009403a000 CR4: 00000000001406f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       sk_common_release+0xba/0x370 net/core/sock.c:3210
       inet_create net/ipv4/af_inet.c:390 [inline]
       inet_create+0x966/0xe00 net/ipv4/af_inet.c:248
       __sock_create+0x3cb/0x730 net/socket.c:1428
       sock_create net/socket.c:1479 [inline]
       __sys_socket+0xef/0x200 net/socket.c:1521
       __do_sys_socket net/socket.c:1530 [inline]
       __se_sys_socket net/socket.c:1528 [inline]
       __x64_sys_socket+0x6f/0xb0 net/socket.c:1528
       do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
       entry_SYSCALL_64_after_hwframe+0x49/0xb3
      RIP: 0033:0x441e29
      Code: e8 fc b3 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 eb 08 fc ff c3 66 2e 0f 1f 84 00 00 00 00
      RSP: 002b:00007ffdce184148 EFLAGS: 00000246 ORIG_RAX: 0000000000000029
      RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000441e29
      RDX: 0000000000000073 RSI: 0000000000000002 RDI: 0000000000000002
      RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      R13: 0000000000402c30 R14: 0000000000000000 R15: 0000000000000000
      Modules linked in:
      ---[ end trace 23b6578228ce553e ]---
      RIP: 0010:inet_unhash+0x11f/0x770 net/ipv4/inet_hashtables.c:600
      Code: 03 0f b6 04 02 84 c0 74 08 3c 03 0f 8e dd 04 00 00 48 8d 7d 08 44 8b 73 08 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 55 05 00 00 48 8d 7d 14 4c 8b 6d 08 48 b8 00 00
      RSP: 0018:ffffc90001777d30 EFLAGS: 00010202
      RAX: dffffc0000000000 RBX: ffff88809a6df940 RCX: ffffffff8697c242
      RDX: 0000000000000001 RSI: ffffffff8697c251 RDI: 0000000000000008
      RBP: 0000000000000000 R08: ffff88809f3ae1c0 R09: fffffbfff1514cc1
      R10: ffffffff8a8a6607 R11: fffffbfff1514cc0 R12: ffff88809a6df9b0
      R13: 0000000000000007 R14: 0000000000000000 R15: ffffffff873a4d00
      FS:  0000000001d2b880(0000) GS:ffff8880ae600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000006cd090 CR3: 000000009403a000 CR4: 00000000001406f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      
      Fixes: 0d76751f
      
       ("l2tp: Add L2TPv3 IP encapsulation (no UDP) support")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: James Chapman <jchapman@katalix.com>
      Cc: Andrii Nakryiko <andriin@fb.com>
      Reported-by: default avatar <syzbot+3610d489778b57cc8031@syzkaller.appspotmail.com>
      02c71b14
    • Paolo Abeni's avatar
      mptcp: fix NULL ptr dereference in MP_JOIN error path · 39884604
      Paolo Abeni authored
      When token lookup on MP_JOIN 3rd ack fails, the server
      socket closes with a reset the incoming child. Such socket
      has the 'is_mptcp' flag set, but no msk socket associated
      - due to the failed lookup.
      
      While crafting the reset packet mptcp_established_options_mp()
      will try to dereference the child's master socket, causing
      a NULL ptr dereference.
      
      This change addresses the issue with explicit fallback to
      TCP in such error path.
      
      Fixes: 729cd643
      
       ("mptcp: cope better with MP_JOIN failure")
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      39884604
    • Toke Høiland-Jørgensen's avatar
      sch_cake: Take advantage of skb->hash where appropriate · b0c19ed6
      Toke Høiland-Jørgensen authored
      While the other fq-based qdiscs take advantage of skb->hash and doesn't
      recompute it if it is already set, sch_cake does not.
      
      This was a deliberate choice because sch_cake hashes various parts of the
      packet header to support its advanced flow isolation modes. However,
      foregoing the use of skb->hash entirely loses a few important benefits:
      
      - When skb->hash is set by hardware, a few CPU cycles can be saved by not
        hashing again in software.
      
      - Tunnel encapsulations will generally preserve the value of skb->hash from
        before the encapsulation, which allows flow-based qdiscs to distinguish
        between flows even though the outer packet header no longer has flow
        information.
      
      It turns out that we can preserve these desirable properties in many cases,
      while still supporting the advanced flow isolation properties of sch_cake.
      This patch does so by reusing the skb->hash value as the flow_hash part of
      the hashing procedure in cake_hash() only in the following conditions:
      
      - If the skb->hash is marked as covering the flow headers (skb->l4_hash is
        set)
      
      AND
      
      - NAT header rewriting is either disabled, or did not change any values
        used for hashing. The latter is important to match local-origin packets
        such as those of a tunnel endpoint.
      
      The immediate motivation for fixing this was the recent patch to WireGuard
      to preserve the skb->hash on encapsulation. As such, this is also what I
      tested against; with this patch, added latency under load for competing
      flows drops from ~8 ms to sub-1ms on an RRUL test over a WireGuard tunnel
      going through a virtual link shaped to 1Gbps using sch_cake. This matches
      the results we saw with a similar setup using sch_fq_codel when testing the
      WireGuard patch.
      
      Fixes: 046f6fd5
      
       ("sched: Add Common Applications Kept Enhanced (cake) qdisc")
      Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b0c19ed6
    • Geert Uytterhoeven's avatar
      ravb: Mask PHY mode to avoid inserting delays twice · 9b23203c
      Geert Uytterhoeven authored
      Until recently, the Micrel KSZ9031 PHY driver ignored any PHY mode
      ("RGMII-*ID") settings, but used the hardware defaults, augmented by
      explicit configuration of individual skew values using the "*-skew-ps"
      DT properties.  The lack of PHY mode support was compensated by the
      EtherAVB MAC driver, which configures TX and/or RX internal delay
      itself, based on the PHY mode.
      
      However, now the KSZ9031 driver has gained PHY mode support, delays may
      be configured twice, causing regressions.  E.g. on the Renesas
      Salvator-X board with R-Car M3-W ES1.0, TX performance dropped from ca.
      400 Mbps to 0.1-0.3 Mbps, as measured by nuttcp.
      
      As internal delay configuration supported by the KSZ9031 PHY is too
      limited for some use cases, the ability to configure MAC internal delay
      is deemed useful and necessary.  Hence a proper fix would involve
      splitting internal delay configuration in two parts, one for the PHY,
      and one for the MAC.  However, this would require adding new DT
      properties, thus breaking DTB backwards-compatibility.
      
      Hence fix the regression in a backwards-compatibility way, by letting
      the EtherAVB driver mask the PHY mode when it has inserted a delay, to
      avoid the PHY driver adding a second delay.  This also fixes messages
      like:
      
          Micrel KSZ9031 Gigabit PHY e6800000.ethernet-ffffffff:00: *-skew-ps values should be used only with phy-mode = "rgmii"
      
      as the PHY no longer sees the original RGMII-*ID mode.
      
      Solving the issue by splitting configuration in two parts can be handled
      in future patches, and would require retaining a backwards-compatibility
      mode anyway.
      
      Fixes: bcf3440c
      
       ("net: phy: micrel: add phy-mode support for the KSZ9031 PHY")
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9b23203c
    • David S. Miller's avatar
      Merge branch 'selftests-forwarding-Two-small-changes' · e8c867c1
      David S. Miller authored
      
      
      Petr Machata says:
      
      ====================
      selftests: forwarding: Two small changes
      
      Two unrelated changes in this patchset:
      
      - In patch #1, convert mirror tests from using ping directly to generating
        ICMP packets by mausezahn. Using ping in tests is error-prone, because
        ping is too smart. On a flaky system (notably in a simulator), when
        packets don't come quickly enough, more pings are sent, and that throws
        off counters. This was worked around in the past by just pinging more
        slowly, but using mausezahn avoids the issue as well without making the
        tests unnecessary slow.
      
      - A missing stats_update callback was recently added to act_pedit. Now that
        iproute2 supports JSON dumping for pedit, extend in patch #2 the
        pedit_dsfield selftest with a check that would have caught the fact that
        the callback was missing.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e8c867c1
    • Petr Machata's avatar
      selftests: forwarding: pedit_dsfield: Check counter value · 3ed97037
      Petr Machata authored
      
      
      A missing stats_update callback was recently added to act_pedit. Now that
      iproute2 supports JSON dumping for pedit, extend the pedit_dsfield selftest
      with a check that would have caught the fact that the callback was missing.
      
      Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3ed97037