From ff8ffa39d1251aac5235dbe4d9ad672b9ed2ce1a Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 23 May 2024 13:43:36 +0200 Subject: [PATCH] 4.19-stable patches added patches: dm-limit-the-number-of-targets-and-parameter-size-area.patch revert-selftests-mm-fix-map_hugetlb-failure-on-64k-page-size-systems.patch --- ...r-of-targets-and-parameter-size-area.patch | 74 +++++++++++++++++++ ...tlb-failure-on-64k-page-size-systems.patch | 55 ++++++++++++++ queue-4.19/series | 2 + 3 files changed, 131 insertions(+) create mode 100644 queue-4.19/dm-limit-the-number-of-targets-and-parameter-size-area.patch create mode 100644 queue-4.19/revert-selftests-mm-fix-map_hugetlb-failure-on-64k-page-size-systems.patch diff --git a/queue-4.19/dm-limit-the-number-of-targets-and-parameter-size-area.patch b/queue-4.19/dm-limit-the-number-of-targets-and-parameter-size-area.patch new file mode 100644 index 00000000000..cb2e467ca84 --- /dev/null +++ b/queue-4.19/dm-limit-the-number-of-targets-and-parameter-size-area.patch @@ -0,0 +1,74 @@ +From bd504bcfec41a503b32054da5472904b404341a4 Mon Sep 17 00:00:00 2001 +From: Mikulas Patocka +Date: Tue, 9 Jan 2024 15:57:56 +0100 +Subject: dm: limit the number of targets and parameter size area + +From: Mikulas Patocka + +commit bd504bcfec41a503b32054da5472904b404341a4 upstream. + +The kvmalloc function fails with a warning if the size is larger than +INT_MAX. The warning was triggered by a syscall testing robot. + +In order to avoid the warning, this commit limits the number of targets to +1048576 and the size of the parameter area to 1073741824. + +Signed-off-by: Mikulas Patocka +Signed-off-by: Mike Snitzer +[srish: Apply to stable branch linux-4.19.y] +Signed-off-by: Srish Srinivasan +Signed-off-by: Greg Kroah-Hartman +--- + drivers/md/dm-core.h | 2 ++ + drivers/md/dm-ioctl.c | 3 ++- + drivers/md/dm-table.c | 9 +++++++-- + 3 files changed, 11 insertions(+), 3 deletions(-) + +--- a/drivers/md/dm-core.h ++++ b/drivers/md/dm-core.h +@@ -18,6 +18,8 @@ + #include "dm.h" + + #define DM_RESERVED_MAX_IOS 1024 ++#define DM_MAX_TARGETS 1048576 ++#define DM_MAX_TARGET_PARAMS 1024 + + struct dm_kobject_holder { + struct kobject kobj; +--- a/drivers/md/dm-ioctl.c ++++ b/drivers/md/dm-ioctl.c +@@ -1734,7 +1734,8 @@ static int copy_params(struct dm_ioctl _ + if (copy_from_user(param_kernel, user, minimum_data_size)) + return -EFAULT; + +- if (param_kernel->data_size < minimum_data_size) ++ if (unlikely(param_kernel->data_size < minimum_data_size) || ++ unlikely(param_kernel->data_size > DM_MAX_TARGETS * DM_MAX_TARGET_PARAMS)) + return -EINVAL; + + secure_data = param_kernel->flags & DM_SECURE_DATA_FLAG; +--- a/drivers/md/dm-table.c ++++ b/drivers/md/dm-table.c +@@ -187,7 +187,12 @@ static int alloc_targets(struct dm_table + int dm_table_create(struct dm_table **result, fmode_t mode, + unsigned num_targets, struct mapped_device *md) + { +- struct dm_table *t = kzalloc(sizeof(*t), GFP_KERNEL); ++ struct dm_table *t; ++ ++ if (num_targets > DM_MAX_TARGETS) ++ return -EOVERFLOW; ++ ++ t = kzalloc(sizeof(*t), GFP_KERNEL); + + if (!t) + return -ENOMEM; +@@ -202,7 +207,7 @@ int dm_table_create(struct dm_table **re + + if (!num_targets) { + kfree(t); +- return -ENOMEM; ++ return -EOVERFLOW; + } + + if (alloc_targets(t, num_targets)) { diff --git a/queue-4.19/revert-selftests-mm-fix-map_hugetlb-failure-on-64k-page-size-systems.patch b/queue-4.19/revert-selftests-mm-fix-map_hugetlb-failure-on-64k-page-size-systems.patch new file mode 100644 index 00000000000..8082151fe11 --- /dev/null +++ b/queue-4.19/revert-selftests-mm-fix-map_hugetlb-failure-on-64k-page-size-systems.patch @@ -0,0 +1,55 @@ +From harshit.m.mogalapalli@oracle.com Thu May 23 13:23:34 2024 +From: Harshit Mogalapalli +Date: Mon, 6 May 2024 03:57:24 -0700 +Subject: Revert "selftests: mm: fix map_hugetlb failure on 64K page size systems" +To: stable@vger.kernel.org +Cc: shuah@kernel.org, sashal@kernel.org, vegard.nossum@oracle.com, darren.kenny@oracle.com, Harshit Mogalapalli +Message-ID: <20240506105724.3068232-1-harshit.m.mogalapalli@oracle.com> + + +This reverts commit abdbd5f3e8c504d864fdc032dd5a4eb481cb12bf which is commit +91b80cc5b39f00399e8e2d17527cad2c7fa535e2 upstream. + +map_hugetlb.c:18:10: fatal error: vm_util.h: No such file or directory + 18 | #include "vm_util.h" + | ^~~~~~~~~~~ +compilation terminated. + +vm_util.h is not present in 4.19.y, as commit:642bc52aed9c ("selftests: +vm: bring common functions to a new file") is not present in stable +kernels <=6.1.y + +Signed-off-by: Harshit Mogalapalli +Cc: Shuah Khan +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/vm/map_hugetlb.c | 7 ------- + 1 file changed, 7 deletions(-) + +--- a/tools/testing/selftests/vm/map_hugetlb.c ++++ b/tools/testing/selftests/vm/map_hugetlb.c +@@ -15,7 +15,6 @@ + #include + #include + #include +-#include "vm_util.h" + + #define LENGTH (256UL*1024*1024) + #define PROTECTION (PROT_READ | PROT_WRITE) +@@ -71,16 +70,10 @@ int main(int argc, char **argv) + { + void *addr; + int ret; +- size_t hugepage_size; + size_t length = LENGTH; + int flags = FLAGS; + int shift = 0; + +- hugepage_size = default_huge_page_size(); +- /* munmap with fail if the length is not page aligned */ +- if (hugepage_size > length) +- length = hugepage_size; +- + if (argc > 1) + length = atol(argv[1]) << 20; + if (argc > 2) { diff --git a/queue-4.19/series b/queue-4.19/series index e69de29bb2d..3d957c42dee 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -0,0 +1,2 @@ +revert-selftests-mm-fix-map_hugetlb-failure-on-64k-page-size-systems.patch +dm-limit-the-number-of-targets-and-parameter-size-area.patch -- 2.47.3