10 Oct, 2018

1 commit

  • commit 709ae62e8e6d9ac4df7dadb3b8ae432675c45ef9 upstream.

    The issue is the same as commit dd9aa335c880 ("ALSA: hda/realtek - Can't
    adjust speaker's volume on a Dell AIO"), the output requires to connect
    to a node with Amp-out capability.

    Applying the same fixup ALC298_FIXUP_SPK_VOLUME can fix the issue.

    BugLink: https://bugs.launchpad.net/bugs/1775068
    Signed-off-by: Kai-Heng Feng
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kai-Heng Feng
     

04 Oct, 2018

1 commit

  • [ Upstream commit 1adca4b0cd65c14cb8b8c9c257720385869c3d5f ]

    This patch can make audio controller in AMD Raven Ridge gets runtime
    suspended to D3, to save ~1W power when it's not in use.

    Cc: Vijendar Mukunda
    Signed-off-by: Kai-Heng Feng
    Signed-off-by: Takashi Iwai
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Kai-Heng Feng
     

29 Sep, 2018

1 commit

  • commit 49434c6c575d2008c0abbc93e615019f39e01252 upstream.

    snd_emu10k1_fx8010_ioctl(SNDRV_EMU10K1_IOCTL_INFO) allocates
    memory using kmalloc() and partially fills it by calling
    snd_emu10k1_fx8010_info() before returning the resulting
    structure to userspace, leaving uninitialized holes. Let's
    just use kzalloc() here.

    BugLink: http://blog.infosectcbr.com.au/2018/09/linux-kernel-infoleaks.html
    Signed-off-by: Willy Tarreau
    Cc: Jann Horn
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Willy Tarreau
     

20 Sep, 2018

1 commit

  • commit 16037643969e095509cd8446a3f8e406a6dc3a2c upstream.

    On AMD/ATI controllers, the HD-audio controller driver allows a bus
    reset upon the error recovery, and its procedure includes the
    cancellation of pending jack polling work as found in
    snd_hda_bus_codec_reset(). This works usually fine, but it becomes a
    problem when the reset happens from the jack poll work itself; then
    calling cancel_work_sync() from the work being processed tries to wait
    the finish endlessly.

    As a workaround, this patch adds the check of current_work() and
    applies the cancel_work_sync() only when it's not from the
    jackpoll_work.

    This doesn't fix the root cause of the reported error below, but at
    least, it eases the unexpected stall of the whole system.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200937
    Cc:
    Cc: Lukas Wunner
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

22 Aug, 2018

5 commits

  • commit 8e82a728792bf66b9f0a29c9d4c4b0630f7b9c79 upstream.

    I added the subsys product-id for the HDMI HDA device rather then for
    the PCH one, this commit fixes this.

    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1525104
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     
  • commit 69756930f2de0457d51db7d505a1e4f40e9fd116 upstream.

    One place in cs5535audio_build_dma_packets() does an extra conversion
    via cpu_to_le32(); namely jmpprd_addr is passed to setup_prd() ops,
    which writes the value via cs_writel(). That is, the callback does
    the conversion by itself, and we don't need to convert beforehand.

    This patch fixes that bogus conversion.

    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit fff71a4c050ba46e305d910c837b99ba1728135e upstream.

    The endian conversions used in vx2_dma_read() and vx2_dma_write() are
    superfluous and even wrong on big-endian machines, as inl() and outl()
    already do conversions. Kill them.

    Spotted by sparse, a warning like:
    sound/pci/vx222/vx222_ops.c:278:30: warning: incorrect type in argument 1 (different base types)

    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit d77a4b4a5b0b2ebcbc9840995d91311ef28302ab upstream.

    As an equivalent codec with CX20724,
    CX8200 is also subject to the reboot bug.

    Late 2017 and 2018 LG Gram and some HP Spectre laptops are known victims
    to this issue, causing extremely loud noises upon reboot.

    Now that we know that this bug is subject to multiple codecs,
    fix the comment as well.

    Signed-off-by: Park Ju Hyung
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Park Ju Hyung
     
  • commit f59cf9a0551dd954ad8b752461cf19d9789f4b1d upstream.

    On rare occasions, we are still noticing that the internal speaker
    spitting out spurious noises even after adding the problematic codec
    to the list.

    Adding a 10ms artificial delay before rebooting fixes the issue entirely.

    Patch for Realtek codecs also adds the same amount of delay after
    entering D3.

    Signed-off-by: Park Ju Hyung
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Park Ju Hyung
     

03 Aug, 2018

4 commits

  • [ Upstream commit 8e142e9e628975b0dddd05cf1b095331dff6e2de ]

    DECLARE_TLV_DB_SCALE (alias of SNDRV_CTL_TLVD_DECLARE_DB_SCALE) is used but
    tlv.h is not included. This causes build failure when local macro is
    defined by comment-out.

    This commit fixes the bug. At the same time, the alias macro is replaced
    with a destination macro added at a commit 46e860f76804 ("ALSA: rename
    TLV-related macros so that they're friendly to user applications")

    Reported-by: Connor McAdams
    Fixes: 44f0c9782cc6 ('ALSA: hda/ca0132: Add tuning controls')
    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Takashi Sakamoto
     
  • [ Upstream commit 11d42c81036324697d367600bfc16f6dd37636fd ]

    The error messages at sanity checks of memory pages tend to repeat too
    many times once when it hits, and without the rate limit, it may flood
    and become unreadable. Replace such messages with the *_ratelimited()
    variant.

    Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1093027
    Signed-off-by: Takashi Iwai
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • [ Upstream commit ef1ffbe7889e99f5b5cccb41c89e5c94f50f3218 ]

    When snd_ctl_add fails, the lack of error-handling code may
    cause unexpected results.

    This patch adds error-handling code after calling snd_ctl_add.

    Signed-off-by: Zhouyang Jia
    Acked-by: Andy Shevchenko
    Signed-off-by: Takashi Iwai
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Zhouyang Jia
     
  • [ Upstream commit 6d531e7b972cb62ded011c2dfcc2d9f72ea6c421 ]

    When snd_ctl_add fails, the lack of error-handling code may
    cause unexpected results.

    This patch adds error-handling code after calling snd_ctl_add.

    Signed-off-by: Zhouyang Jia
    Signed-off-by: Takashi Iwai
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Zhouyang Jia
     

25 Jul, 2018

2 commits


17 Jul, 2018

2 commits

  • commit aaa23f86001bdb82d2f937c5c7bce0a1e11a6c5b upstream.

    Obtaining the runtime pm wakeref can fail, especially in a hotplug
    scenario where i915.ko has been unloaded. If we do not catch the
    failure, we end up with an unbalanced pm.

    v2 additions by tiwai:
    hdmi_present_sense() checks the return value and handle only a
    negative error case and bails out only if it's really still suspended.
    Also, snd_hda_power_down() is called at the error path so that the
    refcount is balanced.

    Along with it, the spec->pcm_lock is taken outside
    hdmi_present_sense() in the caller side, so that it won't cause
    deadlock at reentrace via runtime resume.

    v3 fix by tiwai:
    Missing linux/pm_runtime.h is included.

    References: 222bde03881c ("ALSA: hda - Fix mutex deadlock at HDMI/DP hotplug")
    Signed-off-by: Chris Wilson
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Chris Wilson
     
  • commit c6b17f1020d956f4113d478cae6171b9093817ba upstream.

    We have two new lenovo desktop models which need to apply the fixup of
    ALC294_FIXUP_LENOVO_MIC_LOCATION, and they have the same pin cfg as
    the machine with subsystem id:0x17aa3136, now use the pincfg table
    to apply the fixup for them.

    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     

03 Jul, 2018

3 commits

  • commit e41fc8c5bd41b96bfae5ce4c66bee6edabc932e8 upstream.

    We have 3 more Lenovo machines, they all have 2 front mics on them,
    so they need the fixup to change the location for one of two mics.

    Among these 3 Lenovo machines, one of them has the same pin cfg as the
    machine with subid 0x17aa3138, so use the pin cfg table to apply fixup
    for them. The rest machines don't share the same pin cfg, so far use
    the subid to apply fixup for them.

    Fixes: a3dafb2200bf ("ALSA: hda/realtek - adjust the location of one mic")
    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     
  • commit 275ec0cb946cb75ac8977f662e608fce92f8b8a8 upstream.

    Fujitsu Seimens ESPRIMO Mobile U9210 requires the same fixup as H270
    for the correct pin configs.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200107
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit d5a6cabf02210b896a60eee7c04c670ee9ba6dca upstream.

    Some Lenovo laptops, e.g. Lenovo P50, showed the pop noise at resume
    or runtime resume. It turned out to be reduced by applying
    alc_no_shutup() just like TPT440 quirk does.

    Since there are many Lenovo models showing the same behavior, put this
    workaround in ALC269_FIXUP_THINKPAD_ACPI entry so that it's applied
    commonly to all such Lenovo machines.

    Reported-by: Hans de Goede
    Tested-by: Benjamin Berg
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

26 Jun, 2018

5 commits

  • commit 7eef32c1ef895a3a96463f9cbd04203007cd5555 upstream.

    This patch adds missing initialisation for HP 2013 UltraSlim Dock
    Line-In/Out PINs and activates keyboard mute/micmute leds
    for HP ProBook 640 G4

    Signed-off-by: Dennis Wassenberg
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Dennis Wassenberg
     
  • commit 2861751f67b91e1d24e68010ced96614fb3140f4 upstream.

    This patch adds missing initialisation for HP 2013 UltraSlim Dock
    Line-In/Out PINs and activates keyboard mute/micmute leds
    for HP EliteBook 830 G5

    Signed-off-by: Dennis Wassenberg
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Dennis Wassenberg
     
  • commit a3aa60d511746bd6c0d0366d4eb90a7998bcde8b upstream.

    When 'kzalloc()' fails in 'snd_hda_attach_pcm_stream()', a new pcm instance is
    created without setting its operators via 'snd_pcm_set_ops()'. Following
    operations on the new pcm instance can trigger kernel null pointer dereferences
    and cause kernel oops.

    This bug was found with my work on building a gray-box fault-injection tool for
    linux-kernel-module binaries. A kernel null pointer dereference was confirmed
    from line 'substream->ops->open()' in function 'snd_pcm_open_substream()' in
    file 'sound/core/pcm_native.c'.

    This patch fixes the bug by calling 'snd_device_free()' in the error handling
    path of 'kzalloc()', which removes the new pcm instance from the snd card before
    returns with an error code.

    Signed-off-by: Bo Chen
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Bo Chen
     
  • commit f16041df4c360eccacfe90f96673b37829e4c959 upstream.

    HP Z2 G4 requires the same workaround as other HP machines that have
    no mic-pin detection.

    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 986376b68dcc95bb7df60ad30c2353c1f7578fa5 upstream.

    We have several Lenovo AIOs like M810z, M820z and M920z, they have
    the same design for mic-mute hotkey and led and they use the same
    codec with the same pin configuration, so use the pin conf table to
    apply fix to all of them.

    Fixes: 29693efcea0f ("ALSA: hda - Fix micmute hotkey problem for a lenovo AIO machine")
    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     

23 May, 2018

1 commit


09 May, 2018

1 commit

  • commit 6a30abaa40b62aed46ef12ea4c16c48565bdb376 upstream.

    The commit c469652bb5e8 ("ALSA: hda - Use IS_REACHABLE() for
    dependency on input") simplified the dependencies with IS_REACHABLE()
    macro, but it broke due to its incorrect usage: it should have been
    IS_REACHABLE(CONFIG_INPUT) instead of IS_REACHABLE(INPUT).

    Fixes: c469652bb5e8 ("ALSA: hda - Use IS_REACHABLE() for dependency on input")
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

02 May, 2018

8 commits

  • commit 65811834ba56e9ed88117cf6c09880416c9951ab upstream.

    On this Lenovo ThinkCentre machine. There are two front mics,
    we change the location for one of them.

    Relation: f33f79f3d0e5 ("ALSA: hda/realtek - change the location for
    one of two front microphones")

    Signed-off-by: Kailang Yang
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit ab3b8e5159b5335c81ba2d09ee5054d4a1b5a7a6 upstream.

    Add ALC255 its own depop functions for alc_init and alc_shutup.
    Assign it to ALC256 usage.

    Signed-off-by: Kailang Yang
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit ea04a1dbf8b1d6af759d58e705636fde48583f8f upstream.

    Fill COEF to change EAPD to verb control.
    Assigned codec type.

    This is an additional fix over 92f974df3460 ("ALSA: hda/realtek - New
    vendor ID for ALC233").

    [ More notes:
    according to Kailang, the chip is 10ec:0235 bonding for ALC233b,
    which is equivalent with ALC255. It's only used for Lenovo.
    The chip needs no alc_process_coef_fw() for headset unlike ALC255. ]

    Signed-off-by: Kailang Yang
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit 69fa6f19b95597618ab30438a27b67ad93daa7c7 upstream.

    As recently Smatch suggested, one place in HD-audio hwdep ioctl codes
    may expand the array directly from the user-space value with
    speculation:
    sound/pci/hda/hda_local.h:467 get_wcaps() warn: potential spectre issue 'codec->wcaps'

    As get_wcaps() itself is a fairly frequently called inline function,
    and there is only one single call with a user-space value, we replace
    only the latter one to open-code locally with array_index_nospec()
    hardening in this patch.

    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit f526afcd8f71945c23ce581d7864ace93de8a4f7 upstream.

    As recently Smatch suggested, one place in RME9652 driver may expand
    the array directly from the user-space value with speculation:
    sound/pci/rme9652/rme9652.c:2074 snd_rme9652_channel_info() warn: potential spectre issue 'rme9652->channel_map' (local cap)

    This patch puts array_index_nospec() for hardening against it.

    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 10513142a7114d251670361ad40cba2c61403406 upstream.

    As recently Smatch suggested, a couple of places in HDSP MADI driver
    may expand the array directly from the user-space value with
    speculation:
    sound/pci/rme9652/hdspm.c:5717 snd_hdspm_channel_info() warn: potential spectre issue 'hdspm->channel_map_out' (local cap)
    sound/pci/rme9652/hdspm.c:5734 snd_hdspm_channel_info() warn: potential spectre issue 'hdspm->channel_map_in' (local cap)

    This patch puts array_index_nospec() for hardening against them.

    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit f9d94b57e30fd1575b4935045b32d738668aa74b upstream.

    As recently Smatch suggested, a couple of places in ASIHPI driver may
    expand the array directly from the user-space value with speculation:
    sound/pci/asihpi/hpimsginit.c:70 hpi_init_response() warn: potential spectre issue 'res_size' (local cap)
    sound/pci/asihpi/hpioctl.c:189 asihpi_hpi_ioctl() warn: potential spectre issue 'adapters'

    This patch puts array_index_nospec() for hardening against them.

    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 8a7d6003df41cb16f6b3b620da044fbd92d2f5ee upstream.

    When CONFIG_SND_DYNAMIC_MINORS isn't set, there are only limited
    number of devices available, and HD-audio, especially with HDMI/DP
    codec, will fail to create more than two devices.

    The driver warns about the lack of such devices and skips the PCM
    device creations, but the HDMI driver still tries to create the
    corresponding JACK, SPDIF and ELD controls even for the non-existing
    PCM substreams. This results in confusion on user-space, and even may
    break the operation.

    Similarly, Intel HDMI/DP codec builds the ELD notification from i915
    graphics driver, and this may be broken if a notification is sent for
    the non-existing PCM stream.

    This patch adds the check of the existence of the assigned PCM
    substream in the both scenarios above, and skips the further operation
    if the PCM substream is not assigned.

    Fixes: 9152085defb6 ("ALSA: hda - add DP MST audio support")
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

26 Apr, 2018

1 commit

  • [ Upstream commit c469652bb5e8fb715db7d152f46d33b3740c9b87 ]

    The commit ffcd28d88e4f ("ALSA: hda - Select INPUT for Realtek
    HD-audio codec") introduced the reverse-selection of CONFIG_INPUT for
    Realtek codec in order to avoid the mess with dependency between
    built-in and modules. Later on, we obtained IS_REACHABLE() macro
    exactly for this kind of problems, and now we can remove th INPUT
    selection in Kconfig and put IS_REACHABLE(INPUT) to the appropriate
    places in the code, so that the driver doesn't need to select other
    subsystem forcibly.

    Fixes: ffcd28d88e4f ("ALSA: hda - Select INPUT for Realtek HD-audio codec")
    Reported-by: Randy Dunlap
    Acked-by: Randy Dunlap # and build-tested
    Signed-off-by: Takashi Iwai
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

24 Apr, 2018

3 commits

  • commit a3dafb2200bf3c13905a088e82ae11f1eb275a83 upstream.

    There are two front mics on this machine, if we don't adjust the
    location for one of them, they will have the same mixer name,
    pulseaudio can't handle this situation.

    After applying this FIXUP, they will have different mixer name,
    then pulseaudio can handle them correctly.

    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     
  • commit 3ce0d5aa265bcc0a4b281cb0cabf92491276101b upstream.

    Otherwise, the pin will be regarded as microphone, and the jack name
    is "Mic Phantom", it is always on in the pulseaudio even nothing is
    plugged into the jack. So the UI is confusing to users since the
    microphone always shows up in the UI even there is no microphone
    plugged.

    After adding this flag, the jack name is "Headset Mic Phantom", then
    the pulseaudio can handle its detection correctly.

    Fixes: f0ba9d699e5c ("ALSA: hda/realtek - Fix Dell headset Mic can't record")
    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Hui Wang
     
  • commit af52f9982e410edac21ca4b49563053ffc9da1eb upstream.

    This patch is used to tell kernel that new VIA HDAC controller also
    support no-snoop path.

    [ minor coding style fix by tiwai ]

    Signed-off-by: David Wang
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Wang
     

29 Mar, 2018

1 commit

  • commit e40bdb03d3cd7da66bd0bc1e40cbcfb49351265c upstream.

    Some HP laptops have a mute mute LED controlled by a pin VREF. The
    Realtek codec driver updates the VREF via vmaster hook by calling
    snd_hda_set_pin_ctl_cache().

    This works fine as long as the driver is running in a normal mode.
    However, when the VREF change happens during the codec being in
    runtime PM suspend, the regmap access will skip and postpone the
    actual register change. This ends up with the unchanged LED status
    until the next runtime PM resume even if you change the Master mute
    switch. (Interestingly, the machine keeps the LED status even after
    the codec goes into D3 -- but it's another story.)

    For improving this usability, let the driver temporarily powering up /
    down only during the pin VREF change. This can be achieved easily by
    wrapping the call with snd_hda_power_up_pm() / *_down_pm().

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199073
    Cc:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai