Commit graph

1,482,976 commits

Author SHA1 Message Date
Dmitry Torokhov
ec11e18d01 HID: stadia: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:21 +02:00
Dmitry Torokhov
ce75845b69 HID: stadia: use open/close to manage workqueue lifecycle
Override input device open() and close() callbacks to enable and disable
the force-feedback workqueue item synchronously.

When the input device is opened by userspace, call hid_hw_open() and
enable_work(). When it is closed, disable_work_sync() ensures that any
pending or running work item is cancelled/flushed and no further work
items can be scheduled.

In close(), zero out magnitudes and issue a final report to turn off the
rumble motors on the physical controller before shutting down transport
I/O.

Pack strong and weak magnitudes into a single u32 integer using
WRITE_ONCE() and READ_ONCE() for atomic, lockless updates.

This allows eliminating the manual 'removed' boolean flag and spinlock
completely.

Assisted-by: Antigravity:gemini-3.6-flash
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:21 +02:00
Dmitry Torokhov
37f6ca4369 HID: gaff: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:21 +02:00
Dmitry Torokhov
f083fa975b HID: emsff: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:21 +02:00
Dmitry Torokhov
2c73259c1b HID: dragonrise: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:21 +02:00
Dmitry Torokhov
b5aeef3afa HID: bigben: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:20 +02:00
Dmitry Torokhov
5cdad13a40 HID: betop: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:20 +02:00
Dmitry Torokhov
4e5abba2d2 HID: axff: move FF initialization to .input_configured()
The driver currently initializes force-feedback in its probe() function
after calling hid_hw_start() with HID_CONNECT_DEFAULT. This is racy as
the input device is already registered and visible to userspace at that
point.

Move the FF initialization to the .input_configured() callback to ensure
the device is fully prepared before registration.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:20 +02:00
Dmitry Torokhov
225c308128 HID: add documentation and Coccinelle script for FF registration race
HID drivers that rely on the HID core to register input devices must
ensure that all private data and capabilities (like force-feedback) are
fully initialized before registration.

When hid_hw_start() is called with HID_CONNECT_HIDINPUT, the input
device is registered immediately. This is racy if the driver attempts to
augment the input device in probe() after starting the hardware.

The correct way to handle this is to use the .input_configured()
callback.

Add documentation and a Coccinelle script to detect and prevent this
anti-pattern.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:20 +02:00
Dmitry Torokhov
be978be172 HID: core: automatically initialize generic FF if no other FF is present
Some HID drivers initialize their own force-feedback support within
their .input_configured() callback. In such cases, we should skip
the generic PID force-feedback initialization to avoid conflicts and
redundant setup.

Add hid_has_ff_input() helper and use it to check for existing FF
capabilities before calling hdev->ff_init().

Since we now have a dynamic way to detect if force-feedback is needed,
the HID_CONNECT_FF flag is redundant for conflict resolution and can
be ignored in the core initialization logic. Generic PID support will
now be attempted by default for any claimed input device that doesn't
already have FF capabilities.

Assisted-by: Gemini:gemini-3.1-pro
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:46:20 +02:00
Basavaraj Natikar
b472474e28 Input: misc: Add AMD SFH tablet-mode switch driver
Report whether an AMD convertible is in laptop or tablet mode using the
operating-mode sensor provided by the Sensor Fusion Hub, and expose it
to userspace as SW_TABLET_MODE, so userspace can react to the device
being folded into tablet posture.

Cc: Helge Bahmann <hcb@chaoticmind.net>
Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:43:46 +02:00
Basavaraj Natikar
c669183ef1 HID: amd_sfh: Register tablet-mode auxiliary device
Register an auxiliary device when the operating-mode sensor is present,
so a dedicated input driver can bind to it and report the device
posture. This keeps the input handling out of the sensor transport
driver.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:43:46 +02:00
Basavaraj Natikar
f797387307 HID: amd_sfh: Add accessor to read the operating-mode sensor
Allow other drivers to query the operating mode (laptop or tablet)
reported by the Sensor Fusion Hub. This is the interface used by the
tablet-mode switch driver to report the device posture to userspace.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:43:46 +02:00
Basavaraj Natikar
c57016bcf6 HID: amd_sfh: Serialize access to the shared emp2 pointer
The SFH accessors reach the device through a file-global emp2 pointer
that is published at probe and cleared on remove. amd_get_sfh_info() is
exported and called from other modules on unrelated threads, so a reader
can observe a non-NULL emp2 and then race a concurrent unbind that clears
it and frees the device.

Serialize the emp2 publish/clear and all readers under a mutex, so a
reader either sees a live device for the whole access or sees NULL.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:43:46 +02:00
Basavaraj Natikar
1a73a4e767 HID: amd_sfh: Track MP2 version explicitly
The MP2 version is currently known only implicitly, from whether an ops
pointer was stored in the PCI driver_data. Subsequent changes need to
act on the MP2 version directly, for example to read the operating-mode
register only on confirmed MP2 v2.

Track the MP2 version explicitly so that version-specific behaviour can
be gated on it, and leave it unset for generations that do not require
such handling.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:43:45 +02:00
Dan Carpenter
94579f24e2 drm/virtio: Fix a NULL vs ERR_PTR() bug in virtio_gpu_user_framebuffer_create()
Smatch complains that returning a NULL here will lead to a NULL pointer
dereference in drm_mode_addfb2().  Return an error pointer instead.

Fixes: dc5698e80c ("Add virtio gpu driver.")
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://patch.msgid.link/an1tWfHIHwtXd9SO@stanley.mountain
2026-08-14 15:43:21 +03:00
Mark Brown
0c22020e1b
spi: ma35d1-qspi: Improvements and DTR support
Miquel Raynal <miquel.raynal@bootlin.com> says:

I am in possession of an MA35D1 NuMaker board. The SPI controller has
been contributed, but:
1- it lacks a DT descriptions [1]
2- it does not work with current clock driver [2]
3- it can be improved

Link: https://lore.kernel.org/linux-arm-kernel/20260813-perso-ma35d1-upstream-dts-v1-0-bb237fd7c3c2@bootlin.com [1]
Link: https://lore.kernel.org/linux-clk/20260813-perso-ma35d1-upstream-clk-v1-1-e78e5e6172ea@bootlin.com [2]
This series is addressing #3 by:
- reusing existing helpers
- refactoring a bit the code
- adding DTR support

Link: https://patch.msgid.link/20260813-perso-ma35d1-upstream-qspi-v1-0-b217b9870eb1@bootlin.com
2026-08-14 13:36:59 +01:00
Miquel Raynal
0730bb3522
spi: ma35d1-qspi: Use the existing update helper
Read modify writes are already covered by a local helper, so use it.

No functional change.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://patch.msgid.link/20260813-perso-ma35d1-upstream-qspi-v1-5-b217b9870eb1@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-08-14 13:36:57 +01:00
Miquel Raynal
15e9362f61
spi: ma35d1-qspi: Add DTR support
The controller has DTR support, a bit must be set for it. The behaviour
is interesting though, as the speed won't improve when enabled. This is
because there seems to be an internal divisor (/2) which keeps the rate
equal when DTR is enabled. As a result, this commit also doubles the
target bus speed, which in practice does not happen. This way, there is
a real gain:

Before:
$ flash_speed /dev/mtd0 -dc10
eraseblock write speed is 1000 KiB/s
[...]
eraseblock read speed is 1199 KiB/s
[...]

After:
$ flash_speed /dev/mtd0 -dc10
eraseblock write speed is 985 KiB/s
[...]
eraseblock read speed is 1540 KiB/s
[...]

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://patch.msgid.link/20260813-perso-ma35d1-upstream-qspi-v1-4-b217b9870eb1@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-08-14 13:36:56 +01:00
Miquel Raynal
99542d244f
spi: ma35d1-qspi: Allow several command bytes
The controller is capable of sending several bytes for the command, it
does not even know this is a command. Just mimic the address steps here
to allow double byte commands, which may be needed for DTR support.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://patch.msgid.link/20260813-perso-ma35d1-upstream-qspi-v1-3-b217b9870eb1@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-08-14 13:36:55 +01:00
Miquel Raynal
b5671d865e
spi: ma35d1-qspi: Move speed setting to bus configuration
The speed setting is wrongly placed inside the "setup transfer" helper,
since the bus configuration may require the speed to be correct. Indeed,
DTR mode (not yet available) divides by 2 the bus clock when enabled. As
a result, to remain at a constant clock speed (and improve the data
rate), we must double the bus clock when enabling DTR. In order to
prepare for this change, move all the bus configuration required for
each step of the operation inside a unique helper called
nuvoton_qspi_configure_bus().

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://patch.msgid.link/20260813-perso-ma35d1-upstream-qspi-v1-2-b217b9870eb1@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-08-14 13:36:54 +01:00
Miquel Raynal
dc72e9e8cd
spi: ma35d1-qspi: Remove redundant reset operation
The bus width is always set before every operation, no need to reset it
manually at the end of each transfer.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://patch.msgid.link/20260813-perso-ma35d1-upstream-qspi-v1-1-b217b9870eb1@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-08-14 13:36:53 +01:00
Doruk Tan Ozturk
a26705bd2e HID: sony: fix UAF of ghl_poke_timer / ghl_urb at driver unbind
For GHL (Guitar Hero Live) dongles, sony_probe() arms a periodic timer:
ghl_magic_poke() (the timer callback) submits sc->ghl_urb, and the URB
completion ghl_magic_poke_cb() re-arms the timer with mod_timer().

sony_remove() drained the timer with timer_delete_sync() and then freed
the URB with usb_free_urb():

	timer_delete_sync(&sc->ghl_poke_timer);
	usb_free_urb(sc->ghl_urb);

timer_delete_sync() does not block re-arming, and while the URB is in
flight the timer is not pending, so the sync delete is a no-op. A URB
completion that runs after the delete re-arms the timer, and usb_free_urb()
only drops a reference -- it does not kill an in-flight URB. sc is
allocated with devm_kzalloc() and freed once sony_remove() returns, so the
re-armed ghl_poke_timer (embedded in sc) then fires on freed memory, a
use-after-free from timer softirq. This is a disconnect/rmmod race.

Poison the URB first, then shut the timer down, before freeing the URB.
usb_poison_urb() kills any in-flight URB and permanently rejects further
submissions, so a poke timer that is still pending cannot re-submit the
URB from ghl_magic_poke() in the window before timer_shutdown_sync() runs.
usb_kill_urb() would not suffice: it only cancels the in-flight URB and
leaves it submittable once it returns, so the pending timer could
re-submit it and put a fresh URB in flight over the freed sc.
timer_shutdown_sync() then drains any last callback and blocks re-arming.
The probe error path is unaffected: it is only reached before the timer
is armed.

Reproduced under KASAN on next-20260710 via dummy_hcd + raw-gadget
emulation of the GHL PS4 dongle (VID 0x1430 / PID 0x07bb): hid-sony binds
and arms the poke timer, the poke URB is held in flight, the driver is
unbound (freeing sc), then the URB is released. The completion re-arms the
timer on the freed sc, and the re-armed timer fires ~8 s later:

  BUG: KASAN: slab-use-after-free in ghl_magic_poke+0x98/0xb0
  Read of size 8 at addr ffff88810b02fd50 by task swapper/0/0
   ghl_magic_poke+0x98/0xb0
   call_timer_fn+0x35/0x2b0
   __run_timers+0x69c/0x9a0
   run_timer_softirq+0x173/0x2a0
  Allocated by task 169:  sony_probe
  Freed by task 338:      devres_release_group <- hid_device_remove (sony_remove)

Found by 0sec (https://0sec.ai) using automated source analysis.

Fixes: cc894ac553 ("HID: sony: support for ghlive ps3/wii u dongles")
Cc: stable@vger.kernel.org
Assisted-by: 0sec:multi-model
Signed-off-by: Doruk Tan Ozturk <doruk@0sec.ai>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2026-08-14 14:36:05 +02:00
Liang Hao
11dfeb73d1
spi: dw: Remove shadowed dws in dw_spi_setup()
The controller private data is already fetched at the start of
dw_spi_setup(). Drop the redundant inner declaration that shadows it.

Signed-off-by: Liang Hao <haohlliang@gmail.com>
Link: https://patch.msgid.link/20260814114235.31281-1-haohlliang@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-08-14 13:22:11 +01:00
Jens Axboe
642ec08c2e nvme updates for Linux 7.3
- Enable context analysis for the nvme host driver, annotating the
    subsystem's locks, along with the LIST_HEAD_GUARDED support it needs
    (Nilay, Marco)
  - Harden the tcp host and target against malformed PDUs and out of range
    SGL lengths (Yehyeong, Ibrahim, Greg)
  - Fix unserialized page_frag_cache use in nvme-tcp request setup (Dmitry)
  - Bound identify, FDP and passthrough descriptor parsing to the allocated
    buffers (Hari, Guixin)
  - Zoned namespace fixes for host and the target (Xixin, Guixin, Yao)
  - Apple controller fixes: page aligned admin queue buffers, NVMMU TCB
    setup, DMA direction and admin queue teardown (Sven, Gui-Dong)
  - Add a namespace level debugfs directory exposing reservation state, and
    ABI documentation for the host sysfs and target configfs interfaces
    (Guixin)
  - Fix cdev and namespace lifetimes (John)
  - Parallelize nvme-rdma I/O queue allocation and startup (Surabhi)
  - Fix nvmet-rdma response resource leak on queue teardown (Shin'ichiro)
  - Authentication fixes: AUTH_RECEIVE buffer and an out of bounds read in
    negotiate (Xixin, Bryam, Guixin, Eric)
  - Fix pci-epf use-after-free and CQ reference leak (Shin'ichiro, Yifei)
  - Reject passthrough of driver managed Set Features (Chao)
  - Various error path and teardown fixes across the host and target addressing
    issues with use-after-free and leaking resources
    (Guixin, Maurizio, Ewan, Zhengrong, Jiang HongHui, Myeonghun, Yang,
    Geliang, Yehyeong)
  - Various cleanups and typo fixes (Nilay, Guixin, Pan Chuang)
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE3Fbyvv+648XNRdHTPe3zGtjzRgkFAmp+OBEACgkQPe3zGtjz
 RgnuphAAx7rT3dVc46kINaqATZXkNBgQMHsDaASnZ7waSHOnuGjWnoJreaYmP+X5
 FXkfnYkQ1cL823dbQNhY+O4bxUCasWm365Lbd5lrY4DZYeNuLrk0HsC9+/+AhzdT
 3DeZuJ3bCpaG5AgoiWnkNUvYj5ichrp+aZgBxInF3ZrYAFDbSg70luexZvrh3CfV
 YXaQh3+AoqcvXOblTDiaHpujom/+dGt6WfB67gbrhXNAzrm6jswRSgN0L21KBpwW
 FhflfhxnnbJIYRkbfTw9uz6xestpQDhLYDnuvg6QPc+6ybVZsbyQdOBIRonnuKha
 dXdMQ7GMVlA3DTnmOScJx4OJMezDkfSE6GGe/6t1huFQ6Gvvn87XoQjflG5/ojdQ
 WvBdB/al4fewVB3DYaqUQiXa1AU4YMK3JckWcKdrPRT9RuZ/IgftGh1dEiwuTmTj
 de9I/J43Mvwe9wvKnmRoqqj2tWXzq1U4G0On3UiIiCsaMHWR3BaUnb+Hq7ePszcH
 m8qBNw4rKA0q36KxPP0BKeARw5+wmdH4GU3EH2btX7Zqo7tFo4dY1hHS1n1hXdX6
 9bt5YbSDHkVpnLF1sOQKT/EJaiDEUQL2EiHygwM1tmpQR2rl7u8FkVjuayrQeX3r
 4o9tBo78iqB4WKLTRF8h6VNv8qeHLFbPWFKtgnUrf/Y7q+qwDoQ=
 =4CYx
 -----END PGP SIGNATURE-----

Merge tag 'nvme-7.3-2026-08-13' of git://git.infradead.org/nvme into for-7.3/block

Pull NVMe updates from Keith:

"- Enable context analysis for the nvme host driver, annotating the
   subsystem's locks, along with the LIST_HEAD_GUARDED support it needs
   (Nilay, Marco)
 - Harden the tcp host and target against malformed PDUs and out of
   range SGL lengths (Yehyeong, Ibrahim, Greg)
 - Fix unserialized page_frag_cache use in nvme-tcp request setup
   (Dmitry)
 - Bound identify, FDP and passthrough descriptor parsing to the
   allocated buffers (Hari, Guixin)
 - Zoned namespace fixes for host and the target (Xixin, Guixin, Yao)
 - Apple controller fixes: page aligned admin queue buffers, NVMMU TCB
   setup, DMA direction and admin queue teardown (Sven, Gui-Dong)
 - Add a namespace level debugfs directory exposing reservation state,
   and ABI documentation for the host sysfs and target configfs
   interfaces (Guixin)
 - Fix cdev and namespace lifetimes (John)
 - Parallelize nvme-rdma I/O queue allocation and startup (Surabhi)
 - Fix nvmet-rdma response resource leak on queue teardown (Shin'ichiro)
 - Authentication fixes: AUTH_RECEIVE buffer and an out of bounds read
   in negotiate (Xixin, Bryam, Guixin, Eric)
 - Fix pci-epf use-after-free and CQ reference leak (Shin'ichiro, Yifei)
 - Reject passthrough of driver managed Set Features (Chao)
 - Various error path and teardown fixes across the host and target
   addressing issues with use-after-free and leaking resources (Guixin,
   Maurizio, Ewan, Zhengrong, Jiang HongHui, Myeonghun, Yang, Geliang,
   Yehyeong)
 - Various cleanups and typo fixes (Nilay, Guixin, Pan Chuang)"

* tag 'nvme-7.3-2026-08-13' of git://git.infradead.org/nvme: (81 commits)
  nvmet: fix max_qid race between configfs and controller allocation
  nvme: nvme-fc: Fix nvme_fc_create_hw_io_queues() queue deletion in error path
  nvme: ratelimit the completion-path messages driven by device data
  nvme-tcp: fix host memory disclosure on R2T for a read command
  nvme-tcp: do not accept C2HData based on blk_rq_payload_bytes() alone
  nvme-tcp: reject a read that transferred too few bytes
  nvmet: zns: reject full zone report when buffer is too small
  nvme-tcp: fix usage of page_frag_cache
  nvme: reject passthrough of driver-managed Set Features
  nvmet: fix NULL pointer dereference in nvmet_execute_identify_ns_zns()
  nvmet: pci-epf: fix use-after-free in nvmet_pci_epf_exec_iod_work()
  nvmet: pci-epf: put CQ ref on create_cq mapping failure
  nvme-apple: Drop the PRP null check chicken bit
  nvme-apple: Require page aligned buffers on the admin queue
  nvme: Add a quirk for page aligned admin queue buffers
  nvme-apple: Never set the opcode in the NVMMU TCB
  nvme-apple: Don't set a DMA direction for commands without a data transfer
  nvme-apple: Destroy the admin queue on removal
  nvmet: fix heap out-of-bounds read in nvmet_auth_negotiate()
  nvme: raise FDP placement handle cap to U8_MAX and warn on overflow
  ...
2026-08-14 06:13:26 -06:00
Aleksandr Nogikh
5ae1a690c5 ALSA: core: Fix use-after-free in snd_card_do_free()
A use-after-free was detected in snd_card_do_free() when a sound card
managed by devres is unbound while a user-space application still holds an
open file descriptor.

For managed cards, the memory is allocated using devres_alloc(), and its
release function is set to __snd_card_release(), which calls
snd_card_free(). When the device is unbound, the unbind thread calls
snd_card_free(), which drops a reference to the card's device. If the user
thread still has an open file descriptor, the reference count does not
reach zero, and the unbind thread blocks on wait_for_completion(&released).

When the user thread closes the file descriptor, it drops the final
reference, invoking the device release callback release_card_device(),
which calls snd_card_do_free(). snd_card_do_free() performs cleanup and
calls complete(card->release_completion). This wakes up the unbind thread,
which returns from snd_card_free() and __snd_card_release(). The devres
core then immediately frees the memory block containing the snd_card
structure.

Meanwhile, the user thread continues execution in snd_card_do_free() and
evaluates `if (!card->managed)`. It reads the `managed` boolean from the
snd_card structure that was just freed by the unbind thread, triggering a
KASAN use-after-free.

Fix this by caching the value of card->managed in a local variable before
calling complete(). This ensures that the card pointer is not dereferenced
after the unbind thread has been woken up and potentially freed the card.

BUG: KASAN: use-after-free in snd_card_do_free sound/core/init.c:604
[inline]
BUG: KASAN: use-after-free in release_card_device+0x1ab/0x1b0
sound/core/init.c:153
Read of size 1 at addr ffff8881912ec909 by task syz-executor130/5857

Call Trace:
 <TASK>
 dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120
 print_address_description+0x55/0x1e0 mm/kasan/report.c:378
 print_report+0x58/0x70 mm/kasan/report.c:482
 kasan_report+0x117/0x150 mm/kasan/report.c:595
 snd_card_do_free sound/core/init.c:604 [inline]
 release_card_device+0x1ab/0x1b0 sound/core/init.c:153
 device_release+0xc4/0x1f0 drivers/base/core.c:-1
 kobject_cleanup lib/kobject.c:689 [inline]
 kobject_release lib/kobject.c:720 [inline]
 kref_put include/linux/kref.h:65 [inline]
 kobject_put+0x222/0x550 lib/kobject.c:737
 snd_card_file_remove+0x331/0x390 sound/core/init.c:1125
 snd_pcm_release+0x12c/0x160 sound/core/pcm_native.c:2986
 __fput+0x418/0xa50 fs/file_table.c:512
 fput_close_sync+0x11f/0x240 fs/file_table.c:617
 __do_sys_close fs/open.c:1511 [inline]
 __se_sys_close fs/open.c:1496 [inline]
 __x64_sys_close+0x7e/0x110 fs/open.c:1496
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0x174/0x580 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
 </TASK>

Fixes: e8ad415b7a ("ALSA: core: Add managed card creation")
Assisted-by: Gemini:gemini-3.6-flash Gemini:gemini-3.1-pro-preview syzbot
Reported-by: syzbot+7061d72c26b7daebe2b4@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=7061d72c26b7daebe2b4
Link: https://syzkaller.appspot.com/ai_job?id=24752a23-f0b6-49c1-bf20-4fa89c2e7eb2
Signed-off-by: Aleksandr Nogikh <nogikh@google.com>
Link: https://patch.msgid.link/02042186-27b7-42a9-b64e-f93ce8fbe05a@mail.kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-08-14 14:13:22 +02:00
Wang Yan
525acde34d
selftests/landlock: Fix spelling error in fs_test comment
Fix typo "allowes" -> "allows" in Landlock filesystem test comment.

Signed-off-by: Wang Yan <wangyan01@kylinos.cn>
Reviewed-by: Günther Noack <gnoack@google.com>
Link: https://patch.msgid.link/20260702015823.368529-1-wangyan01@kylinos.cn
Signed-off-by: Mickaël Salaün <mic@digikod.net>
2026-08-14 12:38:29 +02:00
Günther Noack
6b88ff2b9a
landlock: Documentation wording cleanups
Documentation cleanups suggested by Alejandro Colomar,
which we have also applied in the man pages.

Link: https://lore.kernel.org/all/agW4yMK6CinJGqXt@devuan/
Suggested-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Günther Noack <gnoack3000@gmail.com>
Link: https://patch.msgid.link/20260516190112.4924-1-gnoack3000@gmail.com
Signed-off-by: Mickaël Salaün <mic@digikod.net>
2026-08-14 12:38:29 +02:00
Doehyun Baek
198c43590a
landlock: Document fs.resolve_unix audit blocker
The Landlock audit code can emit fs.resolve_unix as a filesystem blocker
for pathname UNIX socket resolution denials, but the admin guide's
blockers list did not mention it.

Add the missing blocker name and ABI version to keep the audit
documentation in sync with the emitted records.

Fixes: ae97330d1b ("landlock: Control pathname UNIX domain socket resolution by path")
Signed-off-by: Doehyun Baek <doehyunbaek@gmail.com>
Reviewed-by: Günther Noack <gnoack@google.com>
[mic: Fix subject]
Link: https://patch.msgid.link/20260625092819.1870049-1-doehyunbaek@gmail.com
Signed-off-by: Mickaël Salaün <mic@digikod.net>
2026-08-14 12:38:28 +02:00
Mickaël Salaün
07dca8ef89
landlock: Harden sock_is_scoped() against file-less sockets
sock_is_scoped() dereferences other->sk_socket->file->f_cred to read the
peer's Landlock domain when evaluating
LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, without first checking that the
peer has a backing socket and file.  hook_unix_find() performs the same
dereference for LANDLOCK_ACCESS_FS_RESOLVE_UNIX and does guard it.
Guard it here too and treat a peer with no backing file, such as a
kernel socket created by sock_create_kern(), as unscoped.

This is defensive hardening, not a fix for a reachable bug.  The
unix_stream_connect() and unix_may_send() hooks run with the peer held
under unix_state_lock() and only after the AF_UNIX core has excluded
SOCK_DEAD, and no in-tree code binds a file-less AF_UNIX socket to an
abstract address, so other->sk_socket->file is always valid at these
call sites today.

Cc: Günther Noack <gnoack@google.com>
Link: https://patch.msgid.link/20260703152750.2022878-1-mic@digikod.net
Signed-off-by: Mickaël Salaün <mic@digikod.net>
2026-08-14 12:38:26 +02:00
Will Deacon
26b77009ee Merge branch 'for-next/uapi' into for-next/core
* for-next/uapi:
  arm64: uapi: Use __u128 instead of __uint128_t in UAPI headers
  tools: linux/types.h: Add 128-bit integer types for arm64 UAPI structures
2026-08-14 10:16:13 +00:00
Will Deacon
ff505648cb Merge branch 'for-next/selftests' into for-next/core
* for-next/selftests:
  tools: Ensure tools copy of linux/filter.h exports the UAPI
  kselftest/arm64: Fix abi test compilation errors
  kselftest/arm64: Don't write to P0 in irritator on SME only systems
  kselftest/arm64: Add testcase for SECCOMP_RET_TRACE orig_x0 bypass
  kselftest/arm64: Add seccomp ptrace x0 bypass test
  kselftest/arm64: fp-ptrace: Fix checks for inactive SVE and SSVE regsets
2026-08-14 10:16:13 +00:00
Will Deacon
824cbbf2e5 Merge branch 'for-next/sdei' into for-next/core
* for-next/sdei:
  arm64: escalate smp_send_stop() to an SDEI NMI as a last resort
  drivers/firmware: add SDEI cross-CPU NMI service for arm64
  firmware: arm_sdei: add SDEI_EVENT_SIGNAL support
  firmware: arm_sdei: add sdei_is_present()
2026-08-14 10:16:12 +00:00
Will Deacon
8e10aaf503 Merge branch 'for-next/ptrace' into for-next/core
* for-next/ptrace:
  arm64: syscall: Pass 'orig_x0' as first argument to native system call
  arm64: ptrace: Keep 'orig_x0' in-sync with x0 on syscall entry
  arm64/fpsimd: ptrace: Fix inactive SVE and SSVE regsets
2026-08-14 10:16:11 +00:00
Will Deacon
de5e5f9b99 Merge branch 'for-next/perf' into for-next/core
* for-next/perf: (27 commits)
  perf: arm_pmuv3: Zero initialize hw_id branch stack field
  perf/arm-cmn: Support CMN S3 r2
  perf/arm-cmn: Plumb in new filter types
  perf/arm-cmn: Refactor event filter data
  perf/arm-cmn: Refactor event filter programming
  perf/arm-cmn: Rename filter variables for clarity
  perf/arm_cspmu: Support 64-bit programmers' model
  drivers/perf: hisi: Remove redundant dev_err()/dev_err_probe()
  perf: arm_cspmu: Remove redundant dev_err()
  perf: Remove redundant dev_err()/dev_err_probe()
  perf: arm_pmu_acpi: Get rid of the edge-triggered interrupt oddity
  perf/arm_cspmu: Make IRQ more optional
  perf/arm_cspmu: Improve sub-module error reporting
  perf/arm_cspmu: Improve APMT-based PMU naming
  ACPI/APMT: Use stable device ID
  perf/cxlpmu: Support Channel/Rank/Bank filter
  perf/cxlpmu: Add missing CXL 4.0 events
  perf/cxlpmu: Fix 64-bit write to 32-bit HDM filter register
  perf/dwc_pcie: Support narrowed time-based counter for long time monitoring
  perf/dwc_pcie: Add support for Picoheart vendor devices
  ...
2026-08-14 10:16:11 +00:00
Will Deacon
221349eab6 Merge branch 'for-next/nmi' into for-next/core
* for-next/nmi:
  arm64: entry: Avoid unnecessary local_irq_disable() on kernel exit
  irqchip/gic-v3: make the unmasking of pseudo-NMIs explicit when handling IRQs
  arm64: entry: mask DAIF before returning from C EL1 handlers
  arm64: suspend: Initialize PMR on resume
  arm64: suspend: rely on daif helpers to handle PMR
  arm64: hibernate: Restore DAIF state on error
  arm64: hibernate: mask DAIF before restoring hibernated kernel
  arm64: debug: don't mask DAIF for mdscr_write()
  arm64: ptrace: Remove INIT_PSTATE_EL2
2026-08-14 10:16:10 +00:00
Will Deacon
fd2facb974 Merge branch 'for-next/mpam' into for-next/core
* for-next/mpam:
  arm_mpam: Disable driver unbind to avoid UAF
  arm_mpam: Fix a NULL pointer dereference on unbinding after an error interrupt
  arm_mpam: Apply T241-MPAM-6 to 63-bit counters
  arm64: mpam: Add memory bandwidth usage (MBWU) documentation
  arm_mpam: resctrl: Add resctrl_arch_cntr_read() & resctrl_arch_reset_cntr()
  arm_mpam: resctrl: Add resctrl_arch_config_cntr() for ABMC use
  arm_mpam: resctrl: Pre-allocate assignable monitors
  arm_mpam: resctrl: Pick classes for use as MBM counters
2026-08-14 10:16:09 +00:00
Will Deacon
1a6b708e89 Merge branch 'for-next/mm' into for-next/core
* for-next/mm:
  arm64/efi: Avoid voluntary preemption with efi_mm installed
  arm64: mm: Unmap kernel data/bss entirely from the linear map
  arm64: mm: fix accidental linear mapping of no-map reserved memory
  arm64: pgtable: convert pte_present() from macro to static inline
  arm64: mm: Treat all devices as dma-coherent when CLIDR_EL1.LoC == 0
2026-08-14 10:16:09 +00:00
Will Deacon
130bb50546 Merge branch 'for-next/misc' into for-next/core
* for-next/misc:
  arm64: Disable KCSAN instrumentation in delay.o
  MAINTAINERS: arm64: Add Mark Rutland as an official Reviewer
  arm64: smp: Fix IPI teardown for GICv5 flow
  arm64: futex: Consolidate 'old == new' check in __lsui_cmpxchg32()
  arm64: ftrace: allow DIRECT_CALLS without CALL_OPS
  arm64: ftrace: prepare ftrace_modify_call() for use without CALL_OPS
2026-08-14 10:16:08 +00:00
Will Deacon
ba3349fc55 Merge branch 'for-next/errata' into for-next/core
* for-next/errata:
  arch: arm64: add early_param idle=<wfi|yield|nop>
  arm64: proton-pack: Restore the nospectre_bhb command-line option
  arm64: errata: work around NVIDIA Olympus device store/load ordering
  arm64: Clarify ARM64_WORKAROUND_REPEAT_TLBI semantics
2026-08-14 10:16:08 +00:00
Will Deacon
dc61684f5c Merge branch 'for-next/cpufeature' into for-next/core
* for-next/cpufeature:
  arm64: bti: Disable in-kernel BTI with recent versions of Clang
  iommu/arm-smmu-v3-sva: Use system_supports_bbml3() to detect CPU feature
  arm64: cpufeature: Detect BBML3 based on ID_AA64MMFR2_EL1.BBM
  arm64: cpufeature: Rename BBML2_NOABORT as BBML3
  arm64: sysreg: Add BBM_3
  arm64: cpufeature: Extend bbml2_noabort support list
  arm64: cputype: Add C1-Nano definitions
  arm64: cputype: Add Cortex-A520AE definitions
  arm64: cpucaps: Remove stale comment about keeping capabilities sorted
  arm64: fix cpu-feature-registers Malformed table
  arm64: Remove hidden bitfields from cpu-feature-registers.rst
  arm64: Sort registers in cpu-feature-registers.rst
  arm64: Document missing bitfields in cpu-feature-registers.rst
  arm64: Don't number registers in cpu-feature-registers.rst
2026-08-14 10:16:07 +00:00
Will Deacon
c28a6a5bdd Merge branch 'for-next/coco' into for-next/core
* for-next/coco:
  arm64: RSI: fix field-spanning write warning in attestation token init
  virt: arm-cca-guest: Drop unused assignment of platform_device_id driver data
  arm64/coco: Add pKVM as a CC platform
  arm64/mm: Simplify SWIOTLB setup in arch_mm_preinit()
  virt: arm-cca-guest: use migrate_disable() for attestation token requests
2026-08-14 10:16:06 +00:00
Will Deacon
7561bdcb09 Merge branch 'for-next/acpi' into for-next/core
* for-next/acpi:
  arm64: topology: read CPPC FFH feedback counters in one operation
  ACPI: CPPC: add paired FFH feedback-counter read hook
2026-08-14 10:16:06 +00:00
Zhang Heng
e5b03754d2 ALSA: hda/realtek: Drop duplicate quirk for Lenovo 0x17aa:0x38df
The PCI SSID 17aa:38df is listed twice in alc269_fixup_tbl[], both mapping
to the same fixup ALC287_FIXUP_TAS2781_I2C:

  SND_PCI_QUIRK(0x17aa, 0x38df, "Yoga Y990 Intel YC Dual", ALC287_FIXUP_TAS2781_I2C),
  ...
  SND_PCI_QUIRK(0x17aa, 0x38df, "Y990 YG DUAL", ALC287_FIXUP_TAS2781_I2C),

The HDA quirk lookup (hda_quirk_lookup_id()) returns the first matching
entry, so the second occurrence never takes effect; it is dead code.

Drop the second entry.  The retained "Yoga Y990 Intel YC Dual" label also
follows the naming of the neighbouring 0x38e0 entry ("Yoga Y990 Intel VECO
Dual").

Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
Link: https://patch.msgid.link/20260814084101.504471-1-zhangheng@kylinos.cn
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-08-14 10:43:40 +02:00
Dave Airlie
65b92bc671 Couple drm-ras fixes, a probe failure clean-up fix, a GT freq
boundaries fixes for BMG/CRI and a Media engines/slice fix.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEbSBwaO7dZQkcLOKj+mJfZA7rE8oFAmp+DPcACgkQ+mJfZA7r
 E8qppwgAnKGVQw31ZrSBltPdwgT5gWSBTbpKQsYEezUr7cTtuwW5qgHASCVet5IA
 peLRqTM8uby521QZ69WjdcuVg8ZgogU/+LyXKwYyGWXyUG3FpWUd6RLodw8Yf8gu
 xym/eFQz8SPF9LFlukEMK9axqaa1gbAZ6Fd9CKlaFCXS6M2BH+AK79jJn8cLvZXD
 RWbkB1P5+kuLejju/HG52YLNH00RQ4ReKPZGM6i+kpwr0k+3GdS3DrcRAFlnl2H8
 vx2MBbcZgprXlOw9XNrf454B9U1ytsJ0C4Usr+vnJ582Rv8gSksoUiKjDPQqY07U
 XlqR/H1xbYKVnKebGRNIS8QQxRm5eQ==
 =Ib/h
 -----END PGP SIGNATURE-----

Merge tag 'drm-xe-next-fixes-2026-08-13' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next

Couple drm-ras fixes, a probe failure clean-up fix, a GT freq
boundaries fixes for BMG/CRI and a Media engines/slice fix.

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patch.msgid.link/an4NGzsYN9MOTFII@intel.com
2026-08-14 18:30:33 +10:00
Dave Airlie
f9d4cefe41 A single patch to remove a .orig file introduced by accident.
-----BEGIN PGP SIGNATURE-----
 
 iJUEABMJAB0WIQTkHFbLp4ejekA/qfgnX84Zoj2+dgUCan2AtAAKCRAnX84Zoj2+
 dgGFAX4/VkWYtdGVT8wPelEz1b5QhmysriArkoBARAzCODKW3R6xrZUMkn3d5GM2
 F8LQg4gBgJ9r/kInV9hKVddUPo/qC2rufWEnCNP7ZTI1+S5Y9NRBPTtKlO94U6n6
 EKm7xLE9YQ==
 =bqVk
 -----END PGP SIGNATURE-----

Merge tag 'drm-misc-next-fixes-2026-08-13' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next

A single patch to remove a .orig file introduced by accident.

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Maxime Ripard <mripard@redhat.com>
Link: https://patch.msgid.link/20260813-shrewd-ocelot-of-research-aa3caa@houat
2026-08-14 18:24:59 +10:00
Xianwei Zhao
fa410c3165 pinctrl: meson: sync some modify from A4
Set the drive strength before enabling the output to avoid enabling
the output with an unintended drive strength.

Also return the actual output enable state from
PIN_CONFIG_OUTPUT_ENABLE instead of always reporting it as enabled.

Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-08-14 09:37:21 +02:00
Xianwei Zhao
44f10eb888 pinctrl: meson: a4: Add input enable pin configuration
Add support for PIN_CONFIG_INPUT_ENABLE in the Amlogic A4 pinctrl
driver.

Use the existing output enable control to configure the input enable
state, since the hardware uses the same control with inverse semantics.

Also update PIN_CONFIG_OUTPUT_ENABLE handling to return the actual
output enable state instead of treating any non-zero value as enabled.

Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-08-14 09:31:45 +02:00
Yu-Chun Lin
f080cfd001 pinctrl: realtek: rtd1625: remove unused group name spdif_sel
Remove the undefined "spdif_sel" from rtd1625_iso_spdif_in_coaxial_groups
to clean up the code.

Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-08-14 09:26:52 +02:00
Yu-Chun Lin
287ff7feb1 pinctrl: realtek: rtd1625: fix base_bit for VE4 GPIO 13
Fix a typo in the base_bit of RTD1625_VE4_GPIO_13.
It was incorrectly set to 18, which overlaps with GPIO 16.

Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-08-14 09:26:52 +02:00