lkml.org 
[lkml]   [2016]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/31] media: Media Controller fix to not let stream_count go negative
    Date
    Add a range check to not let the stream_count become negative.
    Wthout this check, calls to stop pipeline when there is no active
    pipeline will result in stream_count < 0 condition and lock and
    preventing link state (activate/deactivate) changes. This will
    happen from error leg in start pipeline interface.

    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    ---
    drivers/media/media-entity.c | 18 ++++++++++++------
    1 file changed, 12 insertions(+), 6 deletions(-)

    diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
    index 6e02d19..78486a9 100644
    --- a/drivers/media/media-entity.c
    +++ b/drivers/media/media-entity.c
    @@ -464,9 +464,12 @@ error:
    media_entity_graph_walk_start(graph, entity_err);

    while ((entity_err = media_entity_graph_walk_next(graph))) {
    - entity_err->stream_count--;
    - if (entity_err->stream_count == 0)
    - entity_err->pipe = NULL;
    + /* don't let the stream_count go negative */
    + if (entity->stream_count > 0) {
    + entity_err->stream_count--;
    + if (entity_err->stream_count == 0)
    + entity_err->pipe = NULL;
    + }

    /*
    * We haven't increased stream_count further than this
    @@ -498,9 +501,12 @@ void media_entity_pipeline_stop(struct media_entity *entity)
    media_entity_graph_walk_start(graph, entity);

    while ((entity = media_entity_graph_walk_next(graph))) {
    - entity->stream_count--;
    - if (entity->stream_count == 0)
    - entity->pipe = NULL;
    + /* don't let the stream_count go negative */
    + if (entity->stream_count > 0) {
    + entity->stream_count--;
    + if (entity->stream_count == 0)
    + entity->pipe = NULL;
    + }
    }

    if (!--pipe->streaming_count)
    --
    2.5.0


    \
     
     \ /
      Last update: 2016-01-06 22:21    [W:3.416 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site