media: v4l: vsp1: Use vsp1_entity.pipe to check if entity belongs to a pipeline
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Thu, 22 Feb 2018 22:27:47 +0000 (17:27 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Fri, 4 May 2018 11:57:06 +0000 (07:57 -0400)
The DRM pipeline handling code uses the entity's pipe list head to check
whether the entity is already included in a pipeline. This method is a
bit fragile in the sense that it uses list_empty() on a list_head that
is a list member. Replace it by a simpler check for the entity pipe
pointer.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/vsp1/vsp1_drm.c

index a7ad85ab0b08c5a57417bb9cfef6b24aceb28990..e210917fdc3f895656cb3a2ddb0a3fdc4548e9a0 100644 (file)
@@ -119,9 +119,9 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
                         * Remove the RPF from the pipe and the list of BRU
                         * inputs.
                         */
-                       WARN_ON(list_empty(&rpf->entity.list_pipe));
+                       WARN_ON(!rpf->entity.pipe);
                        rpf->entity.pipe = NULL;
-                       list_del_init(&rpf->entity.list_pipe);
+                       list_del(&rpf->entity.list_pipe);
                        pipe->inputs[i] = NULL;
 
                        bru->inputs[rpf->bru_input].rpf = NULL;
@@ -537,7 +537,7 @@ void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index)
                        continue;
                }
 
-               if (list_empty(&rpf->entity.list_pipe)) {
+               if (!rpf->entity.pipe) {
                        rpf->entity.pipe = pipe;
                        list_add_tail(&rpf->entity.list_pipe, &pipe->entities);
                }
@@ -566,7 +566,7 @@ void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index)
                                           VI6_DPR_NODE_UNUSED);
 
                        entity->pipe = NULL;
-                       list_del_init(&entity->list_pipe);
+                       list_del(&entity->list_pipe);
 
                        continue;
                }