summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Thibault2019-07-26 23:47:02 +0200
committerGreg Kroah-Hartman2019-08-06 19:06:54 +0200
commit72651bbdf3d5e2d587c0a1cc0da977cb608787a5 (patch)
treea81227d040d54b497172f86d634984bc7a30b47a
parentselinux: fix memory leak in policydb_init() (diff)
downloadkernel-qcow2-linux-72651bbdf3d5e2d587c0a1cc0da977cb608787a5.tar.gz
kernel-qcow2-linux-72651bbdf3d5e2d587c0a1cc0da977cb608787a5.tar.xz
kernel-qcow2-linux-72651bbdf3d5e2d587c0a1cc0da977cb608787a5.zip
ALSA: hda: Fix 1-minute detection delay when i915 module is not available
commit 74bf71ed792ab0f64631cc65ccdb54c356c36d45 upstream. Distribution installation images such as Debian include different sets of modules which can be downloaded dynamically. Such images may notably include the hda sound modules but not the i915 DRM module, even if the latter was enabled at build time, as reported on https://bugs.debian.org/931507 In such a case hdac_i915 would be linked in and try to load the i915 module, fail since it is not there, but still wait for a whole minute before giving up binding with it. This fixes such as case by only waiting for the binding if the module was properly loaded (or module support is disabled, in which case i915 is already compiled-in anyway). Fixes: f9b54e1961c7 ("ALSA: hda/i915: Allow delayed i915 audio component binding") Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--sound/hda/hdac_i915.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c
index 27eb0270a711..3847fe841d33 100644
--- a/sound/hda/hdac_i915.c
+++ b/sound/hda/hdac_i915.c
@@ -143,10 +143,12 @@ int snd_hdac_i915_init(struct hdac_bus *bus)
if (!acomp)
return -ENODEV;
if (!acomp->ops) {
- request_module("i915");
- /* 60s timeout */
- wait_for_completion_timeout(&bind_complete,
- msecs_to_jiffies(60 * 1000));
+ if (!IS_ENABLED(CONFIG_MODULES) ||
+ !request_module("i915")) {
+ /* 60s timeout */
+ wait_for_completion_timeout(&bind_complete,
+ msecs_to_jiffies(60 * 1000));
+ }
}
if (!acomp->ops) {
dev_info(bus->dev, "couldn't bind with audio component\n");