diff options
-rw-r--r-- | sound/hda/hdac_i915.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sound/hda/hdac_i915.c b/sound/hda/hdac_i915.c index cb78c25585ac..442500e06b7c 100644 --- a/sound/hda/hdac_i915.c +++ b/sound/hda/hdac_i915.c @@ -27,7 +27,7 @@ int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable) { struct i915_audio_component *acomp = bus->audio_component; - if (!acomp->ops) + if (!acomp || !acomp->ops) return -ENODEV; if (!acomp->ops->codec_wake_override) { @@ -49,7 +49,7 @@ int snd_hdac_display_power(struct hdac_bus *bus, bool enable) { struct i915_audio_component *acomp = bus->audio_component; - if (!acomp->ops) + if (!acomp || !acomp->ops) return -ENODEV; dev_dbg(bus->dev, "display power %s\n", @@ -72,7 +72,7 @@ int snd_hdac_get_display_clk(struct hdac_bus *bus) { struct i915_audio_component *acomp = bus->audio_component; - if (!acomp->ops) + if (!acomp || !acomp->ops) return -ENODEV; return acomp->ops->get_cdclk_freq(acomp->dev); @@ -179,8 +179,11 @@ int snd_hdac_i915_exit(struct hdac_bus *bus) struct device *dev = bus->dev; struct i915_audio_component *acomp = bus->audio_component; + if (!acomp) + return 0; + WARN_ON(bus->i915_power_refcount); - if (bus->i915_power_refcount > 0 && acomp && acomp->ops) + if (bus->i915_power_refcount > 0 && acomp->ops) acomp->ops->put_power(acomp->dev); component_master_del(dev, &hdac_component_master_ops); |