From 577caecb26a35e33d682b5f8fa5bc6189a3ee2f1 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Tue, 19 Mar 2019 17:55:09 +0000 Subject: [PATCH] staging: bcm2835-codec: NULL component handle on queue_setup failure queue_setup tries creating the relevant MMAL component and configures the input and output ports as we're expecting to start streaming. If the port configuration failed then it destroyed the component, but failed to clear the component handle, therefore release tried destroying the component again. Adds some logging should the port config fail as well. Signed-off-by: Dave Stevenson --- .../vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c index eb5c07b..ad555ce 100644 --- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c @@ -1776,13 +1776,21 @@ static int bcm2835_codec_create_component(struct bcm2835_codec_ctx *ctx) ret = vchiq_mmal_port_set_format(dev->instance, &ctx->component->input[0]); - if (ret < 0) + if (ret < 0) { + v4l2_dbg(1, debug, &dev->v4l2_dev, + "%s: vchiq_mmal_port_set_format ip port failed\n", + __func__); goto destroy_component; + } ret = vchiq_mmal_port_set_format(dev->instance, &ctx->component->output[0]); - if (ret < 0) + if (ret < 0) { + v4l2_dbg(1, debug, &dev->v4l2_dev, + "%s: vchiq_mmal_port_set_format op port failed\n", + __func__); goto destroy_component; + } if (dev->role == ENCODE) { u32 param = 1; @@ -1812,11 +1820,14 @@ static int bcm2835_codec_create_component(struct bcm2835_codec_ctx *ctx) ctx->q_data[V4L2_M2M_DST].sizeimage, ctx->component->output[0].minimum_buffer.size); } + v4l2_dbg(2, debug, &dev->v4l2_dev, "%s: component created as %s\n", + __func__, components[dev->role]); return 0; destroy_component: vchiq_mmal_component_finalise(ctx->dev->instance, ctx->component); + ctx->component = NULL; return ret; } -- 2.7.4