Hello, I have tried another source code transformation approach out with the software combination “Coccinelle 1.0.8-00004-g842075f7”.
@replacement@ expression count, item, source, target; type t1, t2; @@ target = kmemdup(source, + array_size( ( sizeof( - t1 + *source ) | count ) - * + , ( sizeof( - t2 + *source ) | item ) + ) , ...); This small SmPL script can produce some “usable” results. But I find the source code formatting occasionally questionable according to the Linux coding style. Example: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/mach-omap2/omap_device.c?id=5bc52f64e8841c4526d74f1073bfa95d4f6224d4#n348 https://elixir.bootlin.com/linux/v5.4-rc2/source/arch/arm/mach-omap2/omap_device.c#L348 elfring@Sonne:~/Projekte/Linux/next-patched> spatch arch/arm/mach-omap2/omap_device.c ~/Projekte/Coccinelle/janitor/use_array_size_for_kmemdup2.cocci … @@ -345,7 +345,7 @@ struct omap_device *omap_device_alloc(st } od->hwmods_cnt = oh_cnt; - hwmods = kmemdup(ohs, sizeof(struct omap_hwmod *) * oh_cnt, GFP_KERNEL); + hwmods = kmemdup(ohs,array_size( sizeof(*ohs), oh_cnt), GFP_KERNEL); if (!hwmods) goto oda_exit2; … Would you like to clarify pretty-printing concerns? Regards, Markus _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci