Kees Cook
0ed2dd03b9
treewide: Use struct_size() for devm_kmalloc() and friends
...
Replaces open-coded struct size calculations with struct_size() for
devm_*, f2fs_*, and sock_* allocations. Automatically generated (and
manually adjusted) from the following Coccinelle script:
// Direct reference to struct field.
@@
identifier alloc =~ "devm_kmalloc|devm_kzalloc|sock_kmalloc|f2fs_kmalloc|f2fs_kzalloc";
expression HANDLE;
expression GFP;
identifier VAR, ELEMENT;
expression COUNT;
@@
- alloc(HANDLE, sizeof(*VAR) + COUNT * sizeof(*VAR->ELEMENT), GFP)
+ alloc(HANDLE, struct_size(VAR, ELEMENT, COUNT), GFP)
// mr = kzalloc(sizeof(*mr) + m * sizeof(mr->map[0]), GFP_KERNEL);
@@
identifier alloc =~ "devm_kmalloc|devm_kzalloc|sock_kmalloc|f2fs_kmalloc|f2fs_kzalloc";
expression HANDLE;
expression GFP;
identifier VAR, ELEMENT;
expression COUNT;
@@
- alloc(HANDLE, sizeof(*VAR) + COUNT * sizeof(VAR->ELEMENT[0]), GFP)
+ alloc(HANDLE, struct_size(VAR, ELEMENT, COUNT), GFP)
// Same pattern, but can't trivially locate the trailing element name,
// or variable name.
@@
identifier alloc =~ "devm_kmalloc|devm_kzalloc|sock_kmalloc|f2fs_kmalloc|f2fs_kzalloc";
expression HANDLE;
expression GFP;
expression SOMETHING, COUNT, ELEMENT;
@@
- alloc(HANDLE, sizeof(SOMETHING) + COUNT * sizeof(ELEMENT), GFP)
+ alloc(HANDLE, CHECKME_struct_size(&SOMETHING, ELEMENT, COUNT), GFP)
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-06-06 11:15:43 -07:00
..
2017-08-31 13:39:38 +02:00
2017-11-16 10:57:11 -08:00
2017-08-14 15:01:02 +02:00
2018-03-23 04:16:10 +01:00
2018-03-23 04:07:22 +01:00
2018-03-26 10:58:33 +02:00
2018-04-03 12:20:54 -07:00
2018-02-02 14:22:53 -08:00
2018-03-23 03:38:14 +01:00
2017-11-30 14:42:04 +01:00
2018-04-05 09:51:41 -07:00
2018-06-06 11:15:43 -07:00
2018-04-03 12:20:54 -07:00
2017-11-09 09:38:42 +01:00
2018-01-03 08:46:55 +01:00
2018-01-16 11:08:24 +01:00
2018-03-23 04:04:40 +01:00
2018-03-27 15:09:42 +02:00
2018-01-03 08:46:55 +01:00
2017-11-08 13:49:57 +01:00
2018-06-06 11:15:43 -07:00
2018-01-08 08:15:46 +01:00
2017-08-14 15:01:01 +02:00
2018-03-02 11:05:35 +01:00
2017-09-22 11:02:10 +02:00
2018-03-02 09:41:21 +01:00
2017-01-03 09:26:16 +01:00
2018-04-03 12:20:54 -07:00
2018-04-03 12:20:54 -07:00
2017-11-08 13:49:45 +01:00
2017-08-14 15:01:59 +02:00
2017-08-14 15:01:02 +02:00
2018-03-26 11:09:49 +02:00
2017-09-12 15:58:45 +02:00
2018-03-01 17:04:09 +01:00
2016-04-21 09:23:21 +02:00
2018-01-08 08:15:47 +01:00
2018-01-03 08:46:49 +01:00
2018-01-08 08:15:47 +01:00
2017-11-08 14:06:21 +01:00
2017-11-02 11:10:55 +01:00
2017-01-26 15:27:54 +01:00
2017-08-22 14:39:36 +02:00
2016-12-30 09:17:02 +01:00
2018-02-02 14:22:53 -08:00
2018-01-18 08:51:32 +01:00
2016-12-30 09:17:02 +01:00
2016-12-30 09:17:02 +01:00
2017-01-26 15:22:32 +01:00
2017-11-08 13:49:57 +01:00
2018-02-22 16:08:59 +01:00
2018-03-26 11:04:48 +02:00
2017-11-08 14:06:21 +01:00
2018-01-03 08:46:49 +01:00
2017-11-08 14:06:21 +01:00
2017-11-08 14:06:21 +01:00
2017-08-21 08:54:46 +01:00
2018-01-03 08:46:51 +01:00
2017-10-09 09:16:21 +02:00
2018-03-26 10:48:17 +02:00
2017-11-08 14:06:21 +01:00
2018-01-18 11:04:47 +01:00
2017-08-22 14:41:40 +02:00
2016-06-13 09:27:43 +02:00
2018-01-03 08:46:53 +01:00
2016-04-01 15:06:36 +02:00
2018-01-03 08:46:53 +01:00
2017-08-14 15:01:01 +02:00
2018-01-16 11:07:18 +01:00
2017-08-14 15:01:02 +02:00