All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <error27@gmail.com>
To: o-takashi@sakamocchi.jp
Cc: alsa-devel@alsa-project.org
Subject: [bug report] ALSA: firewire-lib: extend tracepoints event including CYCLE_TIME of 1394 OHCI
Date: Fri, 13 Jan 2023 13:04:35 +0300	[thread overview]
Message-ID: <Y8Ess7+7NxnSDX2o@kili> (raw)

Hello Takashi Sakamoto,

The patch fef4e61b0b76: "ALSA: firewire-lib: extend tracepoints event
including CYCLE_TIME of 1394 OHCI" from Jan 10, 2023, leads to the
following Smatch static checker warning:

sound/firewire/amdtp-stream.c:944 generate_tx_packet_descs() error: uninitialized symbol 'curr_cycle_time'.
sound/firewire/amdtp-stream.c:1099 process_rx_packets()	error: uninitialized symbol 'curr_cycle_time'.

sound/firewire/amdtp-stream.c
    1047 static void process_rx_packets(struct fw_iso_context *context, u32 tstamp, size_t header_length,
    1048                                void *header, void *private_data)
    1049 {
    1050         struct amdtp_stream *s = private_data;
    1051         const struct amdtp_domain *d = s->domain;
    1052         const __be32 *ctx_header = header;
    1053         const unsigned int events_per_period = d->events_per_period;
    1054         unsigned int event_count = s->ctx_data.rx.event_count;
    1055         struct pkt_desc *desc = s->packet_descs_cursor;
    1056         unsigned int pkt_header_length;
    1057         unsigned int packets;
    1058         u32 curr_cycle_time;
                 ^^^^^^^^^^^^^^^^^^^

    1059         bool need_hw_irq;
    1060         int i;
    1061 
    1062         if (s->packet_index < 0)
    1063                 return;
    1064 
    1065         // Calculate the number of packets in buffer and check XRUN.
    1066         packets = header_length / sizeof(*ctx_header);
    1067 
    1068         generate_rx_packet_descs(s, desc, ctx_header, packets);
    1069 
    1070         process_ctx_payloads(s, desc, packets);
    1071 
    1072         if (!(s->flags & CIP_NO_HEADER))
    1073                 pkt_header_length = IT_PKT_HEADER_SIZE_CIP;
    1074         else
    1075                 pkt_header_length = 0;
    1076 
    1077         if (s == d->irq_target) {
    1078                 // At NO_PERIOD_WAKEUP mode, the packets for all IT/IR contexts are processed by
    1079                 // the tasks of user process operating ALSA PCM character device by calling ioctl(2)
    1080                 // with some requests, instead of scheduled hardware IRQ of an IT context.
    1081                 struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
    1082                 need_hw_irq = !pcm || !pcm->runtime->no_period_wakeup;
    1083         } else {
    1084                 need_hw_irq = false;
    1085         }
    1086 
    1087         if (trace_amdtp_packet_enabled())
    1088                 (void)fw_card_read_cycle_time(fw_parent_device(s->unit)->card, &curr_cycle_time);

No error checking and no else path.

    1089 
    1090         for (i = 0; i < packets; ++i) {
    1091                 struct {
    1092                         struct fw_iso_packet params;
    1093                         __be32 header[CIP_HEADER_QUADLETS];
    1094                 } template = { {0}, {0} };
    1095                 bool sched_irq = false;
    1096 
    1097                 build_it_pkt_header(s, desc->cycle, &template.params, pkt_header_length,
    1098                                     desc->data_blocks, desc->data_block_counter,
--> 1099                                     desc->syt, i, curr_cycle_time);
                                                           ^^^^^^^^^^^^^^^
Uninitialized.

    1100 
    1101                 if (s == s->domain->irq_target) {
    1102                         event_count += desc->data_blocks;
    1103                         if (event_count >= events_per_period) {
    1104                                 event_count -= events_per_period;
    1105                                 sched_irq = need_hw_irq;
    1106                         }
    1107                 }
    1108 
    1109                 if (queue_out_packet(s, &template.params, sched_irq) < 0) {
    1110                         cancel_stream(s);
    1111                         return;
    1112                 }
    1113 
    1114                 desc = amdtp_stream_next_packet_desc(s, desc);
    1115         }
    1116 
    1117         s->ctx_data.rx.event_count = event_count;
    1118         s->packet_descs_cursor = desc;
    1119 }

regards,
dan carpenter

             reply	other threads:[~2023-01-13 10:05 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-13 10:04 Dan Carpenter [this message]
2023-01-13 12:57 ` [bug report] ALSA: firewire-lib: extend tracepoints event including CYCLE_TIME of 1394 OHCI Takashi Sakamoto

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=Y8Ess7+7NxnSDX2o@kili \
    --to=error27@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=o-takashi@sakamocchi.jp \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.