From b17c28b2317f50b12f6ade7d9fb313445be44ab7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 16 Aug 2013 13:28:03 -0700 Subject: [PATCH] 3.10-stable patches added patches: alsa-6fire-make-buffers-dma-able-midi.patch alsa-6fire-make-buffers-dma-able-pcm.patch alsa-hda-add-a-fixup-for-gateway-lt27.patch alsa-hda-add-pinfix-for-lg-lw25-laptop.patch alsa-hda-fix-missing-mute-controls-for-cx5051.patch alsa-usb-audio-fix-invalid-volume-resolution-for-logitech-hd-webcam-c525.patch asoc-cs42l52-reorder-min-max-and-update-to-sx_tlv-for-beep-volume.patch asoc-dapm-fix-empty-list-check-in-dapm_new_mux.patch asoc-tegra-fix-tegra30-i2s-capture-parameter-setup.patch cfg80211-fix-p2p-go-interface-teardown.patch nl80211-fix-another-nl80211_fam.attrbuf-race.patch --- ...lsa-6fire-make-buffers-dma-able-midi.patch | 87 ++++++++++++++ ...alsa-6fire-make-buffers-dma-able-pcm.patch | 108 ++++++++++++++++++ ...lsa-hda-add-a-fixup-for-gateway-lt27.patch | 29 +++++ ...sa-hda-add-pinfix-for-lg-lw25-laptop.patch | 53 +++++++++ ...fix-missing-mute-controls-for-cx5051.patch | 54 +++++++++ ...solution-for-logitech-hd-webcam-c525.patch | 34 ++++++ ...and-update-to-sx_tlv-for-beep-volume.patch | 31 +++++ ...fix-empty-list-check-in-dapm_new_mux.patch | 45 ++++++++ ...-tegra30-i2s-capture-parameter-setup.patch | 37 ++++++ ...g80211-fix-p2p-go-interface-teardown.patch | 35 ++++++ ...fix-another-nl80211_fam.attrbuf-race.patch | 41 +++++++ queue-3.10/series | 11 ++ 12 files changed, 565 insertions(+) create mode 100644 queue-3.10/alsa-6fire-make-buffers-dma-able-midi.patch create mode 100644 queue-3.10/alsa-6fire-make-buffers-dma-able-pcm.patch create mode 100644 queue-3.10/alsa-hda-add-a-fixup-for-gateway-lt27.patch create mode 100644 queue-3.10/alsa-hda-add-pinfix-for-lg-lw25-laptop.patch create mode 100644 queue-3.10/alsa-hda-fix-missing-mute-controls-for-cx5051.patch create mode 100644 queue-3.10/alsa-usb-audio-fix-invalid-volume-resolution-for-logitech-hd-webcam-c525.patch create mode 100644 queue-3.10/asoc-cs42l52-reorder-min-max-and-update-to-sx_tlv-for-beep-volume.patch create mode 100644 queue-3.10/asoc-dapm-fix-empty-list-check-in-dapm_new_mux.patch create mode 100644 queue-3.10/asoc-tegra-fix-tegra30-i2s-capture-parameter-setup.patch create mode 100644 queue-3.10/cfg80211-fix-p2p-go-interface-teardown.patch create mode 100644 queue-3.10/nl80211-fix-another-nl80211_fam.attrbuf-race.patch diff --git a/queue-3.10/alsa-6fire-make-buffers-dma-able-midi.patch b/queue-3.10/alsa-6fire-make-buffers-dma-able-midi.patch new file mode 100644 index 00000000000..efabc80e5a7 --- /dev/null +++ b/queue-3.10/alsa-6fire-make-buffers-dma-able-midi.patch @@ -0,0 +1,87 @@ +From 4c2aee0032b70083dafebd733ed9c774633b2fa3 Mon Sep 17 00:00:00 2001 +From: Torsten Schenk +Date: Sun, 11 Aug 2013 11:11:35 +0200 +Subject: ALSA: 6fire: make buffers DMA-able (midi) + +From: Torsten Schenk + +commit 4c2aee0032b70083dafebd733ed9c774633b2fa3 upstream. + +Patch makes midi output buffer DMA-able by allocating it separately. + +Signed-off-by: Torsten Schenk +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/6fire/midi.c | 16 +++++++++++++++- + sound/usb/6fire/midi.h | 6 +----- + 2 files changed, 16 insertions(+), 6 deletions(-) + +--- a/sound/usb/6fire/midi.c ++++ b/sound/usb/6fire/midi.c +@@ -19,6 +19,10 @@ + #include "chip.h" + #include "comm.h" + ++enum { ++ MIDI_BUFSIZE = 64 ++}; ++ + static void usb6fire_midi_out_handler(struct urb *urb) + { + struct midi_runtime *rt = urb->context; +@@ -156,6 +160,12 @@ int usb6fire_midi_init(struct sfire_chip + if (!rt) + return -ENOMEM; + ++ rt->out_buffer = kzalloc(MIDI_BUFSIZE, GFP_KERNEL); ++ if (!rt->out_buffer) { ++ kfree(rt); ++ return -ENOMEM; ++ } ++ + rt->chip = chip; + rt->in_received = usb6fire_midi_in_received; + rt->out_buffer[0] = 0x80; /* 'send midi' command */ +@@ -169,6 +179,7 @@ int usb6fire_midi_init(struct sfire_chip + + ret = snd_rawmidi_new(chip->card, "6FireUSB", 0, 1, 1, &rt->instance); + if (ret < 0) { ++ kfree(rt->out_buffer); + kfree(rt); + snd_printk(KERN_ERR PREFIX "unable to create midi.\n"); + return ret; +@@ -197,6 +208,9 @@ void usb6fire_midi_abort(struct sfire_ch + + void usb6fire_midi_destroy(struct sfire_chip *chip) + { +- kfree(chip->midi); ++ struct midi_runtime *rt = chip->midi; ++ ++ kfree(rt->out_buffer); ++ kfree(rt); + chip->midi = NULL; + } +--- a/sound/usb/6fire/midi.h ++++ b/sound/usb/6fire/midi.h +@@ -16,10 +16,6 @@ + + #include "common.h" + +-enum { +- MIDI_BUFSIZE = 64 +-}; +- + struct midi_runtime { + struct sfire_chip *chip; + struct snd_rawmidi *instance; +@@ -32,7 +28,7 @@ struct midi_runtime { + struct snd_rawmidi_substream *out; + struct urb out_urb; + u8 out_serial; /* serial number of out packet */ +- u8 out_buffer[MIDI_BUFSIZE]; ++ u8 *out_buffer; + int buffer_offset; + + void (*in_received)(struct midi_runtime *rt, u8 *data, int length); diff --git a/queue-3.10/alsa-6fire-make-buffers-dma-able-pcm.patch b/queue-3.10/alsa-6fire-make-buffers-dma-able-pcm.patch new file mode 100644 index 00000000000..a887c1341b8 --- /dev/null +++ b/queue-3.10/alsa-6fire-make-buffers-dma-able-pcm.patch @@ -0,0 +1,108 @@ +From 5ece263f1d93fba8d992e67e3ab8a71acf674db9 Mon Sep 17 00:00:00 2001 +From: Torsten Schenk +Date: Sun, 11 Aug 2013 11:11:19 +0200 +Subject: ALSA: 6fire: make buffers DMA-able (pcm) + +From: Torsten Schenk + +commit 5ece263f1d93fba8d992e67e3ab8a71acf674db9 upstream. + +Patch makes pcm buffers DMA-able by allocating each one separately. + +Signed-off-by: Torsten Schenk +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/6fire/pcm.c | 41 ++++++++++++++++++++++++++++++++++++++++- + sound/usb/6fire/pcm.h | 2 +- + 2 files changed, 41 insertions(+), 2 deletions(-) + +--- a/sound/usb/6fire/pcm.c ++++ b/sound/usb/6fire/pcm.c +@@ -580,6 +580,33 @@ static void usb6fire_pcm_init_urb(struct + urb->instance.number_of_packets = PCM_N_PACKETS_PER_URB; + } + ++static int usb6fire_pcm_buffers_init(struct pcm_runtime *rt) ++{ ++ int i; ++ ++ for (i = 0; i < PCM_N_URBS; i++) { ++ rt->out_urbs[i].buffer = kzalloc(PCM_N_PACKETS_PER_URB ++ * PCM_MAX_PACKET_SIZE, GFP_KERNEL); ++ if (!rt->out_urbs[i].buffer) ++ return -ENOMEM; ++ rt->in_urbs[i].buffer = kzalloc(PCM_N_PACKETS_PER_URB ++ * PCM_MAX_PACKET_SIZE, GFP_KERNEL); ++ if (!rt->in_urbs[i].buffer) ++ return -ENOMEM; ++ } ++ return 0; ++} ++ ++static void usb6fire_pcm_buffers_destroy(struct pcm_runtime *rt) ++{ ++ int i; ++ ++ for (i = 0; i < PCM_N_URBS; i++) { ++ kfree(rt->out_urbs[i].buffer); ++ kfree(rt->in_urbs[i].buffer); ++ } ++} ++ + int usb6fire_pcm_init(struct sfire_chip *chip) + { + int i; +@@ -591,6 +618,13 @@ int usb6fire_pcm_init(struct sfire_chip + if (!rt) + return -ENOMEM; + ++ ret = usb6fire_pcm_buffers_init(rt); ++ if (ret) { ++ usb6fire_pcm_buffers_destroy(rt); ++ kfree(rt); ++ return ret; ++ } ++ + rt->chip = chip; + rt->stream_state = STREAM_DISABLED; + rt->rate = ARRAY_SIZE(rates); +@@ -612,6 +646,7 @@ int usb6fire_pcm_init(struct sfire_chip + + ret = snd_pcm_new(chip->card, "DMX6FireUSB", 0, 1, 1, &pcm); + if (ret < 0) { ++ usb6fire_pcm_buffers_destroy(rt); + kfree(rt); + snd_printk(KERN_ERR PREFIX "cannot create pcm instance.\n"); + return ret; +@@ -627,6 +662,7 @@ int usb6fire_pcm_init(struct sfire_chip + snd_dma_continuous_data(GFP_KERNEL), + MAX_BUFSIZE, MAX_BUFSIZE); + if (ret) { ++ usb6fire_pcm_buffers_destroy(rt); + kfree(rt); + snd_printk(KERN_ERR PREFIX + "error preallocating pcm buffers.\n"); +@@ -671,6 +707,9 @@ void usb6fire_pcm_abort(struct sfire_chi + + void usb6fire_pcm_destroy(struct sfire_chip *chip) + { +- kfree(chip->pcm); ++ struct pcm_runtime *rt = chip->pcm; ++ ++ usb6fire_pcm_buffers_destroy(rt); ++ kfree(rt); + chip->pcm = NULL; + } +--- a/sound/usb/6fire/pcm.h ++++ b/sound/usb/6fire/pcm.h +@@ -32,7 +32,7 @@ struct pcm_urb { + struct urb instance; + struct usb_iso_packet_descriptor packets[PCM_N_PACKETS_PER_URB]; + /* END DO NOT SEPARATE */ +- u8 buffer[PCM_N_PACKETS_PER_URB * PCM_MAX_PACKET_SIZE]; ++ u8 *buffer; + + struct pcm_urb *peer; + }; diff --git a/queue-3.10/alsa-hda-add-a-fixup-for-gateway-lt27.patch b/queue-3.10/alsa-hda-add-a-fixup-for-gateway-lt27.patch new file mode 100644 index 00000000000..ac8d9010a07 --- /dev/null +++ b/queue-3.10/alsa-hda-add-a-fixup-for-gateway-lt27.patch @@ -0,0 +1,29 @@ +From 1801928e0f99d94c55e33c584c5eb2ff5e246ee6 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 16 Aug 2013 08:17:05 +0200 +Subject: ALSA: hda - Add a fixup for Gateway LT27 + +From: Takashi Iwai + +commit 1801928e0f99d94c55e33c584c5eb2ff5e246ee6 upstream. + +Gateway LT27 needs a fixup for the inverted digital mic. + +Reported-by: "Nathanael D. Noblet" +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -4210,6 +4210,7 @@ static const struct snd_pci_quirk alc662 + SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), + SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE), + SND_PCI_QUIRK(0x1025, 0x0349, "eMachines eM250", ALC662_FIXUP_INV_DMIC), ++ SND_PCI_QUIRK(0x1025, 0x034a, "Gateway LT27", ALC662_FIXUP_INV_DMIC), + SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), + SND_PCI_QUIRK(0x1028, 0x05d8, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1028, 0x05db, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), diff --git a/queue-3.10/alsa-hda-add-pinfix-for-lg-lw25-laptop.patch b/queue-3.10/alsa-hda-add-pinfix-for-lg-lw25-laptop.patch new file mode 100644 index 00000000000..bd50b26534d --- /dev/null +++ b/queue-3.10/alsa-hda-add-pinfix-for-lg-lw25-laptop.patch @@ -0,0 +1,53 @@ +From db8a38e5063a4daf61252e65d47ab3495c705f4c Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 9 Aug 2013 12:34:42 +0200 +Subject: ALSA: hda - Add pinfix for LG LW25 laptop + +From: Takashi Iwai + +commit db8a38e5063a4daf61252e65d47ab3495c705f4c upstream. + +Correct the pins for a line-in and a headphone on LG LW25 laptop with +ALC880 codec. Other pins seem fine. + +Reported-and-tested-by: Joonas Saarinen +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -1027,6 +1027,7 @@ enum { + ALC880_FIXUP_GPIO2, + ALC880_FIXUP_MEDION_RIM, + ALC880_FIXUP_LG, ++ ALC880_FIXUP_LG_LW25, + ALC880_FIXUP_W810, + ALC880_FIXUP_EAPD_COEF, + ALC880_FIXUP_TCL_S700, +@@ -1085,6 +1086,14 @@ static const struct hda_fixup alc880_fix + { } + } + }, ++ [ALC880_FIXUP_LG_LW25] = { ++ .type = HDA_FIXUP_PINS, ++ .v.pins = (const struct hda_pintbl[]) { ++ { 0x1a, 0x0181344f }, /* line-in */ ++ { 0x1b, 0x0321403f }, /* headphone */ ++ { } ++ } ++ }, + [ALC880_FIXUP_W810] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { +@@ -1337,6 +1346,7 @@ static const struct snd_pci_quirk alc880 + SND_PCI_QUIRK(0x1854, 0x003b, "LG", ALC880_FIXUP_LG), + SND_PCI_QUIRK(0x1854, 0x005f, "LG P1 Express", ALC880_FIXUP_LG), + SND_PCI_QUIRK(0x1854, 0x0068, "LG w1", ALC880_FIXUP_LG), ++ SND_PCI_QUIRK(0x1854, 0x0077, "LG LW25", ALC880_FIXUP_LG_LW25), + SND_PCI_QUIRK(0x19db, 0x4188, "TCL S700", ALC880_FIXUP_TCL_S700), + + /* Below is the copied entries from alc880_quirks.c. diff --git a/queue-3.10/alsa-hda-fix-missing-mute-controls-for-cx5051.patch b/queue-3.10/alsa-hda-fix-missing-mute-controls-for-cx5051.patch new file mode 100644 index 00000000000..5da42468a92 --- /dev/null +++ b/queue-3.10/alsa-hda-fix-missing-mute-controls-for-cx5051.patch @@ -0,0 +1,54 @@ +From f69910ddbd8c29391958cf82b598dd78fe5c8640 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Thu, 8 Aug 2013 09:32:37 +0200 +Subject: ALSA: hda - Fix missing mute controls for CX5051 + +From: Takashi Iwai + +commit f69910ddbd8c29391958cf82b598dd78fe5c8640 upstream. + +We've added a fake mute control (setting the amp volume to zero) for +CX5051 at commit [3868137e: ALSA: hda - Add a fake mute feature], but +this feature was overlooked in the generic parser implementation. Now +the driver lacks of mute controls on these codecs. + +The fix is just to check both AC_AMPCAP_MUTE and AC_AMPCAP_MIN_MUTE +bits in each place checking the amp capabilities. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59001 +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_generic.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/sound/pci/hda/hda_generic.c ++++ b/sound/pci/hda/hda_generic.c +@@ -519,7 +519,7 @@ static bool same_amp_caps(struct hda_cod + } + + #define nid_has_mute(codec, nid, dir) \ +- check_amp_caps(codec, nid, dir, AC_AMPCAP_MUTE) ++ check_amp_caps(codec, nid, dir, (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)) + #define nid_has_volume(codec, nid, dir) \ + check_amp_caps(codec, nid, dir, AC_AMPCAP_NUM_STEPS) + +@@ -621,7 +621,7 @@ static int get_amp_val_to_activate(struc + if (enable) + val = (caps & AC_AMPCAP_OFFSET) >> AC_AMPCAP_OFFSET_SHIFT; + } +- if (caps & AC_AMPCAP_MUTE) { ++ if (caps & (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)) { + if (!enable) + val |= HDA_AMP_MUTE; + } +@@ -645,7 +645,7 @@ static unsigned int get_amp_mask_to_modi + { + unsigned int mask = 0xff; + +- if (caps & AC_AMPCAP_MUTE) { ++ if (caps & (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)) { + if (is_ctl_associated(codec, nid, dir, idx, NID_PATH_MUTE_CTL)) + mask &= ~0x80; + } diff --git a/queue-3.10/alsa-usb-audio-fix-invalid-volume-resolution-for-logitech-hd-webcam-c525.patch b/queue-3.10/alsa-usb-audio-fix-invalid-volume-resolution-for-logitech-hd-webcam-c525.patch new file mode 100644 index 00000000000..58145886861 --- /dev/null +++ b/queue-3.10/alsa-usb-audio-fix-invalid-volume-resolution-for-logitech-hd-webcam-c525.patch @@ -0,0 +1,34 @@ +From 140d37de62ffe8405282a1d6498f3b4099006384 Mon Sep 17 00:00:00 2001 +From: "Maksim A. Boyko" +Date: Sat, 10 Aug 2013 12:20:02 +0400 +Subject: ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam C525 + +From: "Maksim A. Boyko" + +commit 140d37de62ffe8405282a1d6498f3b4099006384 upstream. + +Add the volume control quirk for avoiding the kernel warning +for the Logitech HD Webcam C525 +as in the similar commit 36691e1be6ec551eef4a5225f126a281f8c051c2 +for the Logitech HD Webcam C310. + +Reported-by: Maksim Boyko +Tested-by: Maksim Boyko +Signed-off-by: Maksim Boyko +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/mixer.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/usb/mixer.c ++++ b/sound/usb/mixer.c +@@ -888,6 +888,7 @@ static void volume_control_quirks(struct + case USB_ID(0x046d, 0x081b): /* HD Webcam c310 */ + case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */ + case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */ ++ case USB_ID(0x046d, 0x0826): /* HD Webcam c525 */ + case USB_ID(0x046d, 0x0991): + /* Most audio usb devices lie about volume resolution. + * Most Logitech webcams have res = 384. diff --git a/queue-3.10/asoc-cs42l52-reorder-min-max-and-update-to-sx_tlv-for-beep-volume.patch b/queue-3.10/asoc-cs42l52-reorder-min-max-and-update-to-sx_tlv-for-beep-volume.patch new file mode 100644 index 00000000000..14a2ef42e4f --- /dev/null +++ b/queue-3.10/asoc-cs42l52-reorder-min-max-and-update-to-sx_tlv-for-beep-volume.patch @@ -0,0 +1,31 @@ +From e2c98a8bba958045bde861fe1d66be54315c7790 Mon Sep 17 00:00:00 2001 +From: Brian Austin +Date: Tue, 6 Aug 2013 12:57:21 -0500 +Subject: ASoC: cs42l52: Reorder Min/Max and update to SX_TLV for Beep Volume + +From: Brian Austin + +commit e2c98a8bba958045bde861fe1d66be54315c7790 upstream. + +Beep Volume Min/Max was backwards. +Change to SOC_SONGLE_SX_TLV for correct volume representation + +Signed-off-by: Brian Austin +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/cs42l52.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/codecs/cs42l52.c ++++ b/sound/soc/codecs/cs42l52.c +@@ -451,7 +451,7 @@ static const struct snd_kcontrol_new cs4 + SOC_ENUM("Beep Pitch", beep_pitch_enum), + SOC_ENUM("Beep on Time", beep_ontime_enum), + SOC_ENUM("Beep off Time", beep_offtime_enum), +- SOC_SINGLE_TLV("Beep Volume", CS42L52_BEEP_VOL, 0, 0x1f, 0x07, hl_tlv), ++ SOC_SINGLE_SX_TLV("Beep Volume", CS42L52_BEEP_VOL, 0, 0x07, 0x1f, hl_tlv), + SOC_SINGLE("Beep Mixer Switch", CS42L52_BEEP_TONE_CTL, 5, 1, 1), + SOC_ENUM("Beep Treble Corner Freq", beep_treble_enum), + SOC_ENUM("Beep Bass Corner Freq", beep_bass_enum), diff --git a/queue-3.10/asoc-dapm-fix-empty-list-check-in-dapm_new_mux.patch b/queue-3.10/asoc-dapm-fix-empty-list-check-in-dapm_new_mux.patch new file mode 100644 index 00000000000..a1e6a4929be --- /dev/null +++ b/queue-3.10/asoc-dapm-fix-empty-list-check-in-dapm_new_mux.patch @@ -0,0 +1,45 @@ +From fe581391147cb3d738d961d0f1233d91a9e1113c Mon Sep 17 00:00:00 2001 +From: Lars-Peter Clausen +Date: Thu, 1 Aug 2013 18:30:38 +0200 +Subject: ASoC: dapm: Fix empty list check in dapm_new_mux() + +From: Lars-Peter Clausen + +commit fe581391147cb3d738d961d0f1233d91a9e1113c upstream. + +list_first_entry() will always return a valid pointer, even if the list is +empty. So the check whether path is NULL will always be false. So we end up +calling dapm_create_or_share_mixmux_kcontrol() with a path struct that points +right in the middle of the widget struct and by trying to modify the path the +widgets memory will become corrupted. Fix this by using list_emtpy() to check if +the widget doesn't have any paths. + +Signed-off-by: Lars-Peter Clausen +Tested-by: Stephen Warren +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/soc-dapm.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/sound/soc/soc-dapm.c ++++ b/sound/soc/soc-dapm.c +@@ -682,13 +682,14 @@ static int dapm_new_mux(struct snd_soc_d + return -EINVAL; + } + +- path = list_first_entry(&w->sources, struct snd_soc_dapm_path, +- list_sink); +- if (!path) { ++ if (list_empty(&w->sources)) { + dev_err(dapm->dev, "ASoC: mux %s has no paths\n", w->name); + return -EINVAL; + } + ++ path = list_first_entry(&w->sources, struct snd_soc_dapm_path, ++ list_sink); ++ + ret = dapm_create_or_share_mixmux_kcontrol(w, 0, path); + if (ret < 0) + return ret; diff --git a/queue-3.10/asoc-tegra-fix-tegra30-i2s-capture-parameter-setup.patch b/queue-3.10/asoc-tegra-fix-tegra30-i2s-capture-parameter-setup.patch new file mode 100644 index 00000000000..8e0b89d92c5 --- /dev/null +++ b/queue-3.10/asoc-tegra-fix-tegra30-i2s-capture-parameter-setup.patch @@ -0,0 +1,37 @@ +From c90c0d7a96e634a73ef1580f1d20993606545647 Mon Sep 17 00:00:00 2001 +From: Stephen Warren +Date: Wed, 14 Aug 2013 14:24:16 -0600 +Subject: ASoC: tegra: fix Tegra30 I2S capture parameter setup + +From: Stephen Warren + +commit c90c0d7a96e634a73ef1580f1d20993606545647 upstream. + +The Tegra30 I2S driver was writing the AHUB interface parameters to the +playback path register rather than the capture path register. This +caused the capture parameters not to be configured at all, so if +capturing using non-HW-default parameters (e.g. 16-bit stereo rather +than 8-bit mono) the audio would be corrupted. + +With this fixed, audio capture from an analog microphone works correctly +on the Cardhu board. + +Signed-off-by: Stephen Warren +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/tegra/tegra30_i2s.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/tegra/tegra30_i2s.c ++++ b/sound/soc/tegra/tegra30_i2s.c +@@ -228,7 +228,7 @@ static int tegra30_i2s_hw_params(struct + reg = TEGRA30_I2S_CIF_RX_CTRL; + } else { + val |= TEGRA30_AUDIOCIF_CTRL_DIRECTION_TX; +- reg = TEGRA30_I2S_CIF_RX_CTRL; ++ reg = TEGRA30_I2S_CIF_TX_CTRL; + } + + regmap_write(i2s->regmap, reg, val); diff --git a/queue-3.10/cfg80211-fix-p2p-go-interface-teardown.patch b/queue-3.10/cfg80211-fix-p2p-go-interface-teardown.patch new file mode 100644 index 00000000000..408fe2b44c1 --- /dev/null +++ b/queue-3.10/cfg80211-fix-p2p-go-interface-teardown.patch @@ -0,0 +1,35 @@ +From 74418edec915d0f446debebde08d170c7b8ba0ee Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Tue, 30 Jul 2013 10:11:25 +0200 +Subject: cfg80211: fix P2P GO interface teardown + +From: Johannes Berg + +commit 74418edec915d0f446debebde08d170c7b8ba0ee upstream. + +When a P2P GO interface goes down, cfg80211 doesn't properly +tear it down, leading to warnings later. Add the GO interface +type to the enumeration to tear it down like AP interfaces. +Otherwise, we leave it pending and mac80211's state can get +very confused, leading to warnings later. + +Reported-by: Ilan Peer +Tested-by: Ilan Peer +Reviewed-by: Emmanuel Grumbach +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/wireless/core.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/net/wireless/core.c ++++ b/net/wireless/core.c +@@ -876,6 +876,7 @@ void cfg80211_leave(struct cfg80211_regi + cfg80211_leave_mesh(rdev, dev); + break; + case NL80211_IFTYPE_AP: ++ case NL80211_IFTYPE_P2P_GO: + cfg80211_stop_ap(rdev, dev); + break; + default: diff --git a/queue-3.10/nl80211-fix-another-nl80211_fam.attrbuf-race.patch b/queue-3.10/nl80211-fix-another-nl80211_fam.attrbuf-race.patch new file mode 100644 index 00000000000..a9d130b7049 --- /dev/null +++ b/queue-3.10/nl80211-fix-another-nl80211_fam.attrbuf-race.patch @@ -0,0 +1,41 @@ +From c319d50bfcf678c2857038276d9fab3c6646f3bf Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Tue, 30 Jul 2013 22:34:28 +0200 +Subject: nl80211: fix another nl80211_fam.attrbuf race + +From: Johannes Berg + +commit c319d50bfcf678c2857038276d9fab3c6646f3bf upstream. + +This is similar to the race Linus had reported, but in this case +it's an older bug: nl80211_prepare_wdev_dump() uses the wiphy +index in cb->args[0] as it is and thus parses the message over +and over again instead of just once because 0 is the first valid +wiphy index. Similar code in nl80211_testmode_dump() correctly +offsets the wiphy_index by 1, do that here as well. + +Reported-by: Ben Hutchings +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/wireless/nl80211.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -471,10 +471,12 @@ static int nl80211_prepare_wdev_dump(str + goto out_unlock; + } + *rdev = wiphy_to_dev((*wdev)->wiphy); +- cb->args[0] = (*rdev)->wiphy_idx; ++ /* 0 is the first index - add 1 to parse only once */ ++ cb->args[0] = (*rdev)->wiphy_idx + 1; + cb->args[1] = (*wdev)->identifier; + } else { +- struct wiphy *wiphy = wiphy_idx_to_wiphy(cb->args[0]); ++ /* subtract the 1 again here */ ++ struct wiphy *wiphy = wiphy_idx_to_wiphy(cb->args[0] - 1); + struct wireless_dev *tmp; + + if (!wiphy) { diff --git a/queue-3.10/series b/queue-3.10/series index 02891a15a80..811748c1566 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -16,3 +16,14 @@ mac80211-fix-infinite-loop-in-ieee80211_determine_chantype.patch mac80211-continue-using-disabled-channels-while-connected.patch can-pcan_usb-fix-wrong-memcpy-bytes-length.patch genetlink-fix-family-dump-race.patch +cfg80211-fix-p2p-go-interface-teardown.patch +asoc-dapm-fix-empty-list-check-in-dapm_new_mux.patch +asoc-cs42l52-reorder-min-max-and-update-to-sx_tlv-for-beep-volume.patch +asoc-tegra-fix-tegra30-i2s-capture-parameter-setup.patch +alsa-usb-audio-fix-invalid-volume-resolution-for-logitech-hd-webcam-c525.patch +alsa-6fire-make-buffers-dma-able-pcm.patch +alsa-6fire-make-buffers-dma-able-midi.patch +alsa-hda-fix-missing-mute-controls-for-cx5051.patch +alsa-hda-add-pinfix-for-lg-lw25-laptop.patch +alsa-hda-add-a-fixup-for-gateway-lt27.patch +nl80211-fix-another-nl80211_fam.attrbuf-race.patch -- 2.47.3