2019-04-06 08:22:09

by Sidong Yang

[permalink] [raw]
Subject: [PATCH] drm/vboxvideo: Avoid double check buffer_overflow in vbva_write()

In vbva_write(), We do not need to double check available chunk size if
chunk is smaller than available buffer. Put the second if clause in the
first if clause and avoid check twice.

Signed-off-by: Sidong Yang <[email protected]>
---
drivers/gpu/drm/vboxvideo/vbva_base.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/vboxvideo/vbva_base.c b/drivers/gpu/drm/vboxvideo/vbva_base.c
index 36bc9824ec3f..a0c185acf37a 100644
--- a/drivers/gpu/drm/vboxvideo/vbva_base.c
+++ b/drivers/gpu/drm/vboxvideo/vbva_base.c
@@ -80,14 +80,14 @@ bool vbva_write(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
if (chunk >= available) {
vbva_buffer_flush(ctx);
available = vbva_buffer_available(vbva);
- }
-
- if (chunk >= available) {
- if (WARN_ON(available <= vbva->partial_write_tresh)) {
- vbva_ctx->buffer_overflow = true;
- return false;
+ if (chunk >= available) {
+ if (WARN_ON(available <= vbva->partial_write_tresh)) {
+ vbva_ctx->buffer_overflow = true;
+ return false;
+ }
+ chunk = available - vbva->partial_write_tresh;
}
- chunk = available - vbva->partial_write_tresh;
+
}

vbva_buffer_place_data_at(vbva_ctx, p, chunk,
--
2.11.0


2019-04-06 09:49:50

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH] drm/vboxvideo: Avoid double check buffer_overflow in vbva_write()

Hi,

On 06-04-19 10:18, Sidong Yang wrote:
> In vbva_write(), We do not need to double check available chunk size if
> chunk is smaller than available buffer. Put the second if clause in the
> first if clause and avoid check twice.
>
> Signed-off-by: Sidong Yang <[email protected]>

The code pattern of checking some condition, then fixing it up
and checking again without putting the second check inside the
first check's if block is quite normal and IMHO is more readable
then the nested version with all the extra indentation.

I"m sure the compiler is more then smart enough to just optimize
away the second check if the first one succeeds.

So I see no benefits to this patch, so nack from me.

Regards,

Hans


> ---
> drivers/gpu/drm/vboxvideo/vbva_base.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/vboxvideo/vbva_base.c b/drivers/gpu/drm/vboxvideo/vbva_base.c
> index 36bc9824ec3f..a0c185acf37a 100644
> --- a/drivers/gpu/drm/vboxvideo/vbva_base.c
> +++ b/drivers/gpu/drm/vboxvideo/vbva_base.c
> @@ -80,14 +80,14 @@ bool vbva_write(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
> if (chunk >= available) {
> vbva_buffer_flush(ctx);
> available = vbva_buffer_available(vbva);
> - }
> -
> - if (chunk >= available) {
> - if (WARN_ON(available <= vbva->partial_write_tresh)) {
> - vbva_ctx->buffer_overflow = true;
> - return false;
> + if (chunk >= available) {
> + if (WARN_ON(available <= vbva->partial_write_tresh)) {
> + vbva_ctx->buffer_overflow = true;
> + return false;
> + }
> + chunk = available - vbva->partial_write_tresh;
> }
> - chunk = available - vbva->partial_write_tresh;
> +
> }
>
> vbva_buffer_place_data_at(vbva_ctx, p, chunk,
>