Compare commits

..

7 Commits
a1.2 ... a1.4

Author SHA1 Message Date
hamza
30a27016ba - fixed spinlock 2025-05-24 14:47:32 +02:00
hamza
f1d5ed18a9 - fixed a1.4 synchro error 2025-05-13 14:25:14 +02:00
290adb044b Backports sst fixes 2025-04-25 16:26:06 +02:00
8f9c2ce3b1 Updated a1.4.config 2025-04-17 20:16:55 +02:00
Alexander Lochmann
25f85c939a Merge remote-tracking branch 'origin/linux-6.1.y' into a1.4 2025-04-17 19:51:13 +02:00
Alexander Lochmann
330b4c8908 sst: Quick port of recent fixes from sst branch 2024-05-08 12:35:25 +02:00
Alexander Lochmann
a1c272e8b0 Locks are an unpleasant fact of life 2024-05-02 14:37:58 +02:00
7 changed files with 53 additions and 61 deletions

View File

@ -1,21 +1,20 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/x86 6.1.134 Kernel Configuration # Linux/x86 6.1.55 Kernel Configuration
# #
CONFIG_CC_VERSION_TEXT="gcc (Debian 12.2.0-14) 12.2.0" CONFIG_CC_VERSION_TEXT="gcc (Debian 13.2.0-23) 13.2.0"
CONFIG_CC_IS_GCC=y CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=120200 CONFIG_GCC_VERSION=130200
CONFIG_CLANG_VERSION=0 CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=24000 CONFIG_AS_VERSION=24200
CONFIG_LD_IS_BFD=y CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=24000 CONFIG_LD_VERSION=24200
CONFIG_LLD_VERSION=0 CONFIG_LLD_VERSION=0
CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_PAHOLE_VERSION=124 CONFIG_PAHOLE_VERSION=124
@ -176,7 +175,7 @@ CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_CC_HAS_INT128=y CONFIG_CC_HAS_INT128=y
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
CONFIG_GCC10_NO_ARRAY_BOUNDS=y CONFIG_GCC11_NO_ARRAY_BOUNDS=y
CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_ARCH_SUPPORTS_INT128=y
# CONFIG_NUMA_BALANCING is not set # CONFIG_NUMA_BALANCING is not set
@ -429,7 +428,6 @@ CONFIG_X86_INTEL_TSX_MODE_OFF=y
# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set # CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_EFI=y CONFIG_EFI=y
CONFIG_EFI_STUB=y CONFIG_EFI_STUB=y
# CONFIG_EFI_HANDOVER_PROTOCOL is not set
CONFIG_EFI_MIXED=y CONFIG_EFI_MIXED=y
# CONFIG_HZ_100 is not set # CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set # CONFIG_HZ_250 is not set
@ -463,7 +461,7 @@ CONFIG_HAVE_LIVEPATCH=y
CONFIG_CC_HAS_SLS=y CONFIG_CC_HAS_SLS=y
CONFIG_CC_HAS_RETURN_THUNK=y CONFIG_CC_HAS_RETURN_THUNK=y
# CONFIG_CPU_MITIGATIONS is not set # CONFIG_SPECULATION_MITIGATIONS is not set
CONFIG_ARCH_HAS_ADD_PAGES=y CONFIG_ARCH_HAS_ADD_PAGES=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
@ -620,7 +618,6 @@ CONFIG_AS_AVX512=y
CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA1_NI=y
CONFIG_AS_SHA256_NI=y CONFIG_AS_SHA256_NI=y
CONFIG_AS_TPAUSE=y CONFIG_AS_TPAUSE=y
CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y
# #
# General architecture-dependent options # General architecture-dependent options
@ -868,7 +865,6 @@ CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_PAGE_REPORTING=y CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y CONFIG_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_PCP_BATCH_SCALE_MAX=5
CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_MMU_NOTIFIER=y CONFIG_MMU_NOTIFIER=y
# CONFIG_KSM is not set # CONFIG_KSM is not set
@ -1133,6 +1129,7 @@ CONFIG_NET_SCHED=y
# #
# Queueing/Scheduling # Queueing/Scheduling
# #
# CONFIG_NET_SCH_CBQ is not set
# CONFIG_NET_SCH_HTB is not set # CONFIG_NET_SCH_HTB is not set
# CONFIG_NET_SCH_HFSC is not set # CONFIG_NET_SCH_HFSC is not set
# CONFIG_NET_SCH_PRIO is not set # CONFIG_NET_SCH_PRIO is not set
@ -1146,6 +1143,7 @@ CONFIG_NET_SCHED=y
# CONFIG_NET_SCH_ETF is not set # CONFIG_NET_SCH_ETF is not set
# CONFIG_NET_SCH_TAPRIO is not set # CONFIG_NET_SCH_TAPRIO is not set
# CONFIG_NET_SCH_GRED is not set # CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not set
# CONFIG_NET_SCH_NETEM is not set # CONFIG_NET_SCH_NETEM is not set
# CONFIG_NET_SCH_DRR is not set # CONFIG_NET_SCH_DRR is not set
# CONFIG_NET_SCH_MQPRIO is not set # CONFIG_NET_SCH_MQPRIO is not set
@ -1286,6 +1284,8 @@ CONFIG_ETHTOOL_NETLINK=y
# #
# Device Drivers # Device Drivers
# #
CONFIG_HAVE_EISA=y
# CONFIG_EISA is not set
CONFIG_HAVE_PCI=y CONFIG_HAVE_PCI=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
@ -1899,6 +1899,9 @@ CONFIG_E1000E_HWTS=y
# CONFIG_ICE is not set # CONFIG_ICE is not set
# CONFIG_FM10K is not set # CONFIG_FM10K is not set
# CONFIG_IGC is not set # CONFIG_IGC is not set
CONFIG_NET_VENDOR_WANGXUN=y
# CONFIG_NGBE is not set
# CONFIG_TXGBE is not set
# CONFIG_JME is not set # CONFIG_JME is not set
CONFIG_NET_VENDOR_LITEX=y CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y CONFIG_NET_VENDOR_MARVELL=y
@ -2000,9 +2003,6 @@ CONFIG_NET_VENDOR_VERTEXCOM=y
CONFIG_NET_VENDOR_VIA=y CONFIG_NET_VENDOR_VIA=y
# CONFIG_VIA_RHINE is not set # CONFIG_VIA_RHINE is not set
# CONFIG_VIA_VELOCITY is not set # CONFIG_VIA_VELOCITY is not set
CONFIG_NET_VENDOR_WANGXUN=y
# CONFIG_NGBE is not set
# CONFIG_TXGBE is not set
CONFIG_NET_VENDOR_WIZNET=y CONFIG_NET_VENDOR_WIZNET=y
# CONFIG_WIZNET_W5100 is not set # CONFIG_WIZNET_W5100 is not set
# CONFIG_WIZNET_W5300 is not set # CONFIG_WIZNET_W5300 is not set
@ -2915,6 +2915,7 @@ CONFIG_BCMA_POSSIBLE=y
# CONFIG_MFD_SM501 is not set # CONFIG_MFD_SM501 is not set
# CONFIG_MFD_SKY81452 is not set # CONFIG_MFD_SKY81452 is not set
# CONFIG_MFD_SYSCON is not set # CONFIG_MFD_SYSCON is not set
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set # CONFIG_MFD_LP3943 is not set
# CONFIG_MFD_LP8788 is not set # CONFIG_MFD_LP8788 is not set
# CONFIG_MFD_TI_LMU is not set # CONFIG_MFD_TI_LMU is not set
@ -3755,9 +3756,9 @@ CONFIG_NVMEM_SYSFS=y
# CONFIG_PECI is not set # CONFIG_PECI is not set
# CONFIG_HTE is not set # CONFIG_HTE is not set
CONFIG_SST=y CONFIG_SST=y
CONFIG_SST_MEMLEAK=y
# CONFIG_SST_BOUNDS is not set # CONFIG_SST_BOUNDS is not set
# CONFIG_SST_ASYNC_SOURCE is not set # CONFIG_SST_LOCKING is not set
# end of Device Drivers # end of Device Drivers
# #
@ -3944,9 +3945,6 @@ CONFIG_KEYS=y
# CONFIG_ENCRYPTED_KEYS is not set # CONFIG_ENCRYPTED_KEYS is not set
# CONFIG_KEY_DH_OPERATIONS is not set # CONFIG_KEY_DH_OPERATIONS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set
CONFIG_PROC_MEM_ALWAYS_FORCE=y
# CONFIG_PROC_MEM_FORCE_PTRACE is not set
# CONFIG_PROC_MEM_NO_FORCE is not set
CONFIG_SECURITY=y CONFIG_SECURITY=y
CONFIG_SECURITY_WRITABLE_HOOKS=y CONFIG_SECURITY_WRITABLE_HOOKS=y
# CONFIG_SECURITYFS is not set # CONFIG_SECURITYFS is not set
@ -4445,7 +4443,7 @@ CONFIG_PTDUMP_CORE=y
# CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SHRINKER_DEBUG is not set # CONFIG_SHRINKER_DEBUG is not set
CONFIG_HAVE_DEBUG_KMEMLEAK=y CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_SCHED_STACK_END_CHECK is not set # CONFIG_SCHED_STACK_END_CHECK is not set
CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y

View File

@ -1,10 +0,0 @@
1) a) um debug beim start des kerns zu aktivieren, reicht kern parameter (mit hilfe -a im unserem skript) zu geben dyndbg=\"module sst_chrdev +p\"
b) gleiche idee aber statt module zu wählen, kann mann eine file und zeile auswählen wie z.B
dyndbg=\"file sst_chrdev.c line 40 +p; file sst_chrdev.c line 72 +p\"
2) Mein grundlegendes Verständnis davon, wie kmemleak funktioniert, ist, dass jede neue Speicherzuweisung und ihre Zeiger zusammen mit einer Vielzahl von Metainformationen wie Größe verfolgt werden.
Informationen wie z.B. der Größe verfolgt und in einer Baumstruktur (rbtree) gespeichert wird.
einen Memory Allocator existiert, bedeutet dies, dass der Kernel nicht mehr in der Lage ist, ihn zu zerstören und er wird als Orphan bezeichnet.
3) um detector standardmäßige auszuschalten, kann mann CONFIG_DEBUG_KMEMLEAK=n setzen oder entfernen im kconfig

View File

@ -1,20 +1,21 @@
# #
# Automatically generated file; DO NOT EDIT. # Automatically generated file; DO NOT EDIT.
# Linux/x86 6.1.55 Kernel Configuration # Linux/x86 6.1.134 Kernel Configuration
# #
CONFIG_CC_VERSION_TEXT="gcc (Debian 13.2.0-23) 13.2.0" CONFIG_CC_VERSION_TEXT="gcc (Debian 12.2.0-14) 12.2.0"
CONFIG_CC_IS_GCC=y CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=130200 CONFIG_GCC_VERSION=120200
CONFIG_CLANG_VERSION=0 CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=24200 CONFIG_AS_VERSION=24000
CONFIG_LD_IS_BFD=y CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=24200 CONFIG_LD_VERSION=24000
CONFIG_LLD_VERSION=0 CONFIG_LLD_VERSION=0
CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_PAHOLE_VERSION=124 CONFIG_PAHOLE_VERSION=124
@ -175,7 +176,7 @@ CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_CC_HAS_INT128=y CONFIG_CC_HAS_INT128=y
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
CONFIG_GCC11_NO_ARRAY_BOUNDS=y CONFIG_GCC10_NO_ARRAY_BOUNDS=y
CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_ARCH_SUPPORTS_INT128=y
# CONFIG_NUMA_BALANCING is not set # CONFIG_NUMA_BALANCING is not set
@ -280,6 +281,7 @@ CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_LOCKDEP_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y
CONFIG_LOCKDEP=y
CONFIG_STACKTRACE_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_ARCH_MMAP_RND_BITS_MIN=28 CONFIG_ARCH_MMAP_RND_BITS_MIN=28
@ -428,6 +430,7 @@ CONFIG_X86_INTEL_TSX_MODE_OFF=y
# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set # CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_EFI=y CONFIG_EFI=y
CONFIG_EFI_STUB=y CONFIG_EFI_STUB=y
# CONFIG_EFI_HANDOVER_PROTOCOL is not set
CONFIG_EFI_MIXED=y CONFIG_EFI_MIXED=y
# CONFIG_HZ_100 is not set # CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set # CONFIG_HZ_250 is not set
@ -461,7 +464,7 @@ CONFIG_HAVE_LIVEPATCH=y
CONFIG_CC_HAS_SLS=y CONFIG_CC_HAS_SLS=y
CONFIG_CC_HAS_RETURN_THUNK=y CONFIG_CC_HAS_RETURN_THUNK=y
# CONFIG_SPECULATION_MITIGATIONS is not set # CONFIG_CPU_MITIGATIONS is not set
CONFIG_ARCH_HAS_ADD_PAGES=y CONFIG_ARCH_HAS_ADD_PAGES=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
@ -618,6 +621,7 @@ CONFIG_AS_AVX512=y
CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA1_NI=y
CONFIG_AS_SHA256_NI=y CONFIG_AS_SHA256_NI=y
CONFIG_AS_TPAUSE=y CONFIG_AS_TPAUSE=y
CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y
# #
# General architecture-dependent options # General architecture-dependent options
@ -641,6 +645,7 @@ CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
CONFIG_HAVE_NMI=y CONFIG_HAVE_NMI=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_HAVE_DMA_CONTIGUOUS=y
@ -865,6 +870,7 @@ CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_PAGE_REPORTING=y CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y CONFIG_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_PCP_BATCH_SCALE_MAX=5
CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_MMU_NOTIFIER=y CONFIG_MMU_NOTIFIER=y
# CONFIG_KSM is not set # CONFIG_KSM is not set
@ -1129,7 +1135,6 @@ CONFIG_NET_SCHED=y
# #
# Queueing/Scheduling # Queueing/Scheduling
# #
# CONFIG_NET_SCH_CBQ is not set
# CONFIG_NET_SCH_HTB is not set # CONFIG_NET_SCH_HTB is not set
# CONFIG_NET_SCH_HFSC is not set # CONFIG_NET_SCH_HFSC is not set
# CONFIG_NET_SCH_PRIO is not set # CONFIG_NET_SCH_PRIO is not set
@ -1143,7 +1148,6 @@ CONFIG_NET_SCHED=y
# CONFIG_NET_SCH_ETF is not set # CONFIG_NET_SCH_ETF is not set
# CONFIG_NET_SCH_TAPRIO is not set # CONFIG_NET_SCH_TAPRIO is not set
# CONFIG_NET_SCH_GRED is not set # CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not set
# CONFIG_NET_SCH_NETEM is not set # CONFIG_NET_SCH_NETEM is not set
# CONFIG_NET_SCH_DRR is not set # CONFIG_NET_SCH_DRR is not set
# CONFIG_NET_SCH_MQPRIO is not set # CONFIG_NET_SCH_MQPRIO is not set
@ -1284,8 +1288,6 @@ CONFIG_ETHTOOL_NETLINK=y
# #
# Device Drivers # Device Drivers
# #
CONFIG_HAVE_EISA=y
# CONFIG_EISA is not set
CONFIG_HAVE_PCI=y CONFIG_HAVE_PCI=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
@ -1899,9 +1901,6 @@ CONFIG_E1000E_HWTS=y
# CONFIG_ICE is not set # CONFIG_ICE is not set
# CONFIG_FM10K is not set # CONFIG_FM10K is not set
# CONFIG_IGC is not set # CONFIG_IGC is not set
CONFIG_NET_VENDOR_WANGXUN=y
# CONFIG_NGBE is not set
# CONFIG_TXGBE is not set
# CONFIG_JME is not set # CONFIG_JME is not set
CONFIG_NET_VENDOR_LITEX=y CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y CONFIG_NET_VENDOR_MARVELL=y
@ -2003,6 +2002,9 @@ CONFIG_NET_VENDOR_VERTEXCOM=y
CONFIG_NET_VENDOR_VIA=y CONFIG_NET_VENDOR_VIA=y
# CONFIG_VIA_RHINE is not set # CONFIG_VIA_RHINE is not set
# CONFIG_VIA_VELOCITY is not set # CONFIG_VIA_VELOCITY is not set
CONFIG_NET_VENDOR_WANGXUN=y
# CONFIG_NGBE is not set
# CONFIG_TXGBE is not set
CONFIG_NET_VENDOR_WIZNET=y CONFIG_NET_VENDOR_WIZNET=y
# CONFIG_WIZNET_W5100 is not set # CONFIG_WIZNET_W5100 is not set
# CONFIG_WIZNET_W5300 is not set # CONFIG_WIZNET_W5300 is not set
@ -2915,7 +2917,6 @@ CONFIG_BCMA_POSSIBLE=y
# CONFIG_MFD_SM501 is not set # CONFIG_MFD_SM501 is not set
# CONFIG_MFD_SKY81452 is not set # CONFIG_MFD_SKY81452 is not set
# CONFIG_MFD_SYSCON is not set # CONFIG_MFD_SYSCON is not set
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set # CONFIG_MFD_LP3943 is not set
# CONFIG_MFD_LP8788 is not set # CONFIG_MFD_LP8788 is not set
# CONFIG_MFD_TI_LMU is not set # CONFIG_MFD_TI_LMU is not set
@ -3945,6 +3946,9 @@ CONFIG_KEYS=y
# CONFIG_ENCRYPTED_KEYS is not set # CONFIG_ENCRYPTED_KEYS is not set
# CONFIG_KEY_DH_OPERATIONS is not set # CONFIG_KEY_DH_OPERATIONS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set
CONFIG_PROC_MEM_ALWAYS_FORCE=y
# CONFIG_PROC_MEM_FORCE_PTRACE is not set
# CONFIG_PROC_MEM_NO_FORCE is not set
CONFIG_SECURITY=y CONFIG_SECURITY=y
CONFIG_SECURITY_WRITABLE_HOOKS=y CONFIG_SECURITY_WRITABLE_HOOKS=y
# CONFIG_SECURITYFS is not set # CONFIG_SECURITYFS is not set
@ -4495,14 +4499,15 @@ CONFIG_DEBUG_PREEMPT=y
# Lock Debugging (spinlocks, mutexes, etc...) # Lock Debugging (spinlocks, mutexes, etc...)
# #
CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_PROVE_LOCKING is not set CONFIG_PROVE_LOCKING=y
CONFIG_PROVE_RCU=y
# CONFIG_LOCK_STAT is not set # CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set CONFIG_DEBUG_RT_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK is not set CONFIG_DEBUG_SPINLOCK=y
# CONFIG_DEBUG_MUTEXES is not set CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_DEBUG_RWSEMS is not set # CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set CONFIG_DEBUG_LOCK_ALLOC=y
# CONFIG_DEBUG_ATOMIC_SLEEP is not set # CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_LOCK_TORTURE_TEST is not set # CONFIG_LOCK_TORTURE_TEST is not set
@ -4511,7 +4516,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_CSD_LOCK_WAIT_DEBUG is not set # CONFIG_CSD_LOCK_WAIT_DEBUG is not set
# end of Lock Debugging (spinlocks, mutexes, etc...) # end of Lock Debugging (spinlocks, mutexes, etc...)
# CONFIG_DEBUG_IRQFLAGS is not set CONFIG_DEBUG_IRQFLAGS=y
CONFIG_STACKTRACE=y CONFIG_STACKTRACE=y
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set

2
a1.4.txt Normal file
View File

@ -0,0 +1,2 @@
1) hardirq_safe bedeutet dass eine prozess läuft in einem Kontext, der sicher für Hardware-Unterbrechungen ist. es halt keine kmalloc, spin_locks...
2) lockdep_assert_held()

View File

@ -4,3 +4,6 @@
# #
obj-$(CONFIG_SST) += sst_chrdev.o boundedbuffer.o sst_common.o 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

View File

@ -1,12 +1,9 @@
#include "sst_internal.h" #include "sst_internal.h"
#include "../../include/linux/slab.h"
#include <linux/module.h> #include <linux/module.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/cdev.h> #include <linux/cdev.h>
#include <linux/slab.h>
#define SST_CHRDEV "the-universe" #define SST_CHRDEV "the-universe"
@ -33,7 +30,6 @@ static ssize_t universe_read(struct file *file, char __user *buf, size_t count,
if (sst_consume_answer(sst_info, &answer)) { if (sst_consume_answer(sst_info, &answer)) {
pr_debug("Cannot read from answers!\n"); pr_debug("Cannot read from answers!\n");
kfree(answer);
return 0; return 0;
} }
len = strlen(answer); len = strlen(answer);
@ -66,11 +62,9 @@ static ssize_t universe_write(struct file *file, const char __user *buf, size_t
err = sst_produce_question(sst_info, buf_copy); err = sst_produce_question(sst_info, buf_copy);
if (err) { if (err) {
pr_err("Weird! The universe is full.\n"); pr_err("Weird! The universe is full.\n");
kfree(buf_copy);
return -ENOMEM; return -ENOMEM;
} }
sst_debug("Asked the universe a question...\n"); sst_debug("Asked the universe a question...\n");
kfree(buf_copy);
return count; return count;
} }

View File

@ -1,4 +1,6 @@
#include "sst_internal.h" #include "sst_internal.h"
#include "../../include/linux/spinlock.h"
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/random.h> #include <linux/random.h>
@ -82,6 +84,7 @@ static int control_thread_work(void *data) {
sst_debug("Randomly sleeping for %d secs. ZzzzZZzz\n", sleep); sst_debug("Randomly sleeping for %d secs. ZzzzZZzz\n", sleep);
ssleep(sleep); ssleep(sleep);
#endif #endif
kfree(question);
} }
return 0; return 0;
@ -139,7 +142,6 @@ EXPORT_SYMBOL(sst_produce_question);
int sst_produce_answer(sst_info_t *info, char *value) { int sst_produce_answer(sst_info_t *info, char *value) {
int err = 0; int err = 0;
unsigned long flags; unsigned long flags;
if (!info) { if (!info) {
return -1; return -1;
} }
@ -154,7 +156,6 @@ EXPORT_SYMBOL(sst_produce_answer);
int sst_consume_question(sst_info_t *info, char **value) { int sst_consume_question(sst_info_t *info, char **value) {
int err = 0; int err = 0;
if (!info) { if (!info) {
return -1; return -1;
} }
@ -169,7 +170,6 @@ EXPORT_SYMBOL(sst_consume_question);
int sst_consume_answer(sst_info_t *info, char **value) { int sst_consume_answer(sst_info_t *info, char **value) {
int err = 0; int err = 0;
unsigned long flags; unsigned long flags;
if (!info) { if (!info) {
return -1; return -1;
} }