On Tue, Aug 23, 2016 at 10:25:58AM +0100, Chris Wilson wrote: > If we hit the error path, we have never called drm_encoder_init() and so > have nothing to cleanup. Doing so hits a null dereference: > > [ 10.066261] BUG: unable to handle kernel NULL pointer dereference at 00000104 > [ 10.066273] IP: [<c16054b4>] mutex_lock+0xa/0x15 > [ 10.066287] *pde = 00000000 > [ 10.066295] Oops: 0002 [#1] > [ 10.066302] Modules linked in: i915(+) video i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm iTCO_wdt iTCO_vendor_support ppdev evdev snd_intel8x0 snd_ac97_codec ac97_bus psmouse snd_pcm snd_timer snd pcspkr uhci_hcd ehci_pci soundcore sr_mod ehci_hcd serio_raw i2c_i801 usbcore i2c_smbus cdrom lpc_ich mfd_core rng_core e100 mii floppy parport_pc parport acpi_cpufreq button processor usb_common eeprom lm85 hwmon_vid autofs4 > [ 10.066378] CPU: 0 PID: 132 Comm: systemd-udevd Not tainted 4.8.0-rc3-00013-gef0e1ea #34 > [ 10.066389] Hardware name: MicroLink /D865GLC , BIOS BF86510A.86A.0077.P25.0508040031 08/04/2005 > [ 10.066401] task: f62db800 task.stack: f5970000 > [ 10.066409] EIP: 0060:[<c16054b4>] EFLAGS: 00010286 CPU: 0 > [ 10.066417] EIP is at mutex_lock+0xa/0x15 > [ 10.066424] EAX: 00000104 EBX: 00000104 ECX: 00000000 EDX: 80000000 > [ 10.066432] ESI: 00000000 EDI: 00000104 EBP: f5be8000 ESP: f5971b58 > [ 10.066439] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 > [ 10.066446] CR0: 80050033 CR2: 00000104 CR3: 35945000 CR4: 000006d0 > [ 10.066453] Stack: > [ 10.066459] f503d740 f824dddf 00000000 f61170c0 f61170c0 f82371ae f850f40e 00000001 > [ 10.066476] f61170c0 f5971bcc f5be8000 f9c2d401 00000001 f8236fcc 00000001 00000000 > [ 10.066491] f5144014 f5be8104 00000008 f9c5267c 00000007 f61170c0 f5144400 f9c4ff00 > [ 10.066507] Call Trace: > [ 10.066526] [<f824dddf>] ? drm_modeset_lock_all+0x27/0xb3 [drm] > [ 10.066545] [<f82371ae>] ? drm_encoder_cleanup+0x1a/0x132 [drm] > [ 10.066559] [<f850f40e>] ? drm_atomic_helper_connector_reset+0x3f/0x5c [drm_kms_helper] > [ 10.066644] [<f9c2d401>] ? intel_dvo_init+0x569/0x788 [i915] > [ 10.066663] [<f8236fcc>] ? drm_encoder_init+0x43/0x20b [drm] > [ 10.066734] [<f9bf1fce>] ? intel_modeset_init+0x1436/0x17dd [i915] > [ 10.066791] [<f9b37636>] ? i915_driver_load+0x85a/0x15d3 [i915] > [ 10.066846] [<f9b3603d>] ? i915_driver_open+0x5/0x5 [i915] > [ 10.066857] [<c14af4d0>] ? firmware_map_add_entry.part.2+0xc/0xc > [ 10.066868] [<c1343daf>] ? pci_device_probe+0x8e/0x11c > [ 10.066878] [<c140cec8>] ? driver_probe_device+0x1db/0x62e > [ 10.066888] [<c120c010>] ? kernfs_new_node+0x29/0x9c > [ 10.066897] [<c13438e0>] ? pci_match_device+0xd9/0x161 > [ 10.066905] [<c120c48b>] ? kernfs_create_dir_ns+0x42/0x88 > [ 10.066914] [<c140d401>] ? __driver_attach+0xe6/0x11b > [ 10.066924] [<c1303b13>] ? kobject_add_internal+0x1bb/0x44f > [ 10.066933] [<c140d31b>] ? driver_probe_device+0x62e/0x62e > [ 10.066941] [<c140a2d2>] ? bus_for_each_dev+0x46/0x7f > [ 10.066950] [<c140c502>] ? driver_attach+0x1a/0x34 > [ 10.066958] [<c140d31b>] ? driver_probe_device+0x62e/0x62e > [ 10.066966] [<c140b758>] ? bus_add_driver+0x217/0x32a > [ 10.066975] [<f8403000>] ? 0xf8403000 > [ 10.066982] [<c140de27>] ? driver_register+0x5f/0x108 > [ 10.066991] [<c1000493>] ? do_one_initcall+0x49/0x1f6 > [ 10.067000] [<c1082299>] ? pick_next_task_fair+0x14b/0x2a3 > [ 10.067008] [<c1603c8d>] ? __schedule+0x15c/0x4fe > [ 10.067016] [<c1604104>] ? preempt_schedule_common+0x19/0x3c > [ 10.067027] [<c11051de>] ? do_init_module+0x17/0x230 > [ 10.067035] [<c1604139>] ? _cond_resched+0x12/0x1a > [ 10.067044] [<c116f9aa>] ? kmem_cache_alloc+0x8f/0x11f > [ 10.067052] [<c11051de>] ? do_init_module+0x17/0x230 > [ 10.067060] [<c11703dd>] ? kfree+0x137/0x203 > [ 10.067068] [<c110523d>] ? do_init_module+0x76/0x230 > [ 10.067078] [<c10cadf3>] ? load_module+0x2a39/0x333f > [ 10.067087] [<c10cb8b2>] ? SyS_finit_module+0x96/0xd5 > [ 10.067096] [<c1132231>] ? vm_mmap_pgoff+0x79/0xa0 > [ 10.067105] [<c1001e96>] ? do_fast_syscall_32+0xb5/0x1b0 > [ 10.067114] [<c16086a6>] ? sysenter_past_esp+0x47/0x75 > [ 10.067121] Code: c8 f7 76 c1 e8 8e cc d2 ff e9 45 fe ff ff 66 90 66 90 66 90 66 90 90 ff 00 7f 05 e8 4e 0c 00 00 c3 53 89 c3 e8 75 ec ff ff 89 d8 <ff> 08 79 05 e8 fa 0a 00 00 5b c3 53 89 c3 85 c0 74 1b 8b 03 83 > [ 10.067180] EIP: [<c16054b4>] mutex_lock+0xa/0x15 SS:ESP 0068:f5971b58 > [ 10.067190] CR2: 0000000000000104 > [ 10.067222] ---[ end trace 049f1f09da45a856 ]--- > > Reported-by: Meelis Roos <mroos@xxxxxxxx> > Fixes: 580d8ed522e0 ("drm/i915: Give encoders useful names") > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: drm-intel-fixes@xxxxxxxxxxxxxxxxxxxxx > --- > drivers/gpu/drm/i915/intel_dvo.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c > index 47bdf9dad0d3..b9e5a63a7c9e 100644 > --- a/drivers/gpu/drm/i915/intel_dvo.c > +++ b/drivers/gpu/drm/i915/intel_dvo.c > @@ -554,7 +554,6 @@ void intel_dvo_init(struct drm_device *dev) > return; > } > > - drm_encoder_cleanup(&intel_encoder->base); > kfree(intel_dvo); > kfree(intel_connector); > } Reviewed-by: David Weinehall <david.weinehall@xxxxxxxxxxxxxxx> _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx