In the Linux kernel, the following vulnerability has been resolved:
ALSA: hda: fix a possible null-pointer dereference due to data race in sndhdacregmap_sync()
The variable codec->regmap is often protected by the lock codec->regmaplock when is accessed. However, it is accessed without holding the lock when is accessed in sndhdacregmapsync():
if (codec->regmap)
In my opinion, this may be a harmful race, because if codec->regmap is set to NULL right after the condition is checked, a null-pointer dereference can occur in the called function regcache_sync():
map->lock(map->lock_arg); --> Line 360 in drivers/base/regmap/regcache.c
To fix this possible null-pointer dereference caused by data race, the mutexlock coverage is extended to protect the if statement as well as the function call to regcachesync().
[ Note: the lack of the regmaplock itself is harmless for the current codec driver implementations, as sndhdacregmapsync() is only for PM runtime resume that is prohibited during the codec probe. But the change makes the whole code more consistent, so it's merged as is -- tiwai ]