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
..
2018-03-17 14:20:55 +01:00
2018-03-27 10:44:43 +02:00
2018-03-17 14:20:55 +01:00
2018-04-10 10:22:27 -07:00
2018-04-10 10:22:27 -07:00
2018-03-01 10:49:15 +01:00
2018-03-27 10:45:04 +02:00
2018-03-27 10:45:04 +02:00
2018-03-01 10:49:41 +01:00
2018-03-27 10:45:05 +02:00
2018-04-10 10:22:27 -07:00
2018-03-02 10:12:23 +01:00
2018-06-06 11:15:43 -07:00
2017-10-25 23:05:52 +02:00
2017-11-10 16:24:32 +01:00
2018-03-17 14:20:57 +01:00
2018-03-02 10:09:58 +01:00
2018-03-17 14:20:56 +01:00
2018-03-17 14:20:51 +01:00
2018-04-10 10:22:27 -07:00
2018-03-01 10:49:41 +01:00
2018-03-01 10:49:15 +01:00
2018-03-02 10:09:59 +01:00
2018-03-17 14:20:53 +01:00
2018-03-02 10:11:02 +01:00
2018-03-02 10:11:02 +01:00
2018-03-02 10:11:02 +01:00
2018-02-11 14:34:03 -08:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-01 10:49:38 +01:00
2018-03-01 10:49:39 +01:00
2017-09-01 01:10:11 +02:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2017-11-02 11:10:55 +01:00
2018-03-02 10:09:58 +01:00
2017-09-01 01:10:11 +02:00
2018-03-02 10:09:58 +01:00
2018-02-13 21:46:04 +01:00
2018-03-17 14:20:54 +01:00
2018-04-03 16:40:46 +02:00
2018-03-17 14:20:51 +01:00
2018-03-01 10:49:41 +01:00
2018-03-17 14:20:50 +01:00
2018-03-02 10:09:58 +01:00
2018-03-01 10:49:41 +01:00
2018-03-01 10:49:41 +01:00
2018-03-17 14:20:48 +01:00
2018-03-02 10:12:19 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-17 14:20:46 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:12:20 +01:00
2018-03-01 10:49:41 +01:00
2018-03-17 14:20:56 +01:00
2018-03-01 10:49:41 +01:00
2018-03-27 10:45:03 +02:00
2018-03-02 10:09:58 +01:00
2018-04-03 16:40:48 +02:00
2018-03-27 10:45:02 +02:00
2018-03-01 10:49:36 +01:00
2017-08-24 16:23:16 +02:00
2018-03-02 10:12:17 +01:00
2018-03-02 10:12:21 +01:00
2018-04-25 13:24:13 +10:00
2018-03-01 10:49:41 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2017-11-09 01:16:36 +01:00
2018-03-02 10:09:58 +01:00
2018-03-17 14:20:57 +01:00
2018-03-17 14:20:49 +01:00
2018-03-02 10:09:58 +01:00
2017-10-12 16:30:30 +02:00
2018-03-17 14:20:52 +01:00
2018-03-01 10:49:41 +01:00
2018-03-02 10:12:18 +01:00
2018-03-02 10:09:58 +01:00
2018-03-17 14:20:42 +01:00
2018-03-02 10:09:58 +01:00
2018-03-01 10:49:40 +01:00
2018-03-17 14:20:45 +01:00
2017-09-05 09:55:02 +02:00
2017-10-12 16:24:19 +02:00
2018-03-01 10:49:23 +01:00
2018-03-02 10:12:24 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:12:24 +01:00
2018-03-02 10:09:58 +01:00
2018-03-17 14:20:57 +01:00
2018-03-17 14:20:44 +01:00
2017-11-02 11:10:55 +01:00
2018-03-02 10:12:18 +01:00
2018-03-02 10:09:58 +01:00
2018-03-01 10:49:27 +01:00
2018-04-03 16:43:36 +02:00
2018-03-02 10:12:21 +01:00
2018-03-27 10:45:03 +02:00
2018-03-01 10:49:41 +01:00
2018-03-01 10:49:40 +01:00
2017-11-29 22:20:56 +01:00
2018-03-02 10:09:58 +01:00
2018-03-02 10:09:58 +01:00
2018-03-17 14:20:54 +01:00
2018-03-02 10:12:22 +01:00
2018-03-01 10:49:41 +01:00
2017-09-04 14:41:02 +01:00
2018-03-01 10:49:41 +01:00
2017-08-24 11:03:36 +02:00
2018-03-01 10:49:41 +01:00
2018-03-01 10:49:41 +01:00
2018-03-01 10:49:41 +01:00
2018-03-27 10:45:05 +02:00