From 463ef751dc46865cef455858e477c5b654bf3058 Mon Sep 17 00:00:00 2001 From: Malik Date: Thu, 29 Aug 2024 09:15:13 -0400 Subject: [PATCH 1/6] Fix function that broke from kernel 6.10 --- Makefile | 1 + memflow-kmod/vmtools.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 413a831..a79cba2 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,7 @@ all: $(KOUTPUT_MAKEFILE) @echo "$(KOUTPUT)" make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod modules + mv $(PWD)/memflow-kmod/memflow.ko ./build/ $(KOUTPUT): mkdir -p "$@" diff --git a/memflow-kmod/vmtools.c b/memflow-kmod/vmtools.c index 1d04dd9..b2db6f2 100644 --- a/memflow-kmod/vmtools.c +++ b/memflow-kmod/vmtools.c @@ -321,8 +321,12 @@ static int memflow_vm_mem_mmap(struct file *file, struct vm_area_struct *vma) static unsigned long memflow_vm_mem_get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { - struct vm_mem_data *data = file->private_data; - return get_unmapped_area(data->wrapped_vma->vm_file, addr, len, pgoff + data->wrapped_vma->vm_pgoff, flags); + struct vm_mem_data *data = file->private_data; +#if LINUX_VERSION_CODE < KERNEL_VERSION(6,10,0) + return get_unmapped_area(data->wrapped_vma->vm_file, addr, len, pgoff + data->wrapped_vma->vm_pgoff, flags); +#else + return mm_get_unmapped_area(data->wrapped_task->mm, data->wrapped_vma->vm_file, addr, len, pgoff + data->wrapped_vma->vm_pgoff, flags); +#endif } static const struct file_operations memflow_vm_mem_fops = { From b91b85d2fe331cc2cec873931f3ea178f0f8552d Mon Sep 17 00:00:00 2001 From: Malik Date: Thu, 29 Aug 2024 09:20:09 -0400 Subject: [PATCH 2/6] Clean first? --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a79cba2..139572d 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ KOUTPUT_MAKEFILE := $(KOUTPUT)/Makefile all: $(KOUTPUT_MAKEFILE) @echo "$(KOUTPUT)" - + make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod clean make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod modules mv $(PWD)/memflow-kmod/memflow.ko ./build/ From 68353fc2c7614bf2e23b07360b8b5ce00b461a72 Mon Sep 17 00:00:00 2001 From: Malik Date: Thu, 29 Aug 2024 09:24:12 -0400 Subject: [PATCH 3/6] revert makefile, figure it out later --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 139572d..060c4cc 100644 --- a/Makefile +++ b/Makefile @@ -20,9 +20,8 @@ KOUTPUT_MAKEFILE := $(KOUTPUT)/Makefile all: $(KOUTPUT_MAKEFILE) @echo "$(KOUTPUT)" - make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod clean + make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod modules - mv $(PWD)/memflow-kmod/memflow.ko ./build/ $(KOUTPUT): mkdir -p "$@" From a955b8bc47f311583f6a9c8c7d1456f9c8141374 Mon Sep 17 00:00:00 2001 From: Malik Date: Thu, 29 Aug 2024 09:24:43 -0400 Subject: [PATCH 4/6] Removing indent --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 060c4cc..413a831 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ KOUTPUT_MAKEFILE := $(KOUTPUT)/Makefile all: $(KOUTPUT_MAKEFILE) @echo "$(KOUTPUT)" - + make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod modules $(KOUTPUT): From 38a12f547f0f53b313fb17cce3dc6fb4b8777668 Mon Sep 17 00:00:00 2001 From: Malik Date: Thu, 29 Aug 2024 09:33:31 -0400 Subject: [PATCH 5/6] Changed makefile --- Makefile | 54 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 413a831..0f0e51d 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,49 @@ -obj-y += memflow-kmod/ +# Define the source directory +SRC_DIR := memflow-kmod -MCFLAGS += -O3 -ccflags-y += ${MCFLAGS} -CC += ${MCFLAGS} +# Define the build directory +BUILD_DIR := build +# Define the object files +obj-m := $(MODULE_NAME).o +$(MODULE_NAME)-objs := $(patsubst %.c,%.o,$(wildcard $(SRC_DIR)/*.c)) + +# Compiler flags +MCFLAGS := -O3 +ccflags-y += $(MCFLAGS) +CC += $(MCFLAGS) + +# Kernel directory ifndef KERNELDIR - KDIR := /lib/modules/$(shell uname -r)/build +KDIR := /lib/modules/$(shell uname -r)/build else - KDIR := $(KERNELDIR) +KDIR := $(KERNELDIR) endif +# Output directory ifndef OUT_DIR - KOUTPUT := $(PWD)/build +KOUTPUT := $(PWD)/$(BUILD_DIR) else - KOUTPUT := $(OUT_DIR) +KOUTPUT := $(OUT_DIR) endif -KOUTPUT_MAKEFILE := $(KOUTPUT)/Makefile - -all: $(KOUTPUT_MAKEFILE) - @echo "$(KOUTPUT)" +# Default target +all: $(KOUTPUT)/$(MODULE_NAME).ko - make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod modules +# Build the kernel module +$(KOUTPUT)/$(MODULE_NAME).ko: $(KOUTPUT) + @echo "Building kernel module in $(KOUTPUT)" + $(MAKE) -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/$(SRC_DIR) modules + @echo "Copying object files to $(KOUTPUT)" + cp $(SRC_DIR)/*.o $(KOUTPUT)/ +# Create the build directory $(KOUTPUT): - mkdir -p "$@" - -$(KOUTPUT_MAKEFILE): $(KOUTPUT) - touch "$@" + mkdir -p $@ +# Clean target clean: - make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod clean - $(shell rm $(KOUTPUT_MAKEFILE)) - rmdir $(KOUTPUT) + $(MAKE) -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/$(SRC_DIR) clean + rm -rf $(KOUTPUT) + +.PHONY: all clean \ No newline at end of file From 8cd9df8bb0bc3b34615f43e32d68e288108f3139 Mon Sep 17 00:00:00 2001 From: Malik Date: Thu, 29 Aug 2024 09:41:18 -0400 Subject: [PATCH 6/6] undo test --- Makefile | 54 ++++++++++++++++++++---------------------------------- 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 0f0e51d..413a831 100644 --- a/Makefile +++ b/Makefile @@ -1,49 +1,35 @@ -# Define the source directory -SRC_DIR := memflow-kmod +obj-y += memflow-kmod/ -# Define the build directory -BUILD_DIR := build +MCFLAGS += -O3 +ccflags-y += ${MCFLAGS} +CC += ${MCFLAGS} -# Define the object files -obj-m := $(MODULE_NAME).o -$(MODULE_NAME)-objs := $(patsubst %.c,%.o,$(wildcard $(SRC_DIR)/*.c)) - -# Compiler flags -MCFLAGS := -O3 -ccflags-y += $(MCFLAGS) -CC += $(MCFLAGS) - -# Kernel directory ifndef KERNELDIR -KDIR := /lib/modules/$(shell uname -r)/build + KDIR := /lib/modules/$(shell uname -r)/build else -KDIR := $(KERNELDIR) + KDIR := $(KERNELDIR) endif -# Output directory ifndef OUT_DIR -KOUTPUT := $(PWD)/$(BUILD_DIR) + KOUTPUT := $(PWD)/build else -KOUTPUT := $(OUT_DIR) + KOUTPUT := $(OUT_DIR) endif -# Default target -all: $(KOUTPUT)/$(MODULE_NAME).ko +KOUTPUT_MAKEFILE := $(KOUTPUT)/Makefile + +all: $(KOUTPUT_MAKEFILE) + @echo "$(KOUTPUT)" -# Build the kernel module -$(KOUTPUT)/$(MODULE_NAME).ko: $(KOUTPUT) - @echo "Building kernel module in $(KOUTPUT)" - $(MAKE) -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/$(SRC_DIR) modules - @echo "Copying object files to $(KOUTPUT)" - cp $(SRC_DIR)/*.o $(KOUTPUT)/ + make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod modules -# Create the build directory $(KOUTPUT): - mkdir -p $@ + mkdir -p "$@" -# Clean target -clean: - $(MAKE) -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/$(SRC_DIR) clean - rm -rf $(KOUTPUT) +$(KOUTPUT_MAKEFILE): $(KOUTPUT) + touch "$@" -.PHONY: all clean \ No newline at end of file +clean: + make -C $(KDIR) M=$(KOUTPUT) src=$(PWD)/memflow-kmod clean + $(shell rm $(KOUTPUT_MAKEFILE)) + rmdir $(KOUTPUT)