[bug report] ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux