1. 29 Nov, 2021 7 commits
    • Kees Cook's avatar
      intersil: Use struct_group() for memcpy() region · 601d2293
      Kees Cook authored
      In preparation for FORTIFY_SOURCE performing compile-time and run-time
      field bounds checking for memcpy(), memmove(), and memset(), avoid
      intentionally writing across neighboring fields.
      
      Use struct_group() in struct hfa384x_tx_frame around members
      frame_control, duration_id, addr1, addr2, addr3, and seq_ctrl, so they
      can be referenced together. This will allow memcpy() and sizeof() to
      more easily reason about sizes, improve readability, and avoid future
      warnings about writing beyond the end of frame_control.
      
      "pahole" shows no size nor member offset changes to struct
      hfa384x_tx_frame. "objdump -d" shows no object code changes.
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20211119004646.2347920-1-keescook@chromium.org
      601d2293
    • Kees Cook's avatar
      libertas_tf: Use struct_group() for memcpy() region · 642a5747
      Kees Cook authored
      In preparation for FORTIFY_SOURCE performing compile-time and run-time
      field array bounds checking for memcpy(), memmove(), and memset(),
      avoid intentionally writing across neighboring fields.
      
      Use struct_group() in struct txpd around members tx_dest_addr_high
      and tx_dest_addr_low so they can be referenced together. This will
      allow memcpy() and sizeof() to more easily reason about sizes, improve
      readability, and avoid future warnings about writing beyond the end
      of tx_dest_addr_high.
      
      "pahole" shows no size nor member offset changes to struct txpd.
      "objdump -d" shows no object code changes.
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20211118184121.1283821-1-keescook@chromium.org
      642a5747
    • Kees Cook's avatar
      libertas: Use struct_group() for memcpy() region · 5fd32ae0
      Kees Cook authored
      In preparation for FORTIFY_SOURCE performing compile-time and run-time
      field bounds checking for memcpy(), memmove(), and memset(), avoid
      intentionally writing across neighboring fields.
      
      Use struct_group() in struct txpd around members tx_dest_addr_high
      and tx_dest_addr_low so they can be referenced together. This will
      allow memcpy() and sizeof() to more easily reason about sizes, improve
      readability, and avoid future warnings about writing beyond the end
      of queue_id.
      
      "pahole" shows no size nor member offset changes to struct txpd.
      "objdump -d" shows no object code changes.
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20211118184104.1283637-1-keescook@chromium.org
      5fd32ae0
    • Jason Wang's avatar
      wlcore: no need to initialise statics to false · fa4408b0
      Jason Wang authored
      Static variables do not need to be initialized to false. The
      compiler will do that.
      Signed-off-by: default avatarJason Wang <wangborong@cdjrlc.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20211113063551.257804-1-wangborong@cdjrlc.com
      fa4408b0
    • Zekun Shen's avatar
      rsi: Fix out-of-bounds read in rsi_read_pkt() · f1cb3476
      Zekun Shen authored
      rsi_get_* functions rely on an offset variable from usb
      input. The size of usb input is RSI_MAX_RX_USB_PKT_SIZE(3000),
      while 2-byte offset can be up to 0xFFFF. Thus a large offset
      can cause out-of-bounds read.
      
      The patch adds a bound checking condition when rcv_pkt_len is 0,
      indicating it's USB. It's unclear whether this is triggerable
      from other type of bus. The following check might help in that case.
      offset > rcv_pkt_len - FRAME_DESC_SZ
      
      The bug is trigerrable with conpromised/malfunctioning USB devices.
      I tested the patch with the crashing input and got no more bug report.
      
      Attached is the KASAN report from fuzzing.
      
      BUG: KASAN: slab-out-of-bounds in rsi_read_pkt+0x42e/0x500 [rsi_91x]
      Read of size 2 at addr ffff888019439fdb by task RX-Thread/227
      
      CPU: 0 PID: 227 Comm: RX-Thread Not tainted 5.6.0 #66
      Call Trace:
       dump_stack+0x76/0xa0
       print_address_description.constprop.0+0x16/0x200
       ? rsi_read_pkt+0x42e/0x500 [rsi_91x]
       ? rsi_read_pkt+0x42e/0x500 [rsi_91x]
       __kasan_report.cold+0x37/0x7c
       ? rsi_read_pkt+0x42e/0x500 [rsi_91x]
       kasan_report+0xe/0x20
       rsi_read_pkt+0x42e/0x500 [rsi_91x]
       rsi_usb_rx_thread+0x1b1/0x2fc [rsi_usb]
       ? rsi_probe+0x16a0/0x16a0 [rsi_usb]
       ? _raw_spin_lock_irqsave+0x7b/0xd0
       ? _raw_spin_trylock_bh+0x120/0x120
       ? __wake_up_common+0x10b/0x520
       ? rsi_probe+0x16a0/0x16a0 [rsi_usb]
       kthread+0x2b5/0x3b0
       ? kthread_create_on_node+0xd0/0xd0
       ret_from_fork+0x22/0x40
      Reported-by: default avatarBrendan Dolan-Gavitt <brendandg@nyu.edu>
      Signed-off-by: default avatarZekun Shen <bruceshenzk@gmail.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/YXxXS4wgu2OsmlVv@10-18-43-117.dynapool.wireless.nyu.edu
      f1cb3476
    • Zekun Shen's avatar
      rsi: Fix use-after-free in rsi_rx_done_handler() · b07e3c6e
      Zekun Shen authored
      When freeing rx_cb->rx_skb, the pointer is not set to NULL,
      a later rsi_rx_done_handler call will try to read the freed
      address.
      This bug will very likley lead to double free, although
      detected early as use-after-free bug.
      
      The bug is triggerable with a compromised/malfunctional usb
      device. After applying the patch, the same input no longer
      triggers the use-after-free.
      
      Attached is the kasan report from fuzzing.
      
      BUG: KASAN: use-after-free in rsi_rx_done_handler+0x354/0x430 [rsi_usb]
      Read of size 4 at addr ffff8880188e5930 by task modprobe/231
      Call Trace:
       <IRQ>
       dump_stack+0x76/0xa0
       print_address_description.constprop.0+0x16/0x200
       ? rsi_rx_done_handler+0x354/0x430 [rsi_usb]
       ? rsi_rx_done_handler+0x354/0x430 [rsi_usb]
       __kasan_report.cold+0x37/0x7c
       ? dma_direct_unmap_page+0x90/0x110
       ? rsi_rx_done_handler+0x354/0x430 [rsi_usb]
       kasan_report+0xe/0x20
       rsi_rx_done_handler+0x354/0x430 [rsi_usb]
       __usb_hcd_giveback_urb+0x1e4/0x380
       usb_giveback_urb_bh+0x241/0x4f0
       ? __usb_hcd_giveback_urb+0x380/0x380
       ? apic_timer_interrupt+0xa/0x20
       tasklet_action_common.isra.0+0x135/0x330
       __do_softirq+0x18c/0x634
       ? handle_irq_event+0xcd/0x157
       ? handle_edge_irq+0x1eb/0x7b0
       irq_exit+0x114/0x140
       do_IRQ+0x91/0x1e0
       common_interrupt+0xf/0xf
       </IRQ>
      Reported-by: default avatarBrendan Dolan-Gavitt <brendandg@nyu.edu>
      Signed-off-by: default avatarZekun Shen <bruceshenzk@gmail.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/YXxQL/vIiYcZUu/j@10-18-43-117.dynapool.wireless.nyu.edu
      b07e3c6e
    • Loic Poulain's avatar
      brcmfmac: Configure keep-alive packet on suspend · 7a6cfe28
      Loic Poulain authored
      When entering suspend as a client station with wowlan enabled,
      the Wi-Fi link is supposed to be maintained. In that state, no
      more data is generated from client side, and the link stays idle
      as long the station is suspended and as long the AP as no data to
      transmit.
      
      However, most of the APs kick-off such 'inactive' stations after
      few minutes, causing unexpected disconnect (reconnect, etc...).
      
      The usual way to prevent this is to submit a Null function frame
      periodically as a keep-alive. This is something that can be host
      /software generated (e.g. wpa_supplicant), but that needs to be
      offloaded to the Wi-Fi controller in case of suspended host.
      
      This change enables firmware generated keep-alive frames when
      entering wowlan suspend, using the 'mkeep_alive' IOVAR.
      Signed-off-by: default avatarLoic Poulain <loic.poulain@linaro.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/1637596046-21651-1-git-send-email-loic.poulain@linaro.org
      7a6cfe28
  2. 26 Nov, 2021 23 commits
  3. 19 Nov, 2021 4 commits
    • Kalle Valo's avatar
      Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git · 728e26c3
      Kalle Valo authored
      ath.git patches for v5.17. Major changes:
      
      ath10k
      
      * fetch (pre-)calibration data via nvmem subsystem
      
      ath11k
      
      * enable 802.11 power save mode in station mode for qca6390 and wcn6855
      
      * trace log support
      
      * proper board file detection for WCN6855 based on PCI ids
      
      * BSS color change support
      728e26c3
    • Peter Seiderer's avatar
      ath9k: fix intr_txqs setting · 5125b9a9
      Peter Seiderer authored
      The struct ath_hw member intr_txqs is never reset/assigned outside
      of ath9k_hw_init_queues() and with the used bitwise-or in the interrupt
      handling ar9002_hw_get_isr() accumulates all ever set interrupt flags.
      
      Fix this by using a pure assign instead of bitwise-or for the
      first line (note: intr_txqs is only evaluated in case ATH9K_INT_TX bit
      is set).
      Signed-off-by: default avatarPeter Seiderer <ps.report@gmx.net>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/20211116220720.30145-1-ps.report@gmx.net
      5125b9a9
    • Seevalamuthu Mariappan's avatar
      ath11k: add hw_param for wakeup_mhi · 081e2d64
      Seevalamuthu Mariappan authored
      Wakeup mhi is needed before pci_read/write only for QCA6390 and WCN6855. Since
      wakeup & release mhi is enabled for all hardwares, below mhi assert is seen in
      QCN9074 when doing 'rmmod ath11k_pci':
      
      	Kernel panic - not syncing: dev_wake != 0
      	CPU: 2 PID: 13535 Comm: procd Not tainted 4.4.60 #1
      	Hardware name: Generic DT based system
      	[<80316dac>] (unwind_backtrace) from [<80313700>] (show_stack+0x10/0x14)
      	[<80313700>] (show_stack) from [<805135dc>] (dump_stack+0x7c/0x9c)
      	[<805135dc>] (dump_stack) from [<8032136c>] (panic+0x84/0x1f8)
      	[<8032136c>] (panic) from [<80549b24>] (mhi_pm_disable_transition+0x3b8/0x5b8)
      	[<80549b24>] (mhi_pm_disable_transition) from [<80549ddc>] (mhi_power_down+0xb8/0x100)
      	[<80549ddc>] (mhi_power_down) from [<7f5242b0>] (ath11k_mhi_op_status_cb+0x284/0x3ac [ath11k_pci])
      	[E][__mhi_device_get_sync] Did not enter M0 state, cur_state:RESET pm_state:SHUTDOWN Process
      	[E][__mhi_device_get_sync] Did not enter M0 state, cur_state:RESET pm_state:SHUTDOWN Process
      	[E][__mhi_device_get_sync] Did not enter M0 state, cur_state:RESET pm_state:SHUTDOWN Process
      	[<7f5242b0>] (ath11k_mhi_op_status_cb [ath11k_pci]) from [<7f524878>] (ath11k_mhi_stop+0x10/0x20 [ath11k_pci])
      	[<7f524878>] (ath11k_mhi_stop [ath11k_pci]) from [<7f525b94>] (ath11k_pci_power_down+0x54/0x90 [ath11k_pci])
      	[<7f525b94>] (ath11k_pci_power_down [ath11k_pci]) from [<8056b2a8>] (pci_device_shutdown+0x30/0x44)
      	[<8056b2a8>] (pci_device_shutdown) from [<805cfa0c>] (device_shutdown+0x124/0x174)
      	[<805cfa0c>] (device_shutdown) from [<8033aaa4>] (kernel_restart+0xc/0x50)
      	[<8033aaa4>] (kernel_restart) from [<8033ada8>] (SyS_reboot+0x178/0x1ec)
      	[<8033ada8>] (SyS_reboot) from [<80301b80>] (ret_fast_syscall+0x0/0x34)
      
      Hence, disable wakeup/release mhi using hw_param for other hardwares.
      
      Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01060-QCAHKSWPL_SILICONZ-1
      
      Fixes: a05bd851 ("ath11k: read and write registers below unwindowed address")
      Signed-off-by: default avatarSeevalamuthu Mariappan <quic_seevalam@quicinc.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/1636702019-26142-1-git-send-email-quic_seevalam@quicinc.com
      081e2d64
    • Jakub Kicinski's avatar
      Merge tag 'regmap-no-bus-update-bits' of... · 3b1abcf1
      Jakub Kicinski authored
      Merge tag 'regmap-no-bus-update-bits' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap
      
      Mark Brown says:
      
      ===================
      regmap: Allow regmap_update_bits() to be offloaded with no bus
      
      Some hardware can do this so let's use that capability.
      ===================
      
      Link: https://lore.kernel.org/all/YZWDOidBOssP10yS@sirena.org.uk/Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3b1abcf1
  4. 18 Nov, 2021 6 commits
    • Jakub Kicinski's avatar
    • Linus Torvalds's avatar
      Merge tag 'net-5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 8d0112ac
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from bpf, mac80211.
      
        Current release - regressions:
      
         - devlink: don't throw an error if flash notification sent before
           devlink visible
      
         - page_pool: Revert "page_pool: disable dma mapping support...",
           turns out there are active arches who need it
      
        Current release - new code bugs:
      
         - amt: cancel delayed_work synchronously in amt_fini()
      
        Previous releases - regressions:
      
         - xsk: fix crash on double free in buffer pool
      
         - bpf: fix inner map state pruning regression causing program
           rejections
      
         - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue,
           preventing mis-selecting the best effort queue
      
         - mac80211: do not access the IV when it was stripped
      
         - mac80211: fix radiotap header generation, off-by-one
      
         - nl80211: fix getting radio statistics in survey dump
      
         - e100: fix device suspend/resume
      
        Previous releases - always broken:
      
         - tcp: fix uninitialized access in skb frags array for Rx 0cp
      
         - bpf: fix toctou on read-only map's constant scalar tracking
      
         - bpf: forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing
           progs
      
         - tipc: only accept encrypted MSG_CRYPTO msgs
      
         - smc: transfer remaining wait queue entries during fallback, fix
           missing wake ups
      
         - udp: validate checksum in udp_read_sock() (when sockmap is used)
      
         - sched: act_mirred: drop dst for the direction from egress to
           ingress
      
         - virtio_net_hdr_to_skb: count transport header in UFO, prevent
           allowing bad skbs into the stack
      
         - nfc: reorder the logic in nfc_{un,}register_device, fix unregister
      
         - ipsec: check return value of ipv6_skip_exthdr
      
         - usb: r8152: add MAC passthrough support for more Lenovo Docks"
      
      * tag 'net-5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (96 commits)
        ptp: ocp: Fix a couple NULL vs IS_ERR() checks
        net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock()
        net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound
        ipv6: check return value of ipv6_skip_exthdr
        e100: fix device suspend/resume
        devlink: Don't throw an error if flash notification sent before devlink visible
        page_pool: Revert "page_pool: disable dma mapping support..."
        ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in hns_dsaf_ge_srst_by_port()
        octeontx2-af: debugfs: don't corrupt user memory
        NFC: add NCI_UNREG flag to eliminate the race
        NFC: reorder the logic in nfc_{un,}register_device
        NFC: reorganize the functions in nci_request
        tipc: check for null after calling kmemdup
        i40e: Fix display error code in dmesg
        i40e: Fix creation of first queue by omitting it if is not power of two
        i40e: Fix warning message and call stack during rmmod i40e driver
        i40e: Fix ping is lost after configuring ADq on VF
        i40e: Fix changing previously set num_queue_pairs for PFs
        i40e: Fix NULL ptr dereference on VSI filter sync
        i40e: Fix correct max_pkt_size on VF RX queue
        ...
      8d0112ac
    • Linus Torvalds's avatar
      Merge tag 'for-5.16-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 6fdf8864
      Linus Torvalds authored
      Pull btrfs fixes from David Sterba:
       "Several xes and one old ioctl deprecation. Namely there's fix for
        crashes/warnings with lzo compression that was suspected to be caused
        by first pull merge resolution, but it was a different bug.
      
        Summary:
      
         - regression fix for a crash in lzo due to missing boundary checks of
           the page array
      
         - fix crashes on ARM64 due to missing barriers when synchronizing
           status bits between work queues
      
         - silence lockdep when reading chunk tree during mount
      
         - fix false positive warning in integrity checker on devices with
           disabled write caching
      
         - fix signedness of bitfields in scrub
      
         - start deprecation of balance v1 ioctl"
      
      * tag 'for-5.16-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: deprecate BTRFS_IOC_BALANCE ioctl
        btrfs: make 1-bit bit-fields of scrub_page unsigned int
        btrfs: check-integrity: fix a warning on write caching disabled disk
        btrfs: silence lockdep when reading chunk tree during mount
        btrfs: fix memory ordering between normal and ordered work functions
        btrfs: fix a out-of-bound access in copy_compressed_data_to_page()
      6fdf8864
    • Linus Torvalds's avatar
      Merge tag 'fs_for_v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · db850a9b
      Linus Torvalds authored
      Pull UDF fix from Jan Kara:
       "A fix for a long-standing UDF bug where we were not properly
        validating directory position inside readdir"
      
      * tag 'fs_for_v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        udf: Fix crash after seekdir
      db850a9b
    • Linus Torvalds's avatar
      Merge tag 'fs.idmapped.v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · 7cf7eed1
      Linus Torvalds authored
      Pull setattr idmapping fix from Christian Brauner:
       "This contains a simple fix for setattr. When determining the validity
        of the attributes the ia_{g,u}id fields contain the value that will be
        written to inode->i_{g,u}id. When the {g,u}id attribute of the file
        isn't altered and the caller's fs{g,u}id matches the current {g,u}id
        attribute the attribute change is allowed.
      
        The value in ia_{g,u}id does already account for idmapped mounts and
        will have taken the relevant idmapping into account. So in order to
        verify that the {g,u}id attribute isn't changed we simple need to
        compare the ia_{g,u}id value against the inode's i_{g,u}id value.
      
        This only has any meaning for idmapped mounts as idmapping helpers are
        idempotent without them. And for idmapped mounts this really only has
        a meaning when circular idmappings are used, i.e. mappings where e.g.
        id 1000 is mapped to id 1001 and id 1001 is mapped to id 1000. Such
        ciruclar mappings can e.g. be useful when sharing the same home
        directory between multiple users at the same time.
      
        Before this patch we could end up denying legitimate attribute changes
        and allowing invalid attribute changes when circular mappings are
        used. To even get into this situation the caller must've been
        privileged both to create that mapping and to create that idmapped
        mount.
      
        This hasn't been seen in the wild anywhere but came up when expanding
        the fstest suite during work on a series of hardening patches. All
        idmapped fstests pass without any regressions and we're adding new
        tests to verify the behavior of circular mappings.
      
        The new tests can be found at [1]"
      
      Link: https://lore.kernel.org/linux-fsdevel/20211109145713.1868404-2-brauner@kernel.org [1]
      
      * tag 'fs.idmapped.v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
        fs: handle circular mappings correctly
      7cf7eed1
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/parisc-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · a6a6d227
      Linus Torvalds authored
      Pull parisc fixes from Helge Deller:
       "parisc bug and warning fixes and wire up futex_waitv.
      
        Fix some warnings which showed up with allmodconfig builds, a revert
        of a change to the sigreturn trampoline which broke signal handling,
        wire up futex_waitv and add CONFIG_PRINTK_TIME=y to 32bit defconfig"
      
      * tag 'for-5.16/parisc-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Enable CONFIG_PRINTK_TIME=y in 32bit defconfig
        Revert "parisc: Reduce sigreturn trampoline to 3 instructions"
        parisc: Wrap assembler related defines inside __ASSEMBLY__
        parisc: Wire up futex_waitv
        parisc: Include stringify.h to avoid build error in crypto/api.c
        parisc/sticon: fix reverse colors
      a6a6d227