1. 07 12月, 2016 1 次提交
  2. 02 12月, 2016 3 次提交
  3. 01 12月, 2016 2 次提交
    • T
      ASoC: intel: Fix crash at suspend/resume without card registration · 2fc995a8
      Takashi Iwai 提交于
      When ASoC Intel SST Medfield driver is probed but without codec / card
      assigned, it causes an Oops and freezes the kernel at suspend/resume,
      
       PM: Suspending system (freeze)
       Suspending console(s) (use no_console_suspend to debug)
       BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
       IP: [<ffffffffc09d9409>] sst_soc_prepare+0x19/0xa0 [snd_soc_sst_mfld_platform]
       Oops: 0000 [#1] PREEMPT SMP
       CPU: 0 PID: 1552 Comm: systemd-sleep Tainted: G W 4.9.0-rc6-1.g5f5c2ad-default #1
       Call Trace:
        [<ffffffffb45318f9>] dpm_prepare+0x209/0x460
        [<ffffffffb4531b61>] dpm_suspend_start+0x11/0x60
        [<ffffffffb40d3cc2>] suspend_devices_and_enter+0xb2/0x710
        [<ffffffffb40d462e>] pm_suspend+0x30e/0x390
        [<ffffffffb40d2eba>] state_store+0x8a/0x90
        [<ffffffffb43c670f>] kobj_attr_store+0xf/0x20
        [<ffffffffb42b0d97>] sysfs_kf_write+0x37/0x40
        [<ffffffffb42b02bc>] kernfs_fop_write+0x11c/0x1b0
        [<ffffffffb422be68>] __vfs_write+0x28/0x140
        [<ffffffffb43728a8>] ? apparmor_file_permission+0x18/0x20
        [<ffffffffb433b2ab>] ? security_file_permission+0x3b/0xc0
        [<ffffffffb422d095>] vfs_write+0xb5/0x1a0
        [<ffffffffb422e3d6>] SyS_write+0x46/0xa0
        [<ffffffffb4719fbb>] entry_SYSCALL_64_fastpath+0x1e/0xad
      
      Add proper NULL checks in the PM code of mdfld driver.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Acked-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      Cc: <stable@vger.kernel.org>
      2fc995a8
    • T
      ASoC: Intel: Add missing 10EC5672 ACPI ID matching for Cherry Trail · 6648eb86
      Takashi Iwai 提交于
      Add the missing ACPI ID 10EC5672 for Cherry Trail, which bounds with
      cht-bsw-rt5672 driver.  This combination was found on Dell Wyse 3040.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Acked-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      6648eb86
  4. 29 11月, 2016 1 次提交
    • T
      dbri: Fix compiler warning · 16f46050
      Tushar Dave 提交于
      dbri uses 'u32' for dma handle while invoking kernel DMA APIs,
      instead of using dma_addr_t. This hasn't caused any 'incompatible
      pointer type' warning on SPARC because until now dma_addr_t is of
      type u32. However, recent changes in SPARC ATU (iommu) enabled 64bit
      DMA and therefore dma_addr_t became of type u64. This makes
      'incompatible pointer type' warnings inevitable.
      
      e.g.
      sound/sparc/dbri.c: In function ‘snd_dbri_create’:
      sound/sparc/dbri.c:2538: warning: passing argument 3 of ‘dma_zalloc_coherent’ from incompatible pointer type
      ./include/linux/dma-mapping.h:608: note: expected ‘dma_addr_t *’ but argument is of type ‘u32 *’
      
      For the record, dbri(sbus) driver never executes on sun4v. Therefore
      even though 64bit DMA is enabled on SPARC, dbri continues to use
      legacy iommu that guarantees DMA address is always in 32bit range.
      
      This patch resolves above compiler warning.
      Signed-off-by: NTushar Dave <tushar.n.dave@oracle.com>
      Reviewed-by: Nthomas tai <thomas.tai@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      16f46050
  5. 23 11月, 2016 1 次提交
  6. 15 11月, 2016 2 次提交
    • T
      ALSA: usb-audio: Fix use-after-free of usb_device at disconnect · 6ff1a253
      Takashi Iwai 提交于
      The usb-audio driver implements the deferred device disconnection for
      the device in use.  In this mode, the disconnection callback returns
      immediately while the actual ALSA card object removal happens later
      when all files get closed.  As Shuah reported, this code flow,
      however, leads to a use-after-free, detected by KASAN:
      
       BUG: KASAN: use-after-free in snd_usb_audio_free+0x134/0x160 [snd_usb_audio] at addr ffff8801c863ce10
       Write of size 8 by task pulseaudio/2244
       Call Trace:
        [<ffffffff81b31473>] dump_stack+0x67/0x94
        [<ffffffff81564ef1>] kasan_object_err+0x21/0x70
        [<ffffffff8156518a>] kasan_report_error+0x1fa/0x4e0
        [<ffffffff81564ad7>] ? kasan_slab_free+0x87/0xb0
        [<ffffffff81565733>] __asan_report_store8_noabort+0x43/0x50
        [<ffffffffa0fc0f54>] ? snd_usb_audio_free+0x134/0x160 [snd_usb_audio]
        [<ffffffffa0fc0f54>] snd_usb_audio_free+0x134/0x160 [snd_usb_audio]
        [<ffffffffa0fc0fb1>] snd_usb_audio_dev_free+0x31/0x40 [snd_usb_audio]
        [<ffffffff8243c78a>] __snd_device_free+0x12a/0x210
        [<ffffffff8243d1f5>] snd_device_free_all+0x85/0xd0
        [<ffffffff8242cae4>] release_card_device+0x34/0x130
        [<ffffffff81ef1846>] device_release+0x76/0x1e0
        [<ffffffff81b37ad7>] kobject_release+0x107/0x370
        .....
       Object at ffff8801c863cc80, in cache kmalloc-2048 size: 2048
       Allocated:
        [<ffffffff810804eb>] save_stack_trace+0x2b/0x50
        [<ffffffff81564296>] save_stack+0x46/0xd0
        [<ffffffff8156450d>] kasan_kmalloc+0xad/0xe0
        [<ffffffff81560d1a>] kmem_cache_alloc_trace+0xfa/0x240
        [<ffffffff8214ea47>] usb_alloc_dev+0x57/0xc90
        [<ffffffff8216349d>] hub_event+0xf1d/0x35f0
        ....
       Freed:
        [<ffffffff810804eb>] save_stack_trace+0x2b/0x50
        [<ffffffff81564296>] save_stack+0x46/0xd0
        [<ffffffff81564ac1>] kasan_slab_free+0x71/0xb0
        [<ffffffff81560929>] kfree+0xd9/0x280
        [<ffffffff8214de6e>] usb_release_dev+0xde/0x110
        [<ffffffff81ef1846>] device_release+0x76/0x1e0
        ....
      
      It's the code trying to clear drvdata of the assigned usb_device where
      the usb_device itself was already released in usb_release_dev() after
      the disconnect callback.
      
      This patch fixes it by checking whether the code path is via the
      disconnect callback, i.e. chip->shutdown flag is set.
      
      Fixes: 79289e24 ('ALSA: usb-audio: Refer to chip->usb_id for quirks...')
      Reported-and-tested-by: NShuah Khan <shuahkh@osg.samsung.com>
      Cc: <stable@vger.kernel.org> # v4.6+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6ff1a253
    • L
      ASoC: lpass-platform: fix uninitialized variable · ee2bd216
      Linus Torvalds 提交于
      In commit 022d00ee ("ASoC: lpass-platform: Fix broken pcm data
      usage") the stream specific information initialization was broken, with
      the dma channel information not being initialized if there was no
      alloc_dma_channel() helper function.
      
      Before that, the DMA channel number was implicitly initialized to zero
      because the backing store was allocated with devm_kzalloc().  When the
      init code was rewritten, that implicit initialization was lost, and gcc
      rightfully complains about an uninitialized variable being used.
      
      Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Cc: Mark Brown <broonie@kernel.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ee2bd216
  7. 11 11月, 2016 1 次提交
    • T
      ALSA: hda - Fix mic regression by ASRock mobo fixup · 9a254191
      Takashi Iwai 提交于
      The commit [1a3f0991: ALSA: hda - Fix surround output pins for
      ASRock B150M mobo] introduced a fixup of pin configs for ASRock
      mobos to fix the surround outputs.  However, this overrides the pin
      configs of the mic pins as if they are outputs-only, effectively
      disabling the mic inputs.  Of course, it's a regression wrt mic
      functionality.
      
      Actually the pins 0x18 and 0x1a don't need to be changed; we just need
      to disable the bogus pins 0x14 and 0x15.  Then the auto-parser will
      pick up mic pins as switchable and assign the surround outputs there.
      
      This patch removes the incorrect pin overrides of NID 0x18 and 0x1a
      from the ASRock fixup.
      
      Fixes: 1a3f0991 ('ALSA: hda - Fix surround output pins for ASRock...')
      Reported-and-tested-by: NVitor Antunes <vitor.hda@gmail.com>
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=187431
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9a254191
  8. 10 11月, 2016 1 次提交
  9. 09 11月, 2016 2 次提交
  10. 08 11月, 2016 2 次提交
    • T
      ALSA: info: Return error for invalid read/write · 6809cd68
      Takashi Iwai 提交于
      Currently the ALSA proc handler allows read or write even if the proc
      file were write-only or read-only.  It's mostly harmless, does thing
      but allocating memory and ignores the input/output.  But it doesn't
      tell user about the invalid use, and it's confusing and inconsistent
      in comparison with other proc files.
      
      This patch adds some sanity checks and let the proc handler returning
      an -EIO error when the invalid read/write is performed.
      
      Cc: <stable@vger.kernel.org> # v4.2+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6809cd68
    • T
      ALSA: info: Limit the proc text input size · 027a9fe6
      Takashi Iwai 提交于
      The ALSA proc handler allows currently the write in the unlimited size
      until kmalloc() fails.  But basically the write is supposed to be only
      for small inputs, mostly for one line inputs, and we don't have to
      handle too large sizes at all.  Since the kmalloc error results in the
      kernel warning, it's better to limit the size beforehand.
      
      This patch adds the limit of 16kB, which must be large enough for the
      currently existing code.
      
      Cc: stable@vger.kernel.org # v4.2+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      027a9fe6
  11. 02 11月, 2016 4 次提交
    • C
      ASoC: dapm: Implement stereo mixer control support · e7aa450f
      Chen-Yu Tsai 提交于
      While DAPM is mono or single channel, its controls can be shared between
      widgets, such as sharing one stereo mixer control between the left and
      right channel widgets. An example such as the following routes
      
          [Line In Left]----------<Line In Playback Switch>-------[Left Mixer]
                                                ^
                ^           ^                   |                      ^
             (inputs)    (paths)   <shared stereo mixer control>   (outputs)
                v           v                   |                      v
                                                v
          [Line In Right]---------<Line In Playback Switch>-------[Right Mixer]
      
      where we have separate widgets and paths for the left and right channels
      from "Line In" to "Mixer", but a shared stereo mixer control for the
      2 paths.
      
      This patch introduces support for such shared mixer controls, allowing
      more than 1 path to be attached to a single stereo control, and being
      able to control left/right channels independently.
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      e7aa450f
    • C
      ASoC: dapm: Support second register for DAPM control updates · e411b0b5
      Chen-Yu Tsai 提交于
      To support double channel shared controls split across 2 registers, one
      for each channel, we must be able to update both registers together.
      
      Add a second set of register fields to struct snd_soc_dapm_update, and
      update the DAPM control writeback (put) callbacks to support this.
      
      For codecs that use custom events which call into DAPM to do updates,
      also clear struct snd_soc_dapm_update before using it, so the second
      set of fields remains clean.
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      e411b0b5
    • S
      ASoC: samsung: spdif: Fix DMA filter initialization · a4513320
      Sylwester Nawrocki 提交于
      This patch fixes issues introduced in commit 73f5dfc6
      "ASoC: samsung: get access to DMA engine early to defer probe properly"
      and indicated by a following compilation warning:
      
        CC [M]  sound/soc/samsung/spdif.o
      sound/soc/samsung/spdif.c: In function ‘spdif_probe’:
      sound/soc/samsung/spdif.c:419:6: warning: ‘filter’ may be used uninitialized
      in this function [-Wuninitialized]
      Signed-off-by: NSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      a4513320
    • C
      ASoC: sun4i-codec: Enable bus clock after getting GPIO · 3716a891
      Chen-Yu Tsai 提交于
      In the current probe function the GPIO is acquired after the codec's
      bus clock is enabled. However if it fails to acquire the GPIO due to
      a deferred probe, it does not disable the bus clock before bailing out.
      This would result in the clock being enabled multiple times.
      
      Move the code that enables the bus clock after the part that gets the
      GPIO, maintaining a separation between resource acquisition and device
      enablement in the probe function.
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      3716a891
  12. 01 11月, 2016 2 次提交
  13. 31 10月, 2016 1 次提交
    • C
      ASoC: sun4i-codec: return error code instead of NULL when create_card fails · 85915b63
      Chen-Yu Tsai 提交于
      When sun4i_codec_create_card fails, we do not assign a proper error
      code to the return value. The return value would be 0 from the previous
      function call, or we would have bailed out sooner. This would confuse
      the driver core into thinking the device probe succeeded, when in fact
      it didn't, leaving various devres based resources lingering.
      
      Make the create_card function pass back a meaningful error code, and
      assign it to the return value.
      
      Fixes: 45fb6b6f ("ASoC: sunxi: add support for the on-chip codec on
      		      early Allwinner SoCs")
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      85915b63
  14. 29 10月, 2016 4 次提交
  15. 27 10月, 2016 1 次提交
  16. 26 10月, 2016 2 次提交
  17. 25 10月, 2016 4 次提交
  18. 24 10月, 2016 2 次提交
  19. 20 10月, 2016 1 次提交
  20. 18 10月, 2016 3 次提交