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.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"A few small fixes:

- a fix for the NULL-dereference in rawmidi compat ioctls, triggered
by fuzzer

- HD-audio Realtek codec quirks, a VIA controller fixup

- a long-standing bug fix in LINE6 MIDI"

* tag 'sound-4.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: rawmidi: Fix missing input substream checks in compat ioctls
ALSA: hda/realtek - adjust the location of one mic
ALSA: hda/realtek - set PINCFG_HEADSET_MIC to parse_flags
ALSA: hda - New VIA controller suppor no-snoop path
ALSA: line6: Use correct endpoint type for midi output

+18 -8
+12 -6
sound/core/rawmidi_compat.c
··· 36 36 struct snd_rawmidi_params params; 37 37 unsigned int val; 38 38 39 - if (rfile->output == NULL) 40 - return -EINVAL; 41 39 if (get_user(params.stream, &src->stream) || 42 40 get_user(params.buffer_size, &src->buffer_size) || 43 41 get_user(params.avail_min, &src->avail_min) || ··· 44 46 params.no_active_sensing = val; 45 47 switch (params.stream) { 46 48 case SNDRV_RAWMIDI_STREAM_OUTPUT: 49 + if (!rfile->output) 50 + return -EINVAL; 47 51 return snd_rawmidi_output_params(rfile->output, &params); 48 52 case SNDRV_RAWMIDI_STREAM_INPUT: 53 + if (!rfile->input) 54 + return -EINVAL; 49 55 return snd_rawmidi_input_params(rfile->input, &params); 50 56 } 51 57 return -EINVAL; ··· 69 67 int err; 70 68 struct snd_rawmidi_status status; 71 69 72 - if (rfile->output == NULL) 73 - return -EINVAL; 74 70 if (get_user(status.stream, &src->stream)) 75 71 return -EFAULT; 76 72 77 73 switch (status.stream) { 78 74 case SNDRV_RAWMIDI_STREAM_OUTPUT: 75 + if (!rfile->output) 76 + return -EINVAL; 79 77 err = snd_rawmidi_output_status(rfile->output, &status); 80 78 break; 81 79 case SNDRV_RAWMIDI_STREAM_INPUT: 80 + if (!rfile->input) 81 + return -EINVAL; 82 82 err = snd_rawmidi_input_status(rfile->input, &status); 83 83 break; 84 84 default: ··· 116 112 int err; 117 113 struct snd_rawmidi_status status; 118 114 119 - if (rfile->output == NULL) 120 - return -EINVAL; 121 115 if (get_user(status.stream, &src->stream)) 122 116 return -EFAULT; 123 117 124 118 switch (status.stream) { 125 119 case SNDRV_RAWMIDI_STREAM_OUTPUT: 120 + if (!rfile->output) 121 + return -EINVAL; 126 122 err = snd_rawmidi_output_status(rfile->output, &status); 127 123 break; 128 124 case SNDRV_RAWMIDI_STREAM_INPUT: 125 + if (!rfile->input) 126 + return -EINVAL; 129 127 err = snd_rawmidi_input_status(rfile->input, &status); 130 128 break; 131 129 default:
+2 -1
sound/pci/hda/hda_intel.c
··· 1647 1647 */ 1648 1648 u8 val; 1649 1649 pci_read_config_byte(chip->pci, 0x42, &val); 1650 - if (!(val & 0x80) && chip->pci->revision == 0x30) 1650 + if (!(val & 0x80) && (chip->pci->revision == 0x30 || 1651 + chip->pci->revision == 0x20)) 1651 1652 snoop = false; 1652 1653 } 1653 1654
+3
sound/pci/hda/patch_realtek.c
··· 6370 6370 { 0x19, 0x01a1913c }, /* use as headset mic, without its own jack detect */ 6371 6371 { } 6372 6372 }, 6373 + .chained = true, 6374 + .chain_id = ALC269_FIXUP_HEADSET_MIC 6373 6375 }, 6374 6376 }; 6375 6377 ··· 6575 6573 SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), 6576 6574 SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), 6577 6575 SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), 6576 + SND_PCI_QUIRK(0x17aa, 0x3138, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), 6578 6577 SND_PCI_QUIRK(0x17aa, 0x313c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), 6579 6578 SND_PCI_QUIRK(0x17aa, 0x3112, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), 6580 6579 SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
+1 -1
sound/usb/line6/midi.c
··· 125 125 } 126 126 127 127 usb_fill_int_urb(urb, line6->usbdev, 128 - usb_sndbulkpipe(line6->usbdev, 128 + usb_sndintpipe(line6->usbdev, 129 129 line6->properties->ep_ctrl_w), 130 130 transfer_buffer, length, midi_sent, line6, 131 131 line6->interval);