[PATCH] drm/amd/display: drop unnecessary NULL checks in debugfs

Hamza Mahfooz hamza.mahfooz at amd.com
Wed Jan 4 17:44:47 UTC 2023


On 12/27/22 12:04, Alexey Kodanev wrote:
> pipe_ctx pointer cannot be NULL when getting the address of
> an element of the pipe_ctx array. Moreover, the MAX_PIPES is
> defined as 6, so pipe_ctx is not NULL after the loop either.
> 
> Detected using the static analysis tool - Svace.
> Signed-off-by: Alexey Kodanev <aleksei.kodanev at bell-sw.com>

Applied, thanks!

> ---
>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 72 +++++--------------
>   1 file changed, 16 insertions(+), 56 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> index 461037a3dd75..cec16eaf2fb0 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> @@ -1375,16 +1375,11 @@ static ssize_t dp_dsc_clock_en_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -1481,12 +1476,12 @@ static ssize_t dp_dsc_clock_en_write(struct file *f, const char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx || !pipe_ctx->stream)
> +	if (!pipe_ctx->stream)
>   		goto done;
>   
>   	// Get CRTC state
> @@ -1566,16 +1561,11 @@ static ssize_t dp_dsc_slice_width_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -1670,12 +1660,12 @@ static ssize_t dp_dsc_slice_width_write(struct file *f, const char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx || !pipe_ctx->stream)
> +	if (!pipe_ctx->stream)
>   		goto done;
>   
>   	// Safely get CRTC state
> @@ -1755,16 +1745,11 @@ static ssize_t dp_dsc_slice_height_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -1859,12 +1844,12 @@ static ssize_t dp_dsc_slice_height_write(struct file *f, const char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx || !pipe_ctx->stream)
> +	if (!pipe_ctx->stream)
>   		goto done;
>   
>   	// Get CRTC state
> @@ -1940,16 +1925,11 @@ static ssize_t dp_dsc_bits_per_pixel_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -2041,12 +2021,12 @@ static ssize_t dp_dsc_bits_per_pixel_write(struct file *f, const char __user *bu
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx || !pipe_ctx->stream)
> +	if (!pipe_ctx->stream)
>   		goto done;
>   
>   	// Get CRTC state
> @@ -2120,16 +2100,11 @@ static ssize_t dp_dsc_pic_width_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -2181,16 +2156,11 @@ static ssize_t dp_dsc_pic_height_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -2257,16 +2227,11 @@ static ssize_t dp_dsc_chunk_size_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);
> @@ -2333,16 +2298,11 @@ static ssize_t dp_dsc_slice_bpg_offset_read(struct file *f, char __user *buf,
>   
>   	for (i = 0; i < MAX_PIPES; i++) {
>   		pipe_ctx = &aconnector->dc_link->dc->current_state->res_ctx.pipe_ctx[i];
> -		if (pipe_ctx && pipe_ctx->stream &&
> +		if (pipe_ctx->stream &&
>   		    pipe_ctx->stream->link == aconnector->dc_link)
>   			break;
>   	}
>   
> -	if (!pipe_ctx) {
> -		kfree(rd_buf);
> -		return -ENXIO;
> -	}
> -
>   	dsc = pipe_ctx->stream_res.dsc;
>   	if (dsc)
>   		dsc->funcs->dsc_read_state(dsc, &dsc_state);

-- 
Hamza



More information about the amd-gfx mailing list