linux_dsm_epyc7002/drivers/gpu/drm/nouveau
Yongxin Liu 09b90e2fe3 drm/nouveau: fix memory leak in nouveau_conn_reset()
In nouveau_conn_reset(), if connector->state is true,
__drm_atomic_helper_connector_destroy_state() will be called,
but the memory pointed by asyc isn't freed. Memory leak happens
in the following function __drm_atomic_helper_connector_reset(),
where newly allocated asyc->state will be assigned to connector->state.

So using nouveau_conn_atomic_destroy_state() instead of
__drm_atomic_helper_connector_destroy_state to free the "old" asyc.

Here the is the log showing memory leak.

unreferenced object 0xffff8c5480483c80 (size 192):
  comm "kworker/0:2", pid 188, jiffies 4294695279 (age 53.179s)
  hex dump (first 32 bytes):
    00 f0 ba 7b 54 8c ff ff 00 00 00 00 00 00 00 00  ...{T...........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<000000005005c0d0>] kmem_cache_alloc_trace+0x195/0x2c0
    [<00000000a122baed>] nouveau_conn_reset+0x25/0xc0 [nouveau]
    [<000000004fd189a2>] nouveau_connector_create+0x3a7/0x610 [nouveau]
    [<00000000c73343a8>] nv50_display_create+0x343/0x980 [nouveau]
    [<000000002e2b03c3>] nouveau_display_create+0x51f/0x660 [nouveau]
    [<00000000c924699b>] nouveau_drm_device_init+0x182/0x7f0 [nouveau]
    [<00000000cc029436>] nouveau_drm_probe+0x20c/0x2c0 [nouveau]
    [<000000007e961c3e>] local_pci_probe+0x47/0xa0
    [<00000000da14d569>] work_for_cpu_fn+0x1a/0x30
    [<0000000028da4805>] process_one_work+0x27c/0x660
    [<000000001d415b04>] worker_thread+0x22b/0x3f0
    [<0000000003b69f1f>] kthread+0x12f/0x150
    [<00000000c94c29b7>] ret_from_fork+0x3a/0x50

Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2019-07-19 16:26:51 +10:00
..
dispnv04 drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:51 +10:00
dispnv50 drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:51 +10:00
include drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nvif drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:51 +10:00
nvkm drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:51 +10:00
Kbuild drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:51 +10:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
nouveau_abi16.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_abi16.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_acpi.c drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_acpi.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_backlight.c drm/nouveau: register backlight on pascal and newer 2019-01-11 16:25:54 +10:00
nouveau_bios.c
nouveau_bios.h
nouveau_bo.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_bo.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_chan.c drm/nouveau/svm: initial support for shared virtual memory 2019-02-20 09:00:02 +10:00
nouveau_chan.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_connector.c drm/nouveau: fix memory leak in nouveau_conn_reset() 2019-07-19 16:26:51 +10:00
nouveau_connector.h drm/nouveau/drm/nouveau: Don't forget to label dp_aux devices 2018-12-11 15:37:09 +10:00
nouveau_crtc.h
nouveau_debugfs.c drm/nouveau/debugfs: Fix check of pm_runtime_get_sync failure 2019-03-22 09:57:58 +10:00
nouveau_debugfs.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_display.c drm/nouveau: Remove duplicate ACPI_VIDEO_NOTIFY_PROBE definition 2019-05-01 11:08:39 +10:00
nouveau_display.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_dma.c drm/nouveau/fifo/gv100: return work submission token in channel ctor args 2018-12-11 15:37:49 +10:00
nouveau_dma.h
nouveau_dmem.c drm/nouveau/dmem: missing mutex_lock in error path 2019-07-19 16:26:51 +10:00
nouveau_dmem.h drm/nouveau/dmem: device memory helpers for SVM 2019-02-20 09:00:02 +10:00
nouveau_dp.c
nouveau_drm.c drm/nouveau/core: allow detected chipset to be overridden 2019-05-14 16:58:06 +10:00
nouveau_drv.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_encoder.h
nouveau_fbcon.c drm/nouveau: Use drm_fb_helper_fill_info 2019-03-27 10:03:16 +01:00
nouveau_fbcon.h drm/nouveau: Use drm_fb_helper_fill_info 2019-03-27 10:03:16 +01:00
nouveau_fence.c dma-buf: allow reserving more than one shared fence slot 2018-10-25 13:45:07 +02:00
nouveau_fence.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_gem.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_gem.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_hwmon.c drm/nouveau/hwmon: return EINVAL if the GPU is powered down for sensors reads 2019-07-19 16:26:51 +10:00
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_led.c
nouveau_led.h
nouveau_mem.c
nouveau_mem.h
nouveau_nvif.c
nouveau_platform.c drm/nouveau: Replace drm_dev_unref with drm_dev_put 2018-07-16 18:06:30 +10:00
nouveau_platform.h
nouveau_prime.c
nouveau_reg.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_sgdma.c drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_svm.c drm/nouveau/svm: new ioctl to migrate process memory to GPU memory 2019-02-20 09:00:03 +10:00
nouveau_svm.h drm/nouveau/svm: new ioctl to migrate process memory to GPU memory 2019-02-20 09:00:03 +10:00
nouveau_ttm.c drm/ttm: Quick-test mmap offset in ttm_bo_mmap() 2019-03-19 15:03:53 -05:00
nouveau_ttm.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_usif.c
nouveau_usif.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_vga.c drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_vga.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nouveau_vmm.c drm/nouveau/svm: initial support for shared virtual memory 2019-02-20 09:00:02 +10:00
nouveau_vmm.h drm/nouveau/svm: initial support for shared virtual memory 2019-02-20 09:00:02 +10:00
nv04_fbcon.c
nv04_fence.c
nv10_fence.c
nv10_fence.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
nv17_fence.c
nv50_display.h
nv50_fbcon.c
nv50_fence.c
nv84_fence.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nvc0_fbcon.c
nvc0_fence.c