[REGRESSION] component: add support for releasing match data

From: Maarten Lankhorst
Date: Tue Jan 26 2016 - 08:42:27 EST


Hey,

Commit ce657b1cddf1f88c56 ("component: add support for releasing match data") causes
a general protection fault when unloading snd-hda-intel with the i915 module loaded
on a recent skylake machine.

This breaks one of the i915 acceptance tests that performs a module unload/reload on
snd-hda-intel and i915.

# modprobe -r snd-hda-intel

[ 268.635792] general protection fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
[ 268.635879] Modules linked in: fuse snd_hda_codec_hdmi
snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel(-)
snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_seq_midi
snd_seq_midi_event snd_rawmidi snd_seq input_leds intel_rapl led_class
x86_pkg_temp_thermal snd_seq_device snd_timer thermal fan wmi snd
soundcore pinctrl_sunrisepoint pinctrl_intel acpi_cpufreq acpi_pad i915
processor parport_pc ppdev parport efivarfs autofs4
[ 268.636072] CPU: 3 PID: 2156 Comm: modprobe Tainted: G U W 4.5.0-rc1+ #4626
[ 268.636101] Hardware name: Intel Corporation Skylake Client
platform/Skylake DT DDR4
[ 268.636142] task: ffff88044242ab80 ti: ffff880089c7c000 task.ti: ffff880089c7c000
[ 268.636168] RIP: 0010:[<ffffffff8141f865>] [<ffffffff8141f865>] devm_component_match_release+0x35/0x50
[ 268.636205] RSP: 0018:ffff880089c7fd88 EFLAGS: 00010202
[ 268.636224] RAX: 6b6b6b6b6b6b6b6b RBX: 0000000000000000 RCX: 0000000000000001
[ 268.636248] RDX: ffff880453b71260 RSI: 6b6b6b6b6b6b6b6b RDI: ffff8804592545b8
[ 268.636272] RBP: ffff880089c7fda0 R08: ffff88045c0039d0 R09: 0000000000000026
[ 268.636296] R10: 00000000000000d2 R11: 0000000000002c81 R12: ffff8804592545b8
[ 268.636320] R13: ffff8804582181b0 R14: 0000000000000002 R15: ffff880089c7fdd0
[ 268.636345] FS: 00007fc3b6f74700(0000) GS:ffff88046c6c0000(0000) knlGS:0000000000000000
[ 268.636373] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 268.636393] CR2: 0000559dae9b10e0 CR3: 000000045566e000 CR4: 00000000003406e0
[ 268.636417] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 268.636442] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 268.636468] Stack:
[ 268.636477] ffff880458218188 ffff8804592545b8 ffff880089c7fdd0 ffff880089c7fe08
[ 268.636509] ffffffff81428f50 0000000000000286 ffff880459254818 ffffffff00000000
[ 268.636542] ffff880459254818 ffff880458218188 ffff880453b71238 ffff8804592545b8
[ 268.636574] Call Trace:
[ 268.636587] [<ffffffff81428f50>] release_nodes+0x120/0x1e0
[ 268.636608] [<ffffffff81429107>] devres_release_all+0x37/0x60
[ 268.636630] [<ffffffff81424c74>] __device_release_driver+0xa4/0x150
[ 268.636654] [<ffffffff8142561c>] driver_detach+0xac/0xb0
[ 268.636674] [<ffffffff814247a0>] bus_remove_driver+0x60/0xb0
[ 268.636695] [<ffffffff81425bf7>] driver_unregister+0x27/0x50
[ 268.636717] [<ffffffff81320535>] pci_unregister_driver+0x25/0x70
[ 268.636740] [<ffffffffc022a9a1>] azx_driver_exit+0x10/0x66f [snd_hda_intel]
[ 268.636767] [<ffffffff810f445b>] SyS_delete_module+0x17b/0x240
[ 268.636789] [<ffffffff817396d7>] entry_SYSCALL_64_fastpath+0x12/0x6a
[ 268.636811] Code: f5 41 54 49 89 fc 53 31 db 48 83 7e 08 00 74 29 48
8d 14 80 49 8b 45 10 48 8d 14 d0 48 8b 42 10 48 85 c0 74 08 48 8b 32 4c
89 e7 <ff> d0 8d 43 01 49 3b 45 08 48 89 c3 72 d7 5b 41 5c 41 5d
5d c3
[ 268.636993] RIP [<ffffffff8141f865>] devm_component_match_release+0x35/0x50
[ 268.637021] RSP <ffff880089c7fd88>
[ 268.637043] ---[ end trace 31731dfc9d95562b ]---

Looking at the code, I see it only happens on newer i915 chips with power well support,
so haswell/broadwell/skylake are probably affected in the functions
snd_hdac_i915_init and snd_hdac_i915_exit.

~Maarten