From 8d67347001d379f9acc969b27831ddeb0757662f Mon Sep 17 00:00:00 2001 From: hamza Date: Mon, 12 May 2025 18:33:41 +0200 Subject: [PATCH] all changes relevant to exercise a1.3 --- a1.3.config | 4 ++-- a1.txt | 10 ++++++++++ drivers/sst/Makefile | 3 +++ drivers/sst/boundedbuffer.c | 6 ++---- drivers/sst/sst_chrdev.c | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 a1.txt diff --git a/a1.3.config b/a1.3.config index 8056db00b076..2d42bc857c29 100644 --- a/a1.3.config +++ b/a1.3.config @@ -3755,7 +3755,7 @@ CONFIG_NVMEM_SYSFS=y # CONFIG_PECI is not set # CONFIG_HTE is not set CONFIG_SST=y -CONFIG_SST_BOUNDS=y +# CONFIG_SST_BOUNDS is useless # CONFIG_SST_ASYNC_SOURCE is not set # end of Device Drivers @@ -4460,7 +4460,7 @@ CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_CC_HAS_KASAN_GENERIC=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y -# CONFIG_KASAN is not set +CONFIG_KASAN=y CONFIG_HAVE_ARCH_KFENCE=y # CONFIG_KFENCE is not set CONFIG_HAVE_ARCH_KMSAN=y diff --git a/a1.txt b/a1.txt new file mode 100644 index 000000000000..6bffda09c4ad --- /dev/null +++ b/a1.txt @@ -0,0 +1,10 @@ +a) Inline: KASAN istrumentationt ist im code ausführung eingesetzt, + um mehr Präzision bei der Erkennung von Speicherfehlern zu erreichen, während die Leistung ein wenig darunter leidet + Outline : Instrumentierungsbezogener Code wird in einer separaten Funktion ausgeführt, wobei die Präzision zugunsten der Leistung geopfert wird. + + b) Die wichtigste Information in den Kernel-Logs war der Stack-Trace, + gab mir Informationen über den Übeltäter, + außerdem enthielt der write-fehler Informationen über die Größe, + und es wurde angedeutet, dass versucht wurde, außerhalb der bufferedbound zuzugreifen. + für die read fehler, Die Größe der von Kasan gemeldeten Daten im Vergleich zur Größe der mit pr_debug angezeigten Daten verrät, + dass die Anzahl der lokalen Variablen das Problem ist. \ No newline at end of file diff --git a/drivers/sst/Makefile b/drivers/sst/Makefile index 446c0c70371f..9695302c1faa 100644 --- a/drivers/sst/Makefile +++ b/drivers/sst/Makefile @@ -4,3 +4,6 @@ # obj-$(CONFIG_SST) += sst_chrdev.o boundedbuffer.o sst_common.o +CFLAGS_sst_chrdev.o := -DDEBUG +CFLAGS_sst_common.o := -DDEBUG +CFLAGS_boundedbuffer.o := -DDEBUG \ No newline at end of file diff --git a/drivers/sst/boundedbuffer.c b/drivers/sst/boundedbuffer.c index a1fb40bd985d..54fcd98403c6 100644 --- a/drivers/sst/boundedbuffer.c +++ b/drivers/sst/boundedbuffer.c @@ -1,10 +1,8 @@ #include "sst_internal.h" -#ifdef CONFIG_SST_BOUNDS -#define OFFSET (4 * BOUNDEDBUFFER_SIZE) -#else +//this is diabloical #define OFFSET 0 -#endif + void init_bbuffer(struct boundedbuffer *buffer) { buffer->next_in = 0; diff --git a/drivers/sst/sst_chrdev.c b/drivers/sst/sst_chrdev.c index 3dfa5acc8a3d..3b8c8aec9d2f 100644 --- a/drivers/sst/sst_chrdev.c +++ b/drivers/sst/sst_chrdev.c @@ -33,7 +33,7 @@ static ssize_t universe_read(struct file *file, char __user *buf, size_t count, } len = strlen(answer); sst_debug("About to copy %lu bytes of your answer at 0x%lx to the userspace\n", len, (uintptr_t)answer); - if (copy_to_user(buf, answer, count)) { + if (copy_to_user(buf, answer, len)) { pr_err("User copy failed!\n"); kfree(answer); return -EFAULT;