From 1f0dd7f0256adb6861b8a0409bcc48929c540077 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 16 Oct 2023 16:07:19 -0700 Subject: [PATCH] __vmalloc defaults to PAGE_KERNEL everywhere, so the arg was removed. v5.7-523-g88dca4ca5a93 __vmalloc no longer has the 3rd argument. Signed-off-by: Auke Kok --- kmod/src/Makefile.kernelcompat | 7 +++++++ kmod/src/block.c | 2 +- kmod/src/kernelcompat.h | 6 ++++++ kmod/src/quorum.c | 4 ++-- kmod/src/srch.c | 3 +-- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/kmod/src/Makefile.kernelcompat b/kmod/src/Makefile.kernelcompat index 849db059..efa89b4e 100644 --- a/kmod/src/Makefile.kernelcompat +++ b/kmod/src/Makefile.kernelcompat @@ -275,3 +275,10 @@ endif ifneq (,$(shell grep 'const struct list_head ., const struct list_head .' include/linux/list_sort.h)) ccflags-y += -DKC_LIST_CMP_CONST_ARG_LIST_HEAD endif + +# v5.7-523-g88dca4ca5a93 +# +# The pgprot argument to vmalloc is always PAGE_KERNEL, so it is removed. +ifneq (,$(shell grep 'extern void .__vmalloc.unsigned long size, gfp_t gfp_mask, pgprot_t prot' include/linux/vmalloc.h)) +ccflags-y += -DKC_VMALLOC_PGPROT_T +endif diff --git a/kmod/src/block.c b/kmod/src/block.c index 08acc05e..ca051967 100644 --- a/kmod/src/block.c +++ b/kmod/src/block.c @@ -158,7 +158,7 @@ static struct block_private *block_alloc(struct super_block *sb, u64 blkno) */ lockdep_off(); nofs_flags = memalloc_nofs_save(); - bp->virt = __vmalloc(SCOUTFS_BLOCK_LG_SIZE, GFP_NOFS | __GFP_HIGHMEM, PAGE_KERNEL); + bp->virt = kc__vmalloc(SCOUTFS_BLOCK_LG_SIZE, GFP_NOFS | __GFP_HIGHMEM); memalloc_nofs_restore(nofs_flags); lockdep_on(); diff --git a/kmod/src/kernelcompat.h b/kmod/src/kernelcompat.h index 54377d56..361f5380 100644 --- a/kmod/src/kernelcompat.h +++ b/kmod/src/kernelcompat.h @@ -284,4 +284,10 @@ typedef unsigned int blk_opf_t; #define KC_LIST_CMP_CONST #endif +#ifdef KC_VMALLOC_PGPROT_T +#define kc__vmalloc(size, gfp_mask) __vmalloc(size, gfp_mask, PAGE_KERNEL) +#else +#define kc__vmalloc __vmalloc +#endif + #endif diff --git a/kmod/src/quorum.c b/kmod/src/quorum.c index 88e5c07a..da850cc7 100644 --- a/kmod/src/quorum.c +++ b/kmod/src/quorum.c @@ -1325,8 +1325,8 @@ int scoutfs_quorum_setup(struct super_block *sb) qinf = kzalloc(sizeof(struct quorum_info), GFP_KERNEL); super = kmalloc(sizeof(struct scoutfs_super_block), GFP_KERNEL); if (qinf) - qinf->hb_delay = __vmalloc(HB_DELAY_NR * sizeof(struct count_recent), - GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL); + qinf->hb_delay = kc__vmalloc(HB_DELAY_NR * sizeof(struct count_recent), + GFP_KERNEL | __GFP_ZERO); if (!qinf || !super || !qinf->hb_delay) { if (qinf) vfree(qinf->hb_delay); diff --git a/kmod/src/srch.c b/kmod/src/srch.c index bd98aa6b..99ea6448 100644 --- a/kmod/src/srch.c +++ b/kmod/src/srch.c @@ -1589,8 +1589,7 @@ static int kway_merge(struct super_block *sb, nr_parents = max_t(unsigned long, 1, roundup_pow_of_two(nr) - 1); /* root at [1] for easy sib/parent index calc, final pad for odd sib */ nr_nodes = 1 + nr_parents + nr + 1; - tnodes = __vmalloc(nr_nodes * sizeof(struct tourn_node), - GFP_NOFS, PAGE_KERNEL); + tnodes = kc__vmalloc(nr_nodes * sizeof(struct tourn_node), GFP_NOFS); if (!tnodes) return -ENOMEM;