Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sound-4.7-fix2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"No surprise, just a few small fixes: a couple of changes are seen in
the core part, and both of them are rather for unusual error paths.

The rest are the regular HD-audio fixes and one USB-audio regression
fix"

* tag 'sound-4.7-fix2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: usb-audio: Fix quirks code is not called
ALSA: hda: add AMD Stoney PCI ID with proper driver caps
ALSA: hda - fix use-after-free after module unload
ALSA: pcm: Free chmap at PCM free callback, too
ALSA: ctl: Stop notification after disconnection
ALSA: hda/realtek - add new pin definition in alc225 pin quirk table

+32 -7
+2
sound/core/control.c
··· 160 160 161 161 if (snd_BUG_ON(!card || !id)) 162 162 return; 163 + if (card->shutdown) 164 + return; 163 165 read_lock(&card->ctl_files_rwlock); 164 166 #if IS_ENABLED(CONFIG_SND_MIXER_OSS) 165 167 card->mixer_oss_change_count++;
+10 -4
sound/core/pcm.c
··· 849 849 } 850 850 EXPORT_SYMBOL(snd_pcm_new_internal); 851 851 852 + static void free_chmap(struct snd_pcm_str *pstr) 853 + { 854 + if (pstr->chmap_kctl) { 855 + snd_ctl_remove(pstr->pcm->card, pstr->chmap_kctl); 856 + pstr->chmap_kctl = NULL; 857 + } 858 + } 859 + 852 860 static void snd_pcm_free_stream(struct snd_pcm_str * pstr) 853 861 { 854 862 struct snd_pcm_substream *substream, *substream_next; ··· 879 871 kfree(setup); 880 872 } 881 873 #endif 874 + free_chmap(pstr); 882 875 if (pstr->substream_count) 883 876 put_device(&pstr->dev); 884 877 } ··· 1144 1135 for (cidx = 0; cidx < 2; cidx++) { 1145 1136 if (!pcm->internal) 1146 1137 snd_unregister_device(&pcm->streams[cidx].dev); 1147 - if (pcm->streams[cidx].chmap_kctl) { 1148 - snd_ctl_remove(pcm->card, pcm->streams[cidx].chmap_kctl); 1149 - pcm->streams[cidx].chmap_kctl = NULL; 1150 - } 1138 + free_chmap(&pcm->streams[cidx]); 1151 1139 } 1152 1140 mutex_unlock(&pcm->open_mutex); 1153 1141 mutex_unlock(&register_mutex);
+5 -1
sound/pci/hda/hda_intel.c
··· 1218 1218 if (use_vga_switcheroo(hda)) { 1219 1219 if (chip->disabled && hda->probe_continued) 1220 1220 snd_hda_unlock_devices(&chip->bus); 1221 - if (hda->vga_switcheroo_registered) 1221 + if (hda->vga_switcheroo_registered) { 1222 1222 vga_switcheroo_unregister_client(chip->pci); 1223 + vga_switcheroo_fini_domain_pm_ops(chip->card->dev); 1224 + } 1223 1225 } 1224 1226 1225 1227 if (bus->chip_init) { ··· 2268 2266 { PCI_DEVICE(0x1002, 0x1308), 2269 2267 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, 2270 2268 { PCI_DEVICE(0x1002, 0x157a), 2269 + .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, 2270 + { PCI_DEVICE(0x1002, 0x15b3), 2271 2271 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, 2272 2272 { PCI_DEVICE(0x1002, 0x793b), 2273 2273 .driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI },
+14 -1
sound/pci/hda/patch_realtek.c
··· 5738 5738 {} 5739 5739 }; 5740 5740 #define ALC225_STANDARD_PINS \ 5741 - {0x12, 0xb7a60130}, \ 5742 5741 {0x21, 0x04211020} 5743 5742 5744 5743 #define ALC256_STANDARD_PINS \ ··· 5762 5763 static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { 5763 5764 SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, 5764 5765 ALC225_STANDARD_PINS, 5766 + {0x12, 0xb7a60130}, 5765 5767 {0x14, 0x901701a0}), 5766 5768 SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, 5767 5769 ALC225_STANDARD_PINS, 5770 + {0x12, 0xb7a60130}, 5768 5771 {0x14, 0x901701b0}), 5772 + SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, 5773 + ALC225_STANDARD_PINS, 5774 + {0x12, 0xb7a60150}, 5775 + {0x14, 0x901701a0}), 5776 + SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, 5777 + ALC225_STANDARD_PINS, 5778 + {0x12, 0xb7a60150}, 5779 + {0x14, 0x901701b0}), 5780 + SND_HDA_PIN_QUIRK(0x10ec0225, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, 5781 + ALC225_STANDARD_PINS, 5782 + {0x12, 0xb7a60130}, 5783 + {0x1b, 0x90170110}), 5769 5784 SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL2_MIC_NO_PRESENCE, 5770 5785 {0x14, 0x90170110}, 5771 5786 {0x21, 0x02211020}),
+1 -1
sound/usb/card.c
··· 556 556 goto __error; 557 557 } 558 558 chip = usb_chip[i]; 559 - dev_set_drvdata(&dev->dev, chip); 560 559 atomic_inc(&chip->active); /* avoid autopm */ 561 560 break; 562 561 } ··· 581 582 goto __error; 582 583 } 583 584 } 585 + dev_set_drvdata(&dev->dev, chip); 584 586 585 587 /* 586 588 * For devices with more than one control interface, we assume the