mirror of
https://github.com/torvalds/linux.git
synced 2026-09-12 20:53:03 +02:00
selftests/alsa: Fix the step check for INTEGER controls
The modulo sits inside the subtraction, so the check evaluates
int_val - (min % step) rather than (int_val - min) % step. The
INTEGER64 branch below it is parenthesised correctly.
The written form passes only when the value equals min % step, and such
a value is always on a step boundary, so it never misses a real
violation. It only reports valid values as invalid.
snd-aloop declares step 1 on four controls, so every non-zero value on
them is reported. Before:
# PCM Rate Shift 100000.0 value 100000 invalid for step 1 minimum 80000
# Totals: pass:660 fail:101 xfail:0 xpass:0 skip:296 error:0
After, same card, nothing else changed:
# Totals: pass:740 fail:21 xfail:0 xpass:0 skip:296 error:0
Eighteen files under sound/ declare a non-zero step.
Fixes: 5aaf9efffc ("kselftest: alsa: Add simplistic test for ALSA mixer controls kselftest")
Signed-off-by: HyeongJun An <sammiee5311@gmail.com>
Assisted-by: Claude:claude-opus-5
Link: https://patch.msgid.link/20260903123832.97377-1-sammiee5311@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8ba27b9009
commit
8efd5f623c
|
|
@ -319,8 +319,8 @@ static bool ctl_value_index_valid(struct ctl_data *ctl,
|
|||
|
||||
/* Only check step size if there is one and we're in bounds */
|
||||
if (snd_ctl_elem_info_get_step(ctl->info) &&
|
||||
(int_val - snd_ctl_elem_info_get_min(ctl->info) %
|
||||
snd_ctl_elem_info_get_step(ctl->info))) {
|
||||
(int_val - snd_ctl_elem_info_get_min(ctl->info)) %
|
||||
snd_ctl_elem_info_get_step(ctl->info)) {
|
||||
ksft_print_msg("%s.%d value %ld invalid for step %ld minimum %ld\n",
|
||||
ctl->name, index, int_val,
|
||||
snd_ctl_elem_info_get_step(ctl->info),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user