Re: [PATCH v2 03/24] drm/gud: use vmalloc_array and vcalloc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Am 27.06.23 um 16:43 schrieb Julia Lawall:
Use vmalloc_array and vcalloc to protect against
multiplication overflows.

The changes were done using the following Coccinelle
semantic patch:

// <smpl>
@initialize:ocaml@
@@

let rename alloc =
   match alloc with
     "vmalloc" -> "vmalloc_array"
   | "vzalloc" -> "vcalloc"
   | _ -> failwith "unknown"

@@
     size_t e1,e2;
     constant C1, C2;
     expression E1, E2, COUNT, x1, x2, x3;
     typedef u8;
     typedef __u8;
     type t = {u8,__u8,char,unsigned char};
     identifier alloc = {vmalloc,vzalloc};
     fresh identifier realloc = script:ocaml(alloc) { rename alloc };
@@

(
       alloc(x1*x2*x3)
|
       alloc(C1 * C2)
|
       alloc((sizeof(t)) * (COUNT), ...)
|
-     alloc((e1) * (e2))
+     realloc(e1, e2)
|
-     alloc((e1) * (COUNT))
+     realloc(COUNT, e1)
|
-     alloc((E1) * (E2))
+     realloc(E1, E2)
)
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@xxxxxxxx>

Reviewed-by: Thomas Zimmermann <tzimmermann@xxxxxxx>


---
v2: Use vmalloc_array and vcalloc instead of array_size.
This also leaves a multiplication of a constant by a sizeof
as is.  Two patches are thus dropped from the series.

  drivers/gpu/drm/gud/gud_pipe.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
--- a/drivers/gpu/drm/gud/gud_pipe.c
+++ b/drivers/gpu/drm/gud/gud_pipe.c
@@ -390,7 +390,7 @@ static int gud_fb_queue_damage(struct gu
  	mutex_lock(&gdrm->damage_lock);
if (!gdrm->shadow_buf) {
-		gdrm->shadow_buf = vzalloc(fb->pitches[0] * fb->height);
+		gdrm->shadow_buf = vcalloc(fb->pitches[0], fb->height);
  		if (!gdrm->shadow_buf) {
  			mutex_unlock(&gdrm->damage_lock);
  			return -ENOMEM;


--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux