OpenCloudOS-Kernel/drivers/scsi/fnic
Julia Lawall b34c7dcaf3 scsi: fnic: Use vmalloc_array() and vcalloc()
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@inria.fr>
Link: https://lore.kernel.org/r/20230627144339.144478-8-Julia.Lawall@inria.fr
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2023-07-05 21:34:30 -04:00
..
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cq_desc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
cq_enet_desc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
cq_exch_desc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fcpio.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_attrs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_debugfs.c scsi: fnic: Use vzalloc() 2023-05-31 20:07:42 -04:00
fnic_fcs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_fip.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_io.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_isr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_main.c scsi: fnic: Declare host template const 2023-03-24 19:19:22 -04:00
fnic_res.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_res.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_scsi.c SPDX changes for 6.0-rc1 2022-08-04 12:12:54 -07:00
fnic_stats.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
fnic_trace.c scsi: fnic: Use vmalloc_array() and vcalloc() 2023-07-05 21:34:30 -04:00
fnic_trace.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
rq_enet_desc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_cq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_cq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_cq_copy.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_dev.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_dev.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_devcmd.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_intr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_intr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_nic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_resource.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_rq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_rq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_scsi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_stats.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_wq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_wq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_wq_copy.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
vnic_wq_copy.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00
wq_enet_desc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_168.RULE (part 1) 2022-06-10 14:51:36 +02:00