# \[patch\] viafb: NULL dereference on allocation failure in query\_edid()

- Subsystems: FRAMEBUFFER LAYER, THE REST
- Maintainers: Helge Deller, Linus Torvalds
- List: linux-fbdev
- 2 messages, 2 authors
- Page: https://ratatoskr.run/linux-fbdev/2012/02/13149874/t

## \[patch\] viafb: NULL dereference on allocation failure in query\_edid()

- From: Dan Carpenter \<hidden\>
- Date: 2012-02-17 06:45:01 
- Message: https://ratatoskr.run/linux-fbdev/2012/02/13149874.md

```text
We should handle the allocation here, if only to keep the static
checkers happy.

Signed-off-by: Dan Carpenter <redacted>

diff --git a/drivers/video/via/via_aux_edid.c b/drivers/video/via/via_aux_edid.c
index 03f7a41..754d450 100644
--- a/drivers/video/via/via_aux_edid.c
+++ b/drivers/video/via/via_aux_edid.c
@@ -36,10 +36,13 @@ static void query_edid(struct via_aux_drv *drv)
 	unsigned char edid[EDID_LENGTH];
 	bool valid = false;
 
-	if (spec)
+	if (spec) {
 		fb_destroy_modedb(spec->modedb);
-	else
+	} else {
 		spec = kmalloc(sizeof(*spec), GFP_KERNEL);
+		if (!spec)
+			return;
+	}
 
 	spec->version = spec->revision = 0;
 	if (via_aux_read(drv, 0x00, edid, EDID_LENGTH)) {
```

## Re: \[patch\] viafb: NULL dereference on allocation failure in query\_edid()

- From: Florian Tobias Schandinat \<FlorianSchandinat@gmx.de\>
- Date: 2012-02-17 07:30:07 
- Message: https://ratatoskr.run/linux-fbdev/2012/02/13149875.md

```text
On 02/17/2012 06:45 AM, Dan Carpenter wrote:
> We should handle the allocation here, if only to keep the static
> checkers happy.
> 
> Signed-off-by: Dan Carpenter <redacted>

Ah, thanks for noticing it and sorry that I introduced it in the first place.
Applied.


Thanks,

Florian Tobias Schandinat

> 
> diff --git a/drivers/video/via/via_aux_edid.c b/drivers/video/via/via_aux_edid.c
> index 03f7a41..754d450 100644
> --- a/drivers/video/via/via_aux_edid.c
> +++ b/drivers/video/via/via_aux_edid.c
> @@ -36,10 +36,13 @@ static void query_edid(struct via_aux_drv *drv)
>  	unsigned char edid[EDID_LENGTH];
>  	bool valid = false;
>  
> -	if (spec)
> +	if (spec) {
>  		fb_destroy_modedb(spec->modedb);
> -	else
> +	} else {
>  		spec = kmalloc(sizeof(*spec), GFP_KERNEL);
> +		if (!spec)
> +			return;
> +	}
>  
>  	spec->version = spec->revision = 0;
>  	if (via_aux_read(drv, 0x00, edid, EDID_LENGTH)) {
> 

```
