From: Takashi Iwai <tiwai@suse.de>
To: Sinan Turunc <enscrpt@pm.me>
Cc: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH v2] ALSA: line6: Reject capture buffers smaller than two packets
Date: Wed, 04 Nov 2026 08:20:15 +0100 [thread overview]
Message-ID: <87qzh1ukpc.wl-tiwai@suse.de> (raw)
In-Reply-To: <20261103132227.696-1-enscrpt@pm.me>
On Tue, 03 Nov 2026 14:22:44 +0100,
Sinan Turunc wrote:
>
> line6_capture_copy() splits the copy into the ALSA ring buffer once at
> the buffer end and wraps pos_done once, which is only correct when one
> packet holds at most buffer_size frames. The packet size comes from the
> device's endpoint, and the per-device hw structs allow 64-byte periods
> with periods_min 1, so a packet can be larger than the whole buffer.
> audio_in_callback() logs an oversized packet and then copies it anyway.
>
> The packet size is known at probe time, so constrain
> SNDRV_PCM_HW_PARAM_BUFFER_BYTES in snd_line6_capture_open() to at least
> twice the larger of the two endpoints' packet sizes. Two rather than
> one, because pos_done advances by the packet and wraps once, so a buffer
> of exactly one packet leaves the position unchanged after every packet.
> hw_params then rejects a buffer that cannot hold two packets, and the
> single wrap is valid for every configuration that gets through. Keep a
> guard in line6_capture_copy() that drops an oversized packet with a
> ratelimited error, for the case that should no longer be reachable.
>
> Reproduced on 7.3-rc7 with a USB/IP device presenting the GuitarPort
> interface layout and 1024-byte packets into a 128-byte buffer: ALSA
> logged "invalid position: pos = 224, buffer size = 32" and the driver
> logged "driver bug: len" on every following packet. With this patch a
> 1024-byte buffer is refused at hw_params, and a 2048-byte buffer streams
> for 30 s with no report and with the position moving inside the buffer.
>
> Fixes: 705ececd1c60 ("Staging: add line6 usb driver")
> Cc: stable@vger.kernel.org
> Signed-off-by: Sinan Turunc <enscrpt@pm.me>
Applied now. Thanks.
Takashi
prev parent reply other threads:[~2026-11-04 7:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 13:22 Sinan Turunc
2026-11-04 7:20 ` Takashi Iwai [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87qzh1ukpc.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=enscrpt@pm.me \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=stable@vger.kernel.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®