2022-11-10 14:33:03

by José Expósito

[permalink] [raw]
Subject: [PATCH v2 0/2] drm/vc4: hdmi: Fix pointer dereference before check

v1 -> v2:

As suggested by Maxime, I simplified a bit vc4_hdmi_supports_scrambling()
making it receive a struct vc4_hdmi as argument instead of a struct
drm_encoder.

Also, variables are initialized close to where they are used in the
second patch.

José Expósito (2):
drm/vc4: hdmi: Pass vc4_hdmi to vc4_hdmi_supports_scrambling()
drm/vc4: hdmi: Fix pointer dereference before check

drivers/gpu/drm/vc4/vc4_hdmi.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

--
2.25.1



2022-11-10 14:39:33

by José Expósito

[permalink] [raw]
Subject: [PATCH v2 1/2] drm/vc4: hdmi: Pass vc4_hdmi to vc4_hdmi_supports_scrambling()

Simplify vc4_hdmi_supports_scrambling() by changing its first parameter
from struct drm_encoder to struct vc4_hdmi.

Signed-off-by: José Expósito <[email protected]>
---
drivers/gpu/drm/vc4/vc4_hdmi.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 0d78c800ed51..a49f88e5d2b9 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -124,9 +124,8 @@ static unsigned long long
vc4_hdmi_encoder_compute_mode_clock(const struct drm_display_mode *mode,
unsigned int bpc, enum vc4_hdmi_output_format fmt);

-static bool vc4_hdmi_supports_scrambling(struct drm_encoder *encoder)
+static bool vc4_hdmi_supports_scrambling(struct vc4_hdmi *vc4_hdmi)
{
- struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
struct drm_display_info *display = &vc4_hdmi->connector.display_info;

lockdep_assert_held(&vc4_hdmi->mutex);
@@ -321,7 +320,6 @@ static int vc4_hdmi_reset_link(struct drm_connector *connector,
{
struct drm_device *drm = connector->dev;
struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector);
- struct drm_encoder *encoder = &vc4_hdmi->encoder.base;
struct drm_connector_state *conn_state;
struct drm_crtc_state *crtc_state;
struct drm_crtc *crtc;
@@ -349,7 +347,7 @@ static int vc4_hdmi_reset_link(struct drm_connector *connector,
if (!crtc_state->active)
return 0;

- if (!vc4_hdmi_supports_scrambling(encoder))
+ if (!vc4_hdmi_supports_scrambling(vc4_hdmi))
return 0;

scrambling_needed = vc4_hdmi_mode_needs_scrambling(&vc4_hdmi->saved_adjusted_mode,
@@ -867,7 +865,7 @@ static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder)

lockdep_assert_held(&vc4_hdmi->mutex);

- if (!vc4_hdmi_supports_scrambling(encoder))
+ if (!vc4_hdmi_supports_scrambling(vc4_hdmi))
return;

if (!vc4_hdmi_mode_needs_scrambling(mode,
--
2.25.1