Files
linux/include/uapi/linux
Deepanshu Kartikey a58383fa45 block: add allocation size check in blkdev_pr_read_keys()
blkdev_pr_read_keys() takes num_keys from userspace and uses it to
calculate the allocation size for keys_info via struct_size(). While
there is a check for SIZE_MAX (integer overflow), there is no upper
bound validation on the allocation size itself.

A malicious or buggy userspace can pass a large num_keys value that
doesn't trigger overflow but still results in an excessive allocation
attempt, causing a warning in the page allocator when the order exceeds
MAX_PAGE_ORDER.

Fix this by introducing PR_KEYS_MAX to limit the number of keys to
a sane value. This makes the SIZE_MAX check redundant, so remove it.
Also switch to kvzalloc/kvfree to handle larger allocations gracefully.

Fixes: 22a1ffea5f ("block: add IOC_PR_READ_KEYS ioctl")
Tested-by: syzbot+660d079d90f8a1baf54d@syzkaller.appspotmail.com
Reported-by: syzbot+660d079d90f8a1baf54d@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=660d079d90f8a1baf54d
Link: https://lore.kernel.org/all/20251212013510.3576091-1-kartikey406@gmail.com/T/ [v1]
Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2025-12-17 07:35:22 -07:00
..
2024-04-15 13:42:38 +02:00
2025-11-24 21:56:17 +01:00
2025-02-05 13:22:04 +09:00
2024-06-11 12:57:49 -05:00
2025-02-12 02:29:30 +00:00
2025-10-28 22:59:19 +01:00
2025-11-25 19:20:42 -08:00
2025-11-05 08:07:21 -07:00
2025-09-05 09:11:28 +02:00
2025-05-03 12:02:09 +02:00
2024-05-07 01:35:57 +02:00
2025-07-14 09:15:58 +02:00
2024-04-01 10:49:28 +01:00
2024-08-26 09:37:23 -07:00
2025-09-15 14:32:54 +02:00
2024-06-01 07:28:21 +02:00
2024-09-01 20:26:05 -07:00
2025-04-17 11:09:10 +02:00
2024-08-19 22:36:26 -04:00
2025-07-08 12:39:24 +02:00
2023-12-15 17:01:30 +01:00
2024-09-06 08:31:40 -06:00
2024-08-12 17:50:34 -07:00
2025-11-03 17:41:18 +01:00
2023-11-28 19:05:16 +00:00
2025-01-08 13:18:11 +01:00
2025-10-30 14:25:14 +01:00
2025-11-25 19:20:42 -08:00
2023-12-20 19:26:31 -05:00
2025-11-04 08:30:09 +01:00
2025-02-25 18:14:03 -08:00
2025-07-14 18:41:42 -07:00
2025-06-19 14:28:22 +02:00
2025-05-21 13:41:03 +02:00
2025-04-17 12:30:02 +02:00
2023-12-29 11:58:24 -08:00
2025-09-21 17:44:20 -04:00
2025-09-22 09:29:28 +01:00
2025-05-27 10:27:54 -04:00
2025-09-22 09:29:29 +01:00