linux/sound/pci/hda
Takashi Iwai 9780ded39b ALSA: hda: Avoid racy recreation of widget kobjects
The refresh of HD-audio widget sysfs kobjects via
snd_hdac_refresh_widget_sysfs() is slightly racy.
The driver recreates the whole tree from scratch after deleting the
whole.  When CONFIG_DEBUG_KOBJECT_RELEASE option is used, kobject
release doesn't happen immediately but delayed, while the re-creation
of the same named kobject happens soon after invoking kobject_put().
This may end up with the conflicts of duplicated kobjects, as found in
the bug report below.

In this patch, we take another approach to refresh the tree: instead
of recreating the whole tree, just add the new nodes and delete the
non-existing nodes.  Since the refresh happens only once at
initialization, no longer race would happen.

Along with the code change, merge snd_hdac_refresh_widget_sysfs() with
the existing snd_hdac_refresh_widgets() with an additional bool flag
for simplifying the code.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=197307
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-10-19 13:58:36 +02:00
..
ca0132_regs.h
dell_wmi_helper.c ALSA: hda - Implement mic-mute LED mode enum 2017-08-22 19:44:04 +02:00
hda_auto_parser.c ALSA: hda - A new flag to enforce prefix to each pin 2017-04-10 17:44:39 +02:00
hda_auto_parser.h ALSA: hda - Sort input pins depending on amp caps 2014-09-23 15:57:32 +02:00
hda_beep.c ALSA: hda-beep: Update authors dead email address 2015-06-13 09:13:26 +02:00
hda_beep.h ALSA: hda-beep: Update authors dead email address 2015-06-20 09:24:40 +02:00
hda_bind.c ALSA: hda: Fix forget to free resource in error handling code path in hda_codec_driver_probe 2017-09-04 17:33:53 +02:00
hda_codec.c ALSA: hda: Avoid racy recreation of widget kobjects 2017-10-19 13:58:36 +02:00
hda_codec.h ALSA: hda: Fix regression of hdmi eld control created based on invalid pcm 2017-09-03 16:33:42 +02:00
hda_controller_trace.h ALSA: hda - rename hda_intel_trace.h to hda_controller_trace.h 2015-05-18 10:06:32 +02:00
hda_controller.c ALSA: hda - Skip card registration when no codec is found 2017-06-28 12:45:34 +02:00
hda_controller.h ALSA: hda - Fix doubly initialization of i915 component 2017-06-30 08:58:53 +02:00
hda_eld.c ALSA: hda - Use snd_hdac namespace prefix for chmap exported APIs 2016-03-07 15:46:06 +01:00
hda_generic.c ALSA: hda - silence uninitialized variable warning in activate_amp_in() 2017-10-13 15:14:44 +02:00
hda_generic.h ALSA: hda - Allow to enable/disable vmaster build explicitly 2017-04-10 17:45:27 +02:00
hda_hwdep.c ALSA: hda - Add card field to hda_codec struct 2015-03-03 11:25:16 +01:00
hda_intel_trace.h ALSA: hda - add hda_intel_trace.h 2015-05-18 10:06:44 +02:00
hda_intel.c ALSA: hda: Add Cannonlake PCI ID 2017-08-06 22:18:13 +02:00
hda_intel.h ALSA: hda - Spell vga_switcheroo consistently 2015-10-19 11:00:45 +02:00
hda_jack.c ALSA: hda - Fix bad dereference of jack object 2016-02-09 12:16:31 +01:00
hda_jack.h ALSA: hda - Fix bad dereference of jack object 2016-02-09 12:16:31 +01:00
hda_local.h ALSA: hda - Remove the generic bind ctl helpers 2017-05-17 07:13:10 +02:00
hda_proc.c ALSA: hda/proc - Fix racy string access for power states 2015-08-17 15:12:04 +02:00
hda_sysfs.c ALSA: hda: constify attribute_group structures. 2017-06-29 18:20:21 +02:00
hda_tegra.c ALSA: hda/tegra: iomem fixups for sparse warnings 2016-06-22 15:19:10 +02:00
Kconfig ALSA: hda - Clarify CONFIG_SND_HDA_RECONFIG usages 2016-05-09 17:47:37 +02:00
local.h ALSA: hda - Move a part of hda_codec stuff into hdac_device 2015-03-23 13:17:17 +01:00
Makefile ALSA: replace CONFIG_PROC_FS with CONFIG_SND_PROC_FS 2015-05-27 21:25:19 +02:00
patch_analog.c ALSA: hda: make snd_kcontrol_new const 2017-08-16 14:29:08 +02:00
patch_ca0110.c ALSA: hda - convert to hda_device_id 2015-10-20 10:15:20 +02:00
patch_ca0132.c ALSA: hda/ca0132 - use ARRAY_SIZE 2017-10-13 15:14:08 +02:00
patch_cirrus.c ALSA: hda - Keep powering up ADCs on Cirrus codecs 2016-04-19 22:07:50 +02:00
patch_cmedia.c ALSA: hda - convert to hda_device_id 2015-10-20 10:15:20 +02:00
patch_conexant.c ALSA: hda - Add stereo mic quirk for Lenovo G50-70 (17aa:3978) 2017-08-23 09:30:17 +02:00
patch_hdmi.c ALSA: hda - program ICT bits to support HBR audio 2017-09-20 12:01:01 +02:00
patch_realtek.c ALSA: hda - Add model string for Intel reference board quirk 2017-10-18 14:01:58 +02:00
patch_si3054.c ALSA: hda: Constify hw_constraints 2017-06-09 10:42:52 +02:00
patch_sigmatel.c ALSA: hda: make snd_kcontrol_new const 2017-08-16 14:29:08 +02:00
patch_via.c ALSA: hda - convert to hda_device_id 2015-10-20 10:15:20 +02:00
thinkpad_helper.c ALSA: hda - add a new condition to check if it is thinkpad 2016-11-10 09:32:55 +01:00