]> git.ipfire.org Git - thirdparty/linux.git/commit
irqchip/riscv-imsic: Revert "Remove redundant irq_data lookups"
authorLuo Haiyang <luo.haiyang@zte.com.cn>
Tue, 13 Jan 2026 03:19:30 +0000 (11:19 +0800)
committerThomas Gleixner <tglx@kernel.org>
Tue, 13 Jan 2026 08:51:46 +0000 (09:51 +0100)
commitf2edf797dab185cce439e5bc5185fe20dd536300
treedf2856ffa09fc274278816e825c07f6a50f3b87d
parent0f61b1860cc3f52aef9036d7235ed1f017632193
irqchip/riscv-imsic: Revert "Remove redundant irq_data lookups"

Commit c475c0b71314("irqchip/riscv-imsic: Remove redundant irq_data
lookups") leads to a NULL pointer deference in imsic_msi_update_msg():

 virtio_blk virtio1: 8/0/0 default/read/poll queues
 Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
 Current kworker/u32:2 pgtable: 4K pagesize, 48-bit VAs, pgdp=0x0000000081c33000
 [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
 CPU: 5 UID: 0 PID: 75 Comm: kworker/u32:2 Not tainted 6.19.0-rc4-next-20260109 #1 NONE
 epc : 0x0
  ra : imsic_irq_set_affinity+0x110/0x130

The irq_data argument of imsic_irq_set_affinity() is associated with the
imsic domain and not with the top-level MSI domain. As a consequence the
code dereferences the wrong interrupt chip, which has the
irq_write_msi_msg() callback not populated.

Signed-off-by: Luo Haiyang <luo.haiyang@zte.com.cn>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260113111930821RrC26avITHWSFCN0bYbgI@zte.com.cn
drivers/irqchip/irq-riscv-imsic-platform.c