if (strcmp(dai->driver->name, pcm->name))
                                continue;
 
-                       if (dai->playback_widget)
-                               snd_soc_dapm_free_widget(dai->playback_widget);
-                       if (dai->capture_widget)
-                               snd_soc_dapm_free_widget(dai->capture_widget);
+                       snd_soc_dapm_free_widget(dai->playback_widget);
+                       snd_soc_dapm_free_widget(dai->capture_widget);
                        snd_soc_unregister_dai(dai);
                        break;
                }
 
                if (!strstr(dai->driver->name, name))
                        continue;
 
-               if (dai->playback_widget)
-                       snd_soc_dapm_free_widget(dai->playback_widget);
-               if (dai->capture_widget)
-                       snd_soc_dapm_free_widget(dai->capture_widget);
+               snd_soc_dapm_free_widget(dai->playback_widget);
+               snd_soc_dapm_free_widget(dai->capture_widget);
                snd_soc_unregister_dai(dai);
        }
 }
 
        struct snd_soc_dapm_path *p, *next_p;
        enum snd_soc_dapm_direction dir;
 
+       if (!w)
+               return;
+
        list_del(&w->list);
        list_del(&w->dirty);
        /*