linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH][drm-next] drm/amd/display: fix dereference of pointer fs_params before it is null checked
@ 2018-11-20 17:17 Colin King
  2018-11-20 20:08 ` Li, Sun peng (Leo)
  0 siblings, 1 reply; 2+ messages in thread
From: Colin King @ 2018-11-20 17:17 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Alex Deucher, Christian König,
	David Zhou, David Airlie, amd-gfx, dri-devel
  Cc: kernel-janitors, linux-kernel

From: Colin Ian King <colin.king@canonical.com>

Currently there are several instances of pointer fs_params being
dereferenced before fs_params is being null checked.  Fix this by
only dereferencing fs_params after the null check.

Detected by CoverityScan, CID#1475565 ("Dereference before null check")

Fixes: e1e8a020c6b8 ("drm/amd/display: Add support for Freesync 2 HDR and Content to Display Mapping")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 .../drm/amd/display/modules/color/color_gamma.c  | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
index 7480f072c375..bbecbaefb741 100644
--- a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
+++ b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
@@ -813,20 +813,26 @@ static bool build_freesync_hdr(struct pwl_float_data_ex *rgb_regamma,
 	const struct hw_x_point *coord_x = coordinate_x;
 	struct fixed31_32 scaledX = dc_fixpt_zero;
 	struct fixed31_32 scaledX1 = dc_fixpt_zero;
-	struct fixed31_32 max_display = dc_fixpt_from_int(fs_params->max_display);
-	struct fixed31_32 min_display = dc_fixpt_from_fraction(fs_params->min_display, 10000);
-	struct fixed31_32 max_content = dc_fixpt_from_int(fs_params->max_content);
-	struct fixed31_32 min_content = dc_fixpt_from_fraction(fs_params->min_content, 10000);
+	struct fixed31_32 max_display;
+	struct fixed31_32 min_display;
+	struct fixed31_32 max_content;
+	struct fixed31_32 min_content;
 	struct fixed31_32 clip = dc_fixpt_one;
 	struct fixed31_32 output;
 	bool use_eetf = false;
 	bool is_clipped = false;
-	struct fixed31_32 sdr_white_level = dc_fixpt_from_int(fs_params->sdr_white_level);
+	struct fixed31_32 sdr_white_level;
 
 	if (fs_params == NULL || fs_params->max_content == 0 ||
 			fs_params->max_display == 0)
 		return false;
 
+	max_display = dc_fixpt_from_int(fs_params->max_display);
+	min_display = dc_fixpt_from_fraction(fs_params->min_display, 10000);
+	max_content = dc_fixpt_from_int(fs_params->max_content);
+	min_content = dc_fixpt_from_fraction(fs_params->min_content, 10000);
+	sdr_white_level = dc_fixpt_from_int(fs_params->sdr_white_level);
+
 	if (fs_params->min_display > 1000) // cap at 0.1 at the bottom
 		min_display = dc_fixpt_from_fraction(1, 10);
 	if (fs_params->max_display < 100) // cap at 100 at the top
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH][drm-next] drm/amd/display: fix dereference of pointer fs_params before it is null checked
  2018-11-20 17:17 [PATCH][drm-next] drm/amd/display: fix dereference of pointer fs_params before it is null checked Colin King
@ 2018-11-20 20:08 ` Li, Sun peng (Leo)
  0 siblings, 0 replies; 2+ messages in thread
From: Li, Sun peng (Leo) @ 2018-11-20 20:08 UTC (permalink / raw)
  To: Colin King, Wentland, Harry, Deucher, Alexander, Koenig,
	Christian, Zhou, David(ChunMing),
	David Airlie, amd-gfx, dri-devel
  Cc: kernel-janitors, linux-kernel



On 2018-11-20 12:17 p.m., Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> Currently there are several instances of pointer fs_params being
> dereferenced before fs_params is being null checked.  Fix this by
> only dereferencing fs_params after the null check.
> 
> Detected by CoverityScan, CID#1475565 ("Dereference before null check")
> 
> Fixes: e1e8a020c6b8 ("drm/amd/display: Add support for Freesync 2 HDR and Content to Display Mapping")
> Signed-off-by: Colin Ian King <colin.king@canonical.com>

Reviewed-by: Leo Li <sunpeng.li@amd.com>

Thanks!

> ---
>   .../drm/amd/display/modules/color/color_gamma.c  | 16 +++++++++++-----
>   1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
> index 7480f072c375..bbecbaefb741 100644
> --- a/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
> +++ b/drivers/gpu/drm/amd/display/modules/color/color_gamma.c
> @@ -813,20 +813,26 @@ static bool build_freesync_hdr(struct pwl_float_data_ex *rgb_regamma,
>   	const struct hw_x_point *coord_x = coordinate_x;
>   	struct fixed31_32 scaledX = dc_fixpt_zero;
>   	struct fixed31_32 scaledX1 = dc_fixpt_zero;
> -	struct fixed31_32 max_display = dc_fixpt_from_int(fs_params->max_display);
> -	struct fixed31_32 min_display = dc_fixpt_from_fraction(fs_params->min_display, 10000);
> -	struct fixed31_32 max_content = dc_fixpt_from_int(fs_params->max_content);
> -	struct fixed31_32 min_content = dc_fixpt_from_fraction(fs_params->min_content, 10000);
> +	struct fixed31_32 max_display;
> +	struct fixed31_32 min_display;
> +	struct fixed31_32 max_content;
> +	struct fixed31_32 min_content;
>   	struct fixed31_32 clip = dc_fixpt_one;
>   	struct fixed31_32 output;
>   	bool use_eetf = false;
>   	bool is_clipped = false;
> -	struct fixed31_32 sdr_white_level = dc_fixpt_from_int(fs_params->sdr_white_level);
> +	struct fixed31_32 sdr_white_level;
>   
>   	if (fs_params == NULL || fs_params->max_content == 0 ||
>   			fs_params->max_display == 0)
>   		return false;
>   
> +	max_display = dc_fixpt_from_int(fs_params->max_display);
> +	min_display = dc_fixpt_from_fraction(fs_params->min_display, 10000);
> +	max_content = dc_fixpt_from_int(fs_params->max_content);
> +	min_content = dc_fixpt_from_fraction(fs_params->min_content, 10000);
> +	sdr_white_level = dc_fixpt_from_int(fs_params->sdr_white_level);
> +
>   	if (fs_params->min_display > 1000) // cap at 0.1 at the bottom
>   		min_display = dc_fixpt_from_fraction(1, 10);
>   	if (fs_params->max_display < 100) // cap at 100 at the top
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-11-20 20:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-20 17:17 [PATCH][drm-next] drm/amd/display: fix dereference of pointer fs_params before it is null checked Colin King
2018-11-20 20:08 ` Li, Sun peng (Leo)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).