mirror of
https://github.com/torvalds/linux.git
synced 2024-10-25 22:44:30 +00:00
9780ded39b
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> |
||
---|---|---|
.. | ||
ext | ||
array.c | ||
hda_bus_type.c | ||
hdac_bus.c | ||
hdac_controller.c | ||
hdac_device.c | ||
hdac_i915.c | ||
hdac_regmap.c | ||
hdac_stream.c | ||
hdac_sysfs.c | ||
hdmi_chmap.c | ||
Kconfig | ||
local.h | ||
Makefile | ||
trace.c | ||
trace.h |