Commit 46cc2d76 authored by Maxime Ripard's avatar Maxime Ripard

drm/client: Restrict the plane_state scope

The drm_client_modeset_commit_atomic function uses two times the
plane_state variable in inner blocks of code, but the variable has a scope
global to this function.

This will lead to inadvertent devs to reuse the variable in the second
block with the value left by the first, without any warning from the
compiler since value would have been initialized.

Fix this by moving the variable declaration to the proper scope.
Reviewed-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/8bd9696ea915a4ad08be6d93a4d9565e8d6aa2f3.1560783090.git-series.maxime.ripard@bootlin.com
parent 772cd52c
...@@ -861,7 +861,6 @@ EXPORT_SYMBOL(drm_client_panel_rotation); ...@@ -861,7 +861,6 @@ EXPORT_SYMBOL(drm_client_panel_rotation);
static int drm_client_modeset_commit_atomic(struct drm_client_dev *client, bool active) static int drm_client_modeset_commit_atomic(struct drm_client_dev *client, bool active)
{ {
struct drm_device *dev = client->dev; struct drm_device *dev = client->dev;
struct drm_plane_state *plane_state;
struct drm_plane *plane; struct drm_plane *plane;
struct drm_atomic_state *state; struct drm_atomic_state *state;
struct drm_modeset_acquire_ctx ctx; struct drm_modeset_acquire_ctx ctx;
...@@ -879,6 +878,8 @@ static int drm_client_modeset_commit_atomic(struct drm_client_dev *client, bool ...@@ -879,6 +878,8 @@ static int drm_client_modeset_commit_atomic(struct drm_client_dev *client, bool
state->acquire_ctx = &ctx; state->acquire_ctx = &ctx;
retry: retry:
drm_for_each_plane(plane, dev) { drm_for_each_plane(plane, dev) {
struct drm_plane_state *plane_state;
plane_state = drm_atomic_get_plane_state(state, plane); plane_state = drm_atomic_get_plane_state(state, plane);
if (IS_ERR(plane_state)) { if (IS_ERR(plane_state)) {
ret = PTR_ERR(plane_state); ret = PTR_ERR(plane_state);
...@@ -901,6 +902,8 @@ static int drm_client_modeset_commit_atomic(struct drm_client_dev *client, bool ...@@ -901,6 +902,8 @@ static int drm_client_modeset_commit_atomic(struct drm_client_dev *client, bool
unsigned int rotation; unsigned int rotation;
if (drm_client_panel_rotation(mode_set, &rotation)) { if (drm_client_panel_rotation(mode_set, &rotation)) {
struct drm_plane_state *plane_state;
/* Cannot fail as we've already gotten the plane state above */ /* Cannot fail as we've already gotten the plane state above */
plane_state = drm_atomic_get_new_plane_state(state, primary); plane_state = drm_atomic_get_new_plane_state(state, primary);
plane_state->rotation = rotation; plane_state->rotation = rotation;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment