• Takashi Iwai's avatar
    ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb · 98c27add
    Takashi Iwai authored
    In the implicit feedback mode, some parameters are tied between both
    playback and capture streams.  One of the tied parameters is the
    period size, and this can be a problem if the device has different
    number of channels to both streams.  Assume that an application opens
    a playback stream that has an implicit feedback from a capture stream,
    and it allocates up to the max period and buffer size as much as
    possible.  When the capture device supports only more channels than
    the playback, the minimum period and buffer sizes become larger than
    the sizes the playback stream took.  That is, the minimum size will be
    over the max size the driver limits, and PCM core sees as if no
    available configuration is found, returning -EINVAL mercilessly.
    
    For avoiding this problem, we have to look through the counter part of
    audioformat list for each sync ep, and checks the channels.  If more
    channels are found there, we reduce the max period and buffer sizes
    accordingly.
    
    You may wonder that the patch adds only the evaluation of channels
    between streams, and what about other parameters?  Both the format and
    the rate are tied in the implicit fb mode, hence they are always
    identical.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215792
    Fixes: 5a6c3e11 ("ALSA: usb-audio: Add hw constraint for implicit fb sync")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220407211657.15087-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    98c27add
pcm.c 48.4 KB