1. 15 Nov, 2022 7 commits
    • Benjamin Tissoires's avatar
      HID: bpf: introduce hid_hw_request() · 91a7f802
      Benjamin Tissoires authored
      This function can not be called under IRQ, thus it is only available
      while in SEC("syscall").
      For consistency, this function requires a HID-BPF context to work with,
      and so we also provide a helper to create one based on the HID unique
      ID.
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      
      --
      
      changes in v12:
      - variable dereferenced before check 'ctx'
        |Reported-by: kernel test robot <lkp@intel.com>
        |Reported-by: Dan Carpenter <error27@gmail.com>
      
      no changes in v11
      
      no changes in v10
      
      changes in v9:
      - fixed kfunc declaration aaccording to latest upstream changes
      
      no changes in v8
      
      changes in v7:
      - hid_bpf_allocate_context: remove unused variable
      - ensures buf is not NULL
      
      changes in v6:
      - rename parameter size into buf__sz to teach the verifier about
        the actual buffer size used by the call
      - remove the allocated data in the user created context, it's not used
      
      new-ish in v5
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      91a7f802
    • Benjamin Tissoires's avatar
      selftests/hid: add test to change the report size · 0330f725
      Benjamin Tissoires authored
      Use a different report with a bigger size and ensures we are doing
      things properly.
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      0330f725
    • Benjamin Tissoires's avatar
      HID: bpf: allocate data memory for device_event BPF programs · 658ee5a6
      Benjamin Tissoires authored
      We need to also be able to change the size of the report.
      Reducing it is easy, because we already have the incoming buffer that is
      big enough, but extending it is harder.
      
      Pre-allocate a buffer that is big enough to handle all reports of the
      device, and use that as the primary buffer for BPF programs.
      To be able to change the size of the buffer, we change the device_event
      API and request it to return the size of the buffer.
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      658ee5a6
    • Benjamin Tissoires's avatar
      HID: bpf jmp table: simplify the logic of cleaning up programs · 0baef373
      Benjamin Tissoires authored
      Kind of a hack, but works for now:
      
      Instead of listening for any close of eBPF program, we now
      decrement the refcount when we insert it in our internal
      map of fd progs.
      
      This is safe to do because:
      - we listen to any call of destructor of programs
      - when a program is being destroyed, we disable it by removing
        it from any RCU list used by any HID device (so it will never
        be called)
      - we then trigger a job to cleanup the prog fd map, but we overwrite
        the removal of the elements to not do anything on the programs, just
        remove the allocated space
      
      This is better than previously because we can remove the map of known
      programs and their usage count. We now rely on the refcount of
      bpf, which has greater chances of being accurate.
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      0baef373
    • Benjamin Tissoires's avatar
      selftests: add tests for the HID-bpf initial implementation · dbb60c8a
      Benjamin Tissoires authored
      The tests are pretty basic:
      - create a virtual uhid device that no userspace will like (to not mess
        up the running system)
      - attach a BPF prog to it
      - open the matching hidraw node
      - inject one event and check:
        * that the BPF program can do something on the event stream
        * can modify the event stream
      - add another test where we attach/detach BPF programs to see if we get
        errors
      
      Note: the Makefile is extracted from selftests/bpf so we can rebuild
      the libbpf and bpftool components from the current kernel tree without
      relying on system installed components.
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      dbb60c8a
    • Benjamin Tissoires's avatar
      HID: initial BPF implementation · f5c27da4
      Benjamin Tissoires authored
      Declare an entry point that can use fmod_ret BPF programs, and
      also an API to access and change the incoming data.
      
      A simpler implementation would consist in just calling
      hid_bpf_device_event() for any incoming event and let users deal
      with the fact that they will be called for any event of any device.
      
      The goal of HID-BPF is to partially replace drivers, so this situation
      can be problematic because we might have programs which will step on
      each other toes.
      
      For that, we add a new API hid_bpf_attach_prog() that can be called
      from a syscall and we manually deal with a jump table in hid-bpf.
      
      Whenever we add a program to the jump table (in other words, when we
      attach a program to a HID device), we keep the number of time we added
      this program in the jump table so we can release it whenever there are
      no other users.
      
      HID devices have an RCU protected list of available programs in the
      jump table, and those programs are called one after the other thanks
      to bpf_tail_call().
      
      To achieve the detection of users losing their fds on the programs we
      attached, we add 2 tracing facilities on bpf_prog_release() (for when
      a fd is closed) and bpf_free_inode() (for when a pinned program gets
      unpinned).
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      f5c27da4
    • Benjamin Tissoires's avatar
      HID: Kconfig: split HID support and hid-core compilation · 25621bcc
      Benjamin Tissoires authored
      Currently, we step into drivers/hid/ based on the value of
      CONFIG_HID.
      
      However, that value is a tristate, meaning that it can be a module.
      
      As per the documentation, if we jump into the subdirectory by
      following an obj-m, we can not compile anything inside that
      subdirectory in vmlinux. It is considered as a bug.
      
      To make things more friendly to HID-BPF, split HID (the HID core
      parameter) from HID_SUPPORT (do we want any kind of HID support in the
      system?), and make this new config a boolean.
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      25621bcc
  2. 11 Nov, 2022 8 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus-2022111101' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid · 9c730fe1
      Linus Torvalds authored
      Pull HID fixes from Jiri Kosina:
      
       - fix for memory leak (on error path) in Hyper-V driver (Yang
         Yingliang)
      
       - regression fix for handling 3rd barrel switch emulation in Wacom
         driver (Jason Gerecke)
      
      * tag 'for-linus-2022111101' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid:
        HID: wacom: Fix logic used for 3rd barrel switch emulation
        HID: hyperv: fix possible memory leak in mousevsc_probe()
        HID: asus: Remove unused variable in asus_report_tool_width()
      9c730fe1
    • Linus Torvalds's avatar
      Merge tag 'sound-6.1-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 64b4aef1
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Things look calming down, as this contains only a few small fixes:
      
         - Fix for a corner-case bug with SG-buffer page allocation helper
      
         - A regression fix for Roland USB-audio device probe
      
         - A potential memory leak fix at the error path
      
         - Handful quirks and device-specific fixes for HD- and USB-audio"
      
      * tag 'sound-6.1-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda: fix potential memleak in 'add_widget_node'
        ALSA: memalloc: Don't fall back for SG-buffer with IOMMU
        ALSA: usb-audio: add quirk to fix Hamedal C20 disconnect issue
        ALSA: hda/realtek: Add Positivo C6300 model quirk
        ALSA: usb-audio: Add DSD support for Accuphase DAC-60
        ALSA: usb-audio: Add quirk entry for M-Audio Micro
        ALSA: hda/hdmi - enable runtime pm for more AMD display audio
        ALSA: usb-audio: Remove redundant workaround for Roland quirk
        ALSA: usb-audio: Yet more regression for for the delayed card registration
        ALSA: hda/ca0132: add quirk for EVGA Z390 DARK
        ALSA: hda: clarify comments on SCF changes
        ALSA: arm: pxa: pxa2xx-ac97-lib: fix return value check of platform_get_irq()
        ALSA: hda/realtek: Add quirk for ASUS Zenbook using CS35L41
      64b4aef1
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2022-11-11' of git://anongit.freedesktop.org/drm/drm · fd979ca6
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Weekly pull request for graphics, mostly amdgpu and i915, with a
        couple of fixes for vc4 and panfrost, panel quirks and a kconfig
        change for rcar-du. Nothing seems to be too strange at this stage.
      
        amdgpu:
         - Fix s/r in amdgpu_vram_mgr_new
         - SMU 13.0.4 update
         - GPUVM TLB race fix
         - DCN 3.1.4 fixes
         - DCN 3.2.x fixes
         - Vega10 fan fix
         - BACO fix for Beige Goby board
         - PSR fix
         - GPU VM PT locking fixes
      
        amdkfd:
         - CRIU fixes
      
        vc4:
         - HDMI fixes to vc4.
      
        panfrost:
         - Make panfrost's uapi header compile with C++.
         - Handle 1 gb boundary correctly in panfrost mmu code.
      
        panel:
         - Add rotation quirks for 2 panels.
      
        rcar-du:
         - DSI Kconfig fix
      
        i915:
         - Fix sg_table handling in map_dma_buf
         - Send PSR update also on invalidate
         - Do not set cache_dirty for DGFX
         - Restore userptr probe_range behaviour"
      
      * tag 'drm-fixes-2022-11-11' of git://anongit.freedesktop.org/drm/drm: (29 commits)
        drm/amd/display: only fill dirty rectangles when PSR is enabled
        drm/amdgpu: disable BACO on special BEIGE_GOBY card
        drm/amdgpu: Drop eviction lock when allocating PT BO
        drm/amdgpu: Unlock bo_list_mutex after error handling
        Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""
        drm/amd/display: Enforce minimum prefetch time for low memclk on DCN32
        drm/amd/display: Fix gpio port mapping issue
        drm/amd/display: Fix reg timeout in enc314_enable_fifo
        drm/amd/display: Fix FCLK deviation and tool compile issues
        drm/amd/display: Zeromem mypipe heap struct before using it
        drm/amd/display: Update SR watermarks for DCN314
        drm/amdgpu: workaround for TLB seq race
        drm/amdkfd: Fix error handling in criu_checkpoint
        drm/amdkfd: Fix error handling in kfd_criu_restore_events
        drm/amd/pm: update SMU IP v13.0.4 msg interface header
        drm: rcar-du: Fix Kconfig dependency between RCAR_DU and RCAR_MIPI_DSI
        drm/panfrost: Split io-pgtable requests properly
        drm/amdgpu: Fix the lpfn checking condition in drm buddy
        drm: panel-orientation-quirks: Add quirk for Acer Switch V 10 (SW5-017)
        drm: panel-orientation-quirks: Add quirk for Nanote UMPC-01
        ...
      fd979ca6
    • Linus Torvalds's avatar
      Merge tag 'net-6.1-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 4bbf3422
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from netfilter, wifi, can and bpf.
      
        Current release - new code bugs:
      
         - can: af_can: can_exit(): add missing dev_remove_pack() of
           canxl_packet
      
        Previous releases - regressions:
      
         - bpf, sockmap: fix the sk->sk_forward_alloc warning
      
         - wifi: mac80211: fix general-protection-fault in
           ieee80211_subif_start_xmit()
      
         - can: af_can: fix NULL pointer dereference in can_rx_register()
      
         - can: dev: fix skb drop check, avoid o-o-b access
      
         - nfnetlink: fix potential dead lock in nfnetlink_rcv_msg()
      
        Previous releases - always broken:
      
         - bpf: fix wrong reg type conversion in release_reference()
      
         - gso: fix panic on frag_list with mixed head alloc types
      
         - wifi: brcmfmac: fix buffer overflow in brcmf_fweh_event_worker()
      
         - wifi: mac80211: set TWT Information Frame Disabled bit as 1
      
         - eth: macsec offload related fixes, make sure to clear the keys from
           memory
      
         - tun: fix memory leaks in the use of napi_get_frags
      
         - tun: call napi_schedule_prep() to ensure we own a napi
      
         - tcp: prohibit TCP_REPAIR_OPTIONS if data was already sent
      
         - ipv6: addrlabel: fix infoleak when sending struct ifaddrlblmsg to
           network
      
         - tipc: fix a msg->req tlv length check
      
         - sctp: clear out_curr if all frag chunks of current msg are pruned,
           avoid list corruption
      
         - mctp: fix an error handling path in mctp_init(), avoid leaks"
      
      * tag 'net-6.1-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (101 commits)
        eth: sp7021: drop free_netdev() from spl2sw_init_netdev()
        MAINTAINERS: Move Vivien to CREDITS
        net: macvlan: fix memory leaks of macvlan_common_newlink
        ethernet: tundra: free irq when alloc ring failed in tsi108_open()
        net: mv643xx_eth: disable napi when init rxq or txq failed in mv643xx_eth_open()
        ethernet: s2io: disable napi when start nic failed in s2io_card_up()
        net: atlantic: macsec: clear encryption keys from the stack
        net: phy: mscc: macsec: clear encryption keys when freeing a flow
        stmmac: dwmac-loongson: fix missing of_node_put() while module exiting
        stmmac: dwmac-loongson: fix missing pci_disable_device() in loongson_dwmac_probe()
        stmmac: dwmac-loongson: fix missing pci_disable_msi() while module exiting
        cxgb4vf: shut down the adapter when t4vf_update_port_info() failed in cxgb4vf_open()
        mctp: Fix an error handling path in mctp_init()
        stmmac: intel: Update PCH PTP clock rate from 200MHz to 204.8MHz
        net: cxgb3_main: disable napi when bind qsets failed in cxgb_up()
        net: cpsw: disable napi in cpsw_ndo_open()
        iavf: Fix VF driver counting VLAN 0 filters
        ice: Fix spurious interrupt during removal of trusted VF
        net/mlx5e: TC, Fix slab-out-of-bounds in parse_tc_actions
        net/mlx5e: E-Switch, Fix comparing termination table instance
        ...
      4bbf3422
    • Jakub Kicinski's avatar
      Merge tag 'mlx5-fixes-2022-11-09' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · abd5ac18
      Jakub Kicinski authored
      Saeed Mahameed says:
      
      ====================
      mlx5 fixes 2022-11-02
      
      This series provides bug fixes to mlx5 driver.
      
      * tag 'mlx5-fixes-2022-11-09' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux:
        net/mlx5e: TC, Fix slab-out-of-bounds in parse_tc_actions
        net/mlx5e: E-Switch, Fix comparing termination table instance
        net/mlx5e: TC, Fix wrong rejection of packet-per-second policing
        net/mlx5e: Fix tc acts array not to be dependent on enum order
        net/mlx5e: Fix usage of DMA sync API
        net/mlx5e: Add missing sanity checks for max TX WQE size
        net/mlx5: fw_reset: Don't try to load device in case PCI isn't working
        net/mlx5: E-switch, Set to legacy mode if failed to change switchdev mode
        net/mlx5: Allow async trigger completion execution on single CPU systems
        net/mlx5: Bridge, verify LAG state when adding bond to bridge
      ====================
      
      Link: https://lore.kernel.org/r/20221109184050.108379-1-saeed@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      abd5ac18
    • Jakub Kicinski's avatar
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue · b3bbeba0
      Jakub Kicinski authored
      Tony Nguyen says:
      
      ====================
      Intel Wired LAN Driver Updates 2022-11-09 (ice, iavf)
      
      This series contains updates to ice and iavf drivers.
      
      Norbert stops disabling VF queues that are not enabled for ice driver.
      
      Michal stops accounting of VLAN 0 filter to match expectations of PF
      driver for iavf.
      
      * '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
        iavf: Fix VF driver counting VLAN 0 filters
        ice: Fix spurious interrupt during removal of trusted VF
      ====================
      
      Link: https://lore.kernel.org/r/20221110003744.201414-1-anthony.l.nguyen@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b3bbeba0
    • Wei Yongjun's avatar
      eth: sp7021: drop free_netdev() from spl2sw_init_netdev() · de91b319
      Wei Yongjun authored
      It's not necessary to free netdev allocated with devm_alloc_etherdev()
      and using free_netdev() leads to double free.
      
      Fixes: fd3040b9 ("net: ethernet: Add driver for Sunplus SP7021")
      Signed-off-by: default avatarWei Yongjun <weiyongjun1@huawei.com>
      Link: https://lore.kernel.org/r/20221109150116.2988194-1-weiyongjun@huaweicloud.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      de91b319
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2022-11-10' of... · b7ffd9d9
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2022-11-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Fix sg_table handling in map_dma_buf (Matthew Auld)
      - Send PSR update also on invalidate (Jouni Högander)
      - Do not set cache_dirty for DGFX (Niranjana Vishwanathapura)
      - Restore userptr probe_range behaviour (Matthew Auld)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/Y2zCy5q85qE9W0J8@tursulin-desk
      b7ffd9d9
  3. 10 Nov, 2022 25 commits