mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
7ed2632ec7
The QXL driver doesn't use any device for DMA mappings or allocations so
dev_to_node() will panic inside ttm_device_init() on NUMA systems:
general protection fault, probably for non-canonical address 0xdffffc000000007a: 0000 [#1] PREEMPT SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x00000000000003d0-0x00000000000003d7]
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.7.0+ #9
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
RIP: 0010:ttm_device_init+0x10e/0x340
Call Trace:
qxl_ttm_init+0xaa/0x310
qxl_device_init+0x1071/0x2000
qxl_pci_probe+0x167/0x3f0
local_pci_probe+0xe1/0x1b0
pci_device_probe+0x29d/0x790
really_probe+0x251/0x910
__driver_probe_device+0x1ea/0x390
driver_probe_device+0x4e/0x2e0
__driver_attach+0x1e3/0x600
bus_for_each_dev+0x12d/0x1c0
bus_add_driver+0x25a/0x590
driver_register+0x15c/0x4b0
qxl_pci_driver_init+0x67/0x80
do_one_initcall+0xf5/0x5d0
kernel_init_freeable+0x637/0xb10
kernel_init+0x1c/0x2e0
ret_from_fork+0x48/0x80
ret_from_fork_asm+0x1b/0x30
RIP: 0010:ttm_device_init+0x10e/0x340
Fall back to NUMA_NO_NODE if there is no device for DMA.
Found by Linux Verification Center (linuxtesting.org).
Fixes:
|
||
---|---|---|
.. | ||
amd | ||
arm | ||
armada | ||
aspeed | ||
ast | ||
atmel-hlcdc | ||
bridge | ||
ci | ||
display | ||
etnaviv | ||
exynos | ||
fsl-dcu | ||
gma500 | ||
gud | ||
hisilicon | ||
hyperv | ||
i2c | ||
i915 | ||
imagination | ||
imx | ||
ingenic | ||
kmb | ||
lib | ||
lima | ||
logicvc | ||
loongson | ||
mcde | ||
mediatek | ||
meson | ||
mgag200 | ||
msm | ||
mxsfb | ||
nouveau | ||
omapdrm | ||
panel | ||
panfrost | ||
pl111 | ||
qxl | ||
radeon | ||
renesas | ||
rockchip | ||
scheduler | ||
solomon | ||
sprd | ||
sti | ||
stm | ||
sun4i | ||
tegra | ||
tests | ||
tidss | ||
tilcdc | ||
tiny | ||
ttm | ||
tve200 | ||
udl | ||
v3d | ||
vboxvideo | ||
vc4 | ||
vgem | ||
virtio | ||
vkms | ||
vmwgfx | ||
xe | ||
xen | ||
xlnx | ||
drm_aperture.c | ||
drm_atomic.c | ||
drm_atomic_helper.c | ||
drm_atomic_state_helper.c | ||
drm_atomic_uapi.c | ||
drm_auth.c | ||
drm_blend.c | ||
drm_bridge.c | ||
drm_bridge_connector.c | ||
drm_buddy.c | ||
drm_cache.c | ||
drm_client.c | ||
drm_client_modeset.c | ||
drm_color_mgmt.c | ||
drm_connector.c | ||
drm_crtc.c | ||
drm_crtc_helper.c | ||
drm_crtc_helper_internal.h | ||
drm_crtc_internal.h | ||
drm_damage_helper.c | ||
drm_debugfs.c | ||
drm_debugfs_crc.c | ||
drm_displayid.c | ||
drm_drv.c | ||
drm_dumb_buffers.c | ||
drm_edid.c | ||
drm_edid_load.c | ||
drm_eld.c | ||
drm_encoder.c | ||
drm_encoder_slave.c | ||
drm_exec.c | ||
drm_fb_dma_helper.c | ||
drm_fb_helper.c | ||
drm_fbdev_dma.c | ||
drm_fbdev_generic.c | ||
drm_file.c | ||
drm_flip_work.c | ||
drm_format_helper.c | ||
drm_fourcc.c | ||
drm_framebuffer.c | ||
drm_gem.c | ||
drm_gem_atomic_helper.c | ||
drm_gem_dma_helper.c | ||
drm_gem_framebuffer_helper.c | ||
drm_gem_shmem_helper.c | ||
drm_gem_ttm_helper.c | ||
drm_gem_vram_helper.c | ||
drm_gpuvm.c | ||
drm_internal.h | ||
drm_ioc32.c | ||
drm_ioctl.c | ||
drm_kms_helper_common.c | ||
drm_lease.c | ||
drm_managed.c | ||
drm_mipi_dbi.c | ||
drm_mipi_dsi.c | ||
drm_mm.c | ||
drm_mode_config.c | ||
drm_mode_object.c | ||
drm_modes.c | ||
drm_modeset_helper.c | ||
drm_modeset_lock.c | ||
drm_of.c | ||
drm_panel.c | ||
drm_panel_orientation_quirks.c | ||
drm_pci.c | ||
drm_plane.c | ||
drm_plane_helper.c | ||
drm_prime.c | ||
drm_print.c | ||
drm_privacy_screen.c | ||
drm_privacy_screen_x86.c | ||
drm_probe_helper.c | ||
drm_property.c | ||
drm_rect.c | ||
drm_self_refresh_helper.c | ||
drm_simple_kms_helper.c | ||
drm_suballoc.c | ||
drm_syncobj.c | ||
drm_sysfs.c | ||
drm_trace.h | ||
drm_trace_points.c | ||
drm_vblank.c | ||
drm_vblank_work.c | ||
drm_vma_manager.c | ||
drm_writeback.c | ||
Kconfig | ||
Makefile |