Skip to contentSkip to conversation

st-delta: add mjpeg support

bug report Dan Carpenter 2 participants 2 messages Feb 13, 2017 – Feb 21, 2017 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

Hello Hugues Fruchet,

The patch 433ff5b4a29b: "[media] st-delta: add mjpeg support" from Feb 2, 2017, leads to the following static checker warning:

drivers/media/platform/sti/delta/delta-mjpeg-dec.c:415 delta_mjpeg_decode()
error: uninitialized symbol 'data_offset'.

drivers/media/platform/sti/delta/delta-mjpeg-dec.c

   378          unsigned int data_offset;
                             ^^^^^^^^^^^
   379          struct mjpeg_header *header = &ctx->header_struct;
   380  
   381          if (!ctx->header) {
   382                  ret = delta_mjpeg_read_header(pctx, au.vaddr, au.size,
   383                                                header, &data_offset);
                                                               ^^^^^^^^^^^

It's not immediately clear that "data_offset" must be set on the success path.

   384                  if (ret) {
   385                          pctx->stream_errors++;
   386                          goto err;
   387                  }
   388                  if (header->frame_width * header->frame_height >
   389                      DELTA_MJPEG_MAX_RESO) {
   390                          dev_err(delta->dev,
   391                                  "%s  stream resolution too large: %dx%d > %d pixels budget\n",
   392                                  pctx->name,
   393                                  header->frame_width,
   394                                  header->frame_height, DELTA_MJPEG_MAX_RESO);
   395                          ret = -EINVAL;
   396                          goto err;
   397                  }
   398                  ctx->header = header;
   399                  goto out;
   400          }
   401  
   402          if (!ctx->ipc_hdl) {
   403                  ret = delta_mjpeg_ipc_open(pctx);
   404                  if (ret)
   405                          goto err;
   406          }
   407  
   408          ret = delta_mjpeg_read_header(pctx, au.vaddr, au.size,
   409                                        ctx->header, &data_offset);
   410          if (ret) {
   411                  pctx->stream_errors++;
   412                  goto err;
   413          }
   414  
   415          au.paddr += data_offset;
                ^^^^^^^^^^^^^^^^^^^^^^^
   416          au.vaddr += data_offset;

regards,
dan carpenter

#1 lore raw

Thanks Dan,

Patch sent to fix warning:
https://www.spinics.net/lists/linux-media/msg111529.html

BR,
Hugues.

Quoted 58 lines · Dan Carpenter

Hello Hugues Fruchet,

The patch 433ff5b4a29b: "[media] st-delta: add mjpeg support" from Feb 2, 2017, leads to the following static checker warning:

drivers/media/platform/sti/delta/delta-mjpeg-dec.c:415 delta_mjpeg_decode()
error: uninitialized symbol 'data_offset'.

drivers/media/platform/sti/delta/delta-mjpeg-dec.c

   378          unsigned int data_offset;
                             ^^^^^^^^^^^
   379          struct mjpeg_header *header = &ctx->header_struct;
   380
   381          if (!ctx->header) {
   382                  ret = delta_mjpeg_read_header(pctx, au.vaddr, au.size,
   383                                                header, &data_offset);
                                                               ^^^^^^^^^^^

It's not immediately clear that "data_offset" must be set on the success path.

   384                  if (ret) {
   385                          pctx->stream_errors++;
   386                          goto err;
   387                  }
   388                  if (header->frame_width * header->frame_height >
   389                      DELTA_MJPEG_MAX_RESO) {
   390                          dev_err(delta->dev,
   391                                  "%s  stream resolution too large: %dx%d > %d pixels budget\n",
   392                                  pctx->name,
   393                                  header->frame_width,
   394                                  header->frame_height, DELTA_MJPEG_MAX_RESO);
   395                          ret = -EINVAL;
   396                          goto err;
   397                  }
   398                  ctx->header = header;
   399                  goto out;
   400          }
   401
   402          if (!ctx->ipc_hdl) {
   403                  ret = delta_mjpeg_ipc_open(pctx);
   404                  if (ret)
   405                          goto err;
   406          }
   407
   408          ret = delta_mjpeg_read_header(pctx, au.vaddr, au.size,
   409                                        ctx->header, &data_offset);
   410          if (ret) {
   411                  pctx->stream_errors++;
   412                  goto err;
   413          }
   414
   415          au.paddr += data_offset;
                ^^^^^^^^^^^^^^^^^^^^^^^
   416          au.vaddr += data_offset;

regards,
dan carpenter