On Fri, 2025-03-21 at 09:56 +0100, Philipp Stanner
wrote:> I see two small memory leaks on a Fedora 41 desktop with a custom
> built
> kernel @ commit:
>
> 27d4815149ba drm/sched: Group exported prototypes by object type
>
> GPU is an RTX 5000 Ada
>
> The leaks are there immediately after booting the machine. They don't
> seem to reoccur, although I have not verified this very strictly.
>
>
> cat /sys/kernel/debug/kmemleak
> unreferenced object 0xff11000102304380 (size 8):
> ? comm "kworker/0:2", pid 222, jiffies 4294714878
> ? hex dump (first 8 bytes):
> ??? 00 00 00 00 00 00 00 00????????????????????????? ........
> ? backtrace (crc 0):
> ??? __kmalloc_cache_noprof+0x355/0x450
> ??? r535_gsp_oneinit+0x48e2/0x8bc0 [nouveau]
> ??? nvkm_subdev_oneinit_+0x10c/0x230 [nouveau]
> ??? nvkm_subdev_init_+0x86/0x1f0 [nouveau]
> ??? nvkm_subdev_init+0xa4/0xc0 [nouveau]
> ??? nvkm_device_init+0x347/0x530 [nouveau]
> ??? nvkm_udevice_init+0x8e/0xe0 [nouveau]
> ??? nvkm_object_init+0xc6/0x3f0 [nouveau]
> ??? nvkm_ioctl_new+0x383/0x6f0 [nouveau]
> ??? nvkm_ioctl+0x239/0x4f0 [nouveau]
> ??? nvif_object_ctor+0x3db/0x740 [nouveau]
> ??? nvif_device_ctor+0x32/0x100 [nouveau]
> ??? nouveau_drm_device_new+0x3c9/0xa50 [nouveau]
> ??? nouveau_drm_probe+0x119/0x440 [nouveau]
> ??? local_pci_probe+0xdc/0x180
> ??? work_for_cpu_fn+0x52/0xa0
> unreferenced object 0xff11000102304aa0 (size 8):
> ? comm "kworker/0:2", pid 222, jiffies 4294714878
> ? hex dump (first 8 bytes):
> ??? 00 00 00 00 00 00 00 00????????????????????????? ........
> ? backtrace (crc 0):
> ??? __kmalloc_cache_noprof+0x355/0x450
> ??? r535_gsp_oneinit+0x4bdf/0x8bc0 [nouveau]
> ??? nvkm_subdev_oneinit_+0x10c/0x230 [nouveau]
> ??? nvkm_subdev_init_+0x86/0x1f0 [nouveau]
> ??? nvkm_subdev_init+0xa4/0xc0 [nouveau]
> ??? nvkm_device_init+0x347/0x530 [nouveau]
> ??? nvkm_udevice_init+0x8e/0xe0 [nouveau]
> ??? nvkm_object_init+0xc6/0x3f0 [nouveau]
> ??? nvkm_ioctl_new+0x383/0x6f0 [nouveau]
> ??? nvkm_ioctl+0x239/0x4f0 [nouveau]
> ??? nvif_object_ctor+0x3db/0x740 [nouveau]
> ??? nvif_device_ctor+0x32/0x100 [nouveau]
> ??? nouveau_drm_device_new+0x3c9/0xa50 [nouveau]
> ??? nouveau_drm_probe+0x119/0x440 [nouveau]
> ??? local_pci_probe+0xdc/0x180
> ??? work_for_cpu_fn+0x52/0xa0
>
I probably should have provided the decoded stacktrace, shouldn't I.
Here we go:
backtrace (crc 0):
__kmalloc_cache_noprof (/home/imperator/linux/./include/linux/kmemleak.h:43
/home/imperator/linux/mm/slub.c:4119 /home/imperator/linux/mm/slub.c:4164
/home/imperator/linux/mm/slub.c:4320)
r535_gsp_oneinit
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1743
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1868
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1894
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:3316)
nouveau
nvkm_subdev_oneinit_
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/subdev.c:112) nouveau
nvkm_subdev_init_
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/subdev.c:139) nouveau
nvkm_subdev_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/subdev.c:169) nouveau
nvkm_device_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c:2960)
nouveau
nvkm_udevice_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c:247)
nouveau
nvkm_object_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/object.c:197) nouveau
nvkm_ioctl_new
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c:135) nouveau
nvkm_ioctl (/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c:278
(discriminator 1)
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c:300
(discriminator 1)) nouveau
nvif_object_ctor (/home/imperator/linux/drivers/gpu/drm/nouveau/nvif/object.c:46
/home/imperator/linux/drivers/gpu/drm/nouveau/nvif/object.c:269) nouveau
nvif_device_ctor
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvif/device.c:61) nouveau
nouveau_drm_device_new
(/home/imperator/linux/drivers/gpu/drm/nouveau/nouveau_drm.c:761) nouveau
nouveau_drm_probe
(/home/imperator/linux/drivers/gpu/drm/nouveau/nouveau_drm.c:879) nouveau
local_pci_probe (/home/imperator/linux/drivers/pci/pci-driver.c:324)
work_for_cpu_fn (/home/imperator/linux/kernel/workqueue.c:6731)
unreferenced object 0xff11000102304aa0 (size 8):
comm "kworker/0:2", pid 222, jiffies 4294714878
hex dump (first 8 bytes):
00 00 00 00 00 00 00 00 ........
backtrace (crc 0):
__kmalloc_cache_noprof (/home/imperator/linux/./include/linux/kmemleak.h:43
/home/imperator/linux/mm/slub.c:4119 /home/imperator/linux/mm/slub.c:4164
/home/imperator/linux/mm/slub.c:4320)
r535_gsp_oneinit
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1708
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1869
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1894
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:3316)
nouveau
nvkm_subdev_oneinit_
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/subdev.c:112) nouveau
nvkm_subdev_init_
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/subdev.c:139) nouveau
nvkm_subdev_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/subdev.c:169) nouveau
nvkm_device_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c:2960)
nouveau
nvkm_udevice_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c:247)
nouveau
nvkm_object_init
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/object.c:197) nouveau
nvkm_ioctl_new
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c:135) nouveau
nvkm_ioctl (/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c:278
(discriminator 1)
/home/imperator/linux/drivers/gpu/drm/nouveau/nvkm/core/ioctl.c:300
(discriminator 1)) nouveau
nvif_object_ctor (/home/imperator/linux/drivers/gpu/drm/nouveau/nvif/object.c:46
/home/imperator/linux/drivers/gpu/drm/nouveau/nvif/object.c:269) nouveau
nvif_device_ctor
(/home/imperator/linux/drivers/gpu/drm/nouveau/nvif/device.c:61) nouveau
nouveau_drm_device_new
(/home/imperator/linux/drivers/gpu/drm/nouveau/nouveau_drm.c:761) nouveau
nouveau_drm_probe
(/home/imperator/linux/drivers/gpu/drm/nouveau/nouveau_drm.c:879) nouveau
local_pci_probe (/home/imperator/linux/drivers/pci/pci-driver.c:324)
work_for_cpu_fn (/home/imperator/linux/kernel/workqueue.c:6731)
r535.c:3316 seems to be:
ret = r535_gsp_rpc_set_system_info(gsp);
if (WARN_ON(ret))
return ret;