[bug report] ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless
Dan Carpenter
error27 at gmail.com
Fri Jan 6 10:35:59 CET 2023
Hello Jaroslav Kysela,
The patch fd28941cff1c: "ALSA: usb-audio: Add new quirk FIXED_RATE
for JBL Quantum810 Wireless" from Dec 15, 2022, leads to the
following Smatch static checker warning:
sound/usb/pcm.c:543 snd_usb_hw_params()
error: uninitialized symbol 'sync_fixed_rate'.
sound/usb/pcm.c
471 static int snd_usb_hw_params(struct snd_pcm_substream *substream,
472 struct snd_pcm_hw_params *hw_params)
473 {
474 struct snd_usb_substream *subs = substream->runtime->private_data;
475 struct snd_usb_audio *chip = subs->stream->chip;
476 const struct audioformat *fmt;
477 const struct audioformat *sync_fmt;
478 bool fixed_rate, sync_fixed_rate;
479 int ret;
480
481 ret = snd_media_start_pipeline(subs);
482 if (ret)
483 return ret;
484
485 fixed_rate = snd_usb_pcm_has_fixed_rate(subs);
486 fmt = find_substream_format(subs, hw_params);
487 if (!fmt) {
488 usb_audio_dbg(chip,
489 "cannot find format: format=%s, rate=%d, channels=%d\n",
490 snd_pcm_format_name(params_format(hw_params)),
491 params_rate(hw_params), params_channels(hw_params));
492 ret = -EINVAL;
493 goto stop_pipeline;
494 }
495
496 if (fmt->implicit_fb) {
497 sync_fmt = snd_usb_find_implicit_fb_sync_format(chip, fmt,
498 hw_params,
499 !substream->stream,
500 &sync_fixed_rate);
"sync_fixed_rate" is uninitialized when we "Use the original audioformat
as fallback for the shared altset" and find_matching_substream() returns
NULL.
501 if (!sync_fmt) {
502 usb_audio_dbg(chip,
503 "cannot find sync format: ep=0x%x, iface=%d:%d, format=%s, rate=%d, channels=%d\n",
504 fmt->sync_ep, fmt->sync_iface,
505 fmt->sync_altsetting,
506 snd_pcm_format_name(params_format(hw_params)),
507 params_rate(hw_params), params_channels(hw_params));
508 ret = -EINVAL;
509 goto stop_pipeline;
510 }
511 } else {
512 sync_fmt = fmt;
513 sync_fixed_rate = fixed_rate;
514 }
515
516 ret = snd_usb_lock_shutdown(chip);
517 if (ret < 0)
518 goto stop_pipeline;
519
520 ret = snd_usb_pcm_change_state(subs, UAC3_PD_STATE_D0);
521 if (ret < 0)
522 goto unlock;
523
524 if (subs->data_endpoint) {
525 if (snd_usb_endpoint_compatible(chip, subs->data_endpoint,
526 fmt, hw_params))
527 goto unlock;
528 if (stop_endpoints(subs, false))
529 sync_pending_stops(subs);
530 close_endpoints(chip, subs);
531 }
532
533 subs->data_endpoint = snd_usb_endpoint_open(chip, fmt, hw_params, false, fixed_rate);
534 if (!subs->data_endpoint) {
535 ret = -EINVAL;
536 goto unlock;
537 }
538
539 if (fmt->sync_ep) {
540 subs->sync_endpoint = snd_usb_endpoint_open(chip, sync_fmt,
541 hw_params,
542 fmt == sync_fmt,
--> 543 sync_fixed_rate);
544 if (!subs->sync_endpoint) {
545 ret = -EINVAL;
546 goto unlock;
547 }
regards,
dan carpenter
More information about the Alsa-devel
mailing list