2014-07-23 21:19:08

by Rickard Strandqvist

[permalink] [raw]
Subject: [PATCH v2] video: fbdev: uvesafb.c: Added additional error checking

Variable was assigned a value that is never used.
Now the variable is used, and the function returns if a call to
uvesafb_exec() returns a error.

Signed-off-by: Rickard Strandqvist <[email protected]>
---
drivers/video/fbdev/uvesafb.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 509d452..47c2d74 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -561,6 +561,8 @@ static int uvesafb_vbe_getpmi(struct uvesafb_ktask *task,
task->t.regs.eax = 0x4f0a;
task->t.regs.ebx = 0x0;
err = uvesafb_exec(task);
+ if (err)
+ return err;

if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
par->pmi_setpal = par->ypan = 0;
--
1.7.10.4


2014-07-24 17:32:48

by Wang YanQing

[permalink] [raw]
Subject: Re: [PATCH v2] video: fbdev: uvesafb.c: Added additional error checking

On Wed, Jul 23, 2014 at 11:20:27PM +0200, Rickard Strandqvist wrote:
> Variable was assigned a value that is never used.
> Now the variable is used, and the function returns if a call to
> uvesafb_exec() returns a error.

Because the only user of uvesafb_vbe_getpmi in uvesafb.c
don't check its return value, it should do the check indeed,
so maybe below change is better:

- if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
+ if (err || (task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
par->pmi_setpal = par->ypan = 0;
}

Or we check uvesafb_vbe_getpmi's return value, then the code will looks like below:

if (uvesafb_vbe_getpmi(task, par))
par->pmi_setpal = par->ypan = 0;


Thanks.

2014-07-24 17:37:51

by Wang YanQing

[permalink] [raw]
Subject: Re: [PATCH v2] video: fbdev: uvesafb.c: Added additional error checking

On Wed, Jul 23, 2014 at 11:20:27PM +0200, Rickard Strandqvist wrote:
> Variable was assigned a value that is never used.
> Now the variable is used, and the function returns if a call to
> uvesafb_exec() returns a error.

Because the only user of uvesafb_vbe_getpmi in uvesafb.c
don't check its return value, it should do the check indeed,
so maybe below change is better:

- if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
+ if (err || (task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
par->pmi_setpal = par->ypan = 0;
}

Or we check uvesafb_vbe_getpmi's return value, then the code will looks like below:

if (uvesafb_vbe_getpmi(task, par))
par->pmi_setpal = par->ypan = 0;


Add cc:[email protected], you should cc all the people who replied your patch
in later patch version.

Thanks.

2014-07-26 10:26:56

by Rickard Strandqvist

[permalink] [raw]
Subject: Re: [PATCH v2] video: fbdev: uvesafb.c: Added additional error checking

2014-07-24 19:36 GMT+02:00 Wang YanQing <[email protected]>:
> On Wed, Jul 23, 2014 at 11:20:27PM +0200, Rickard Strandqvist wrote:
>> Variable was assigned a value that is never used.
>> Now the variable is used, and the function returns if a call to
>> uvesafb_exec() returns a error.
>
> Because the only user of uvesafb_vbe_getpmi in uvesafb.c
> don't check its return value, it should do the check indeed,
> so maybe below change is better:
>
> - if ((task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
> + if (err || (task->t.regs.eax & 0xffff) != 0x4f || task->t.regs.es < 0xc000) {
> par->pmi_setpal = par->ypan = 0;
> }
>
> Or we check uvesafb_vbe_getpmi's return value, then the code will looks like below:
>
> if (uvesafb_vbe_getpmi(task, par))
> par->pmi_setpal = par->ypan = 0;


Hi

Sure, I saw that much of the other code using something like:
if (err || ...)


But this whole discussion start with that you wished it would return
the error, and then error code I assumed?

Ok, but something like this then?

err = uvesafb_exec(task);
if (err) {
par->pmi_setpal = par->ypan = 0;
return err;
}


Kind regards
Rickard Strandqvist