lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <YDfYAYCaC9KDc1F0@fritha.org>
Date:   Thu, 25 Feb 2021 18:01:53 +0100
From:   Heinz Diehl <htd+ml@...tha.org>
To:     linux-kernel@...r.kernel.org
Cc:     tiwai@...e.de, lpoetter@...hat.com
Subject: [BISECTED] Kernel 5.11.x breaks pulseaudio

Hi,

from kernel 5.11 on, pulseaudio always resamples audio to the sample
rate specified by default-sample-rate, despite "avoid-resampling =
true". Audio that matches alternate-sample-rate is resampled in the same way.
This means that both "alternate-sample-rate" and
"avoid-resampling=true" are no longer working.

Steps to Reproduce:
1. Set "avoid-resampling = true" in daemon.conf
2. Set default-sample-rate = 44100 in daemon.conf
3. Set alternate-sample-rate 48000 in daemon.conf
4. Restart pulseaudio
5. Play a 48000 (or any other) audio file

Actual results:
File is played as 44100 audio. Pacmd list-sink-inputs shows that
resampling is happening. Play an audio file with any other sample
rate, and it will be resampled to 44100.

Expected results:
Audio file plays at 48000. Any other file is played in its own sample rate.

In my case, this affects USB audio. Tried both a Dragonfly Red, a
Fostex HP-A4 and an unknown Soundblaster USB audio dac/amp, and all of
them show the same behaviour as described here. Most probably, the
regression affects all USB audio devices.

All kernels from the 5.10 series are fine. Here's the offending patch
that introduced the regression. Reverting it on top of kernel 5.11 /
5.11.1 resolves the problem:

[root@...ara linux-stable]# git bisect good
e4ea77f8e53f9accb9371fba34c189d0447ecce0 is the first bad commit
commit e4ea77f8e53f9accb9371fba34c189d0447ecce0
Author: Takashi Iwai <tiwai@...e.de>
Date:   Mon Jan 11 09:16:11 2021 +0100

    ALSA: usb-audio: Always apply the hw constraints for implicit fb sync
    
    Since the commit 5a6c3e11c9c9 ("ALSA: usb-audio: Add hw constraint for
    implicit fb sync"), we apply the hw constraints for the implicit
    feedback sync to make the secondary open aligned with the already
    opened stream setup.  This change assumed that the secondary open is
    performed after the first stream has been already set up, and adds the
    hw constraints to sync with the first stream's parameters only when
    the EP setup for the first stream was confirmed at the open time.
    However, most of applications handling the full-duplex operations do
    open both playback and capture streams at first, then set up both
    streams.  This results in skipping the additional hw constraints since
    the counter-part stream hasn't been set up yet at the open of the
    second stream, and it eventually leads to "incompatible EP" error in
    the end.
    
    This patch corrects the behavior by always applying the hw constraints
    for the implicit fb sync.  The hw constraint rules are defined so that
    they check the sync EP dynamically at each invocation, instead.  This
    covers the concurrent stream setups better and lets the hw refine
    calls resolving to the right configuration.
    
    Also this patch corrects a minor error that has existed in the debug
    print that isn't built as default.
    
    Fixes: 5a6c3e11c9c9 ("ALSA: usb-audio: Add hw constraint for implicit fb sync")
    Link: https://lore.kernel.org/r/20210111081611.12790-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@...e.de>

 sound/usb/pcm.c | 171 +++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 108 insertions(+), 63 deletions(-)
[root@...ara linux-stable]#

Feel free to contact me if you think I can help.

Thanks, Heinz.


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ