Kernel
v1.0.0Avoid common Linux kernel mistakes — atomic context violations, allocation failures, and locking traps.
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
The name/description (kernel programming pitfalls) match the SKILL.md content (atomic context, allocations, locking, etc.). No unrelated env vars, binaries, or install steps are requested.
Instruction Scope
SKILL.md contains high-level kernel programming guidance only — no commands to run, no file reads, no outbound endpoints, and no instructions to access environment variables or system configuration. It is advisory rather than actionable.
Install Mechanism
No install spec or code files are present; nothing will be downloaded or written to disk by installing the skill.
Credentials
The skill requests no credentials, config paths, or environment variables; this is proportionate for a documentation/cheatsheet skill.
Persistence & Privilege
always is false and the skill does not request persistent agent modifications or elevated privileges. Autonomous invocation is allowed (platform default) but not excessive here.
Assessment
This skill is an instruction-only checklist for Linux kernel development and is coherent with its description. It does not request secrets or install code, so the install-time risk is low. However, the content is technical advice: do not let an agent automatically compile or load kernel modules or run root commands based solely on these tips. Kernel development is version-specific and risky — verify any code changes, test in a VM/container, consult upstream kernel docs for your target version, and avoid granting the agent elevated privileges or direct access to build/load kernels without manual review.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
🐧 Clawdis
OSLinux
latest
Atomic Context Traps
spin_lockheld = cannot sleep — nokmalloc(GFP_KERNEL), nomutex_lock, nocopy_from_user- Interrupt can take same spinlock — must use
spin_lock_irqsave, not plainspin_lock rcu_read_lock()section cannot sleep — no blocking calls inside RCU read-sidemight_sleep()annotation — add to functions that may sleep, catches bugs withCONFIG_DEBUG_ATOMIC_SLEEP
Allocation Failures
GFP_ATOMICcan return NULL — always check, don't assume successvmallocmemory not physically contiguous — cannot use for DMAkzallocoverkmalloc— uninitialized memory leaks kernel info to userspace- Allocation in loop risks OOM — preallocate or use memory pool
User Pointer Handling
copy_from_userreturns bytes NOT copied — 0 means success, not failure- Never use
%swith user pointer in printk — kernel crash or info leak - User memory can change during syscall — copy to kernel buffer, validate the copy
__userannotation is documentation — doesn't enforce anything, you must use copy functions
Memory Ordering
READ_ONCE/WRITE_ONCEfor lockless shared data — prevents compiler from caching/reordering- Spinlock release has implicit barrier — but check-then-act patterns still need care
smp_wmb()before publishing pointer — ensures data visible before pointer is
Module Error Paths
- Init fails midway — must undo everything already done
- Reverse order cleanup — unregister in opposite order of register
goto err_*pattern standard — cleaner than nested ifs- Check what's actually initialized — don't free/unregister what wasn't set up
Locking Mistakes
- Same lock acquired twice = deadlock — even in different functions
- Inconsistent lock ordering — document order, acquire in same sequence everywhere
mutex_trylockreturns 1 on success — opposite ofpthread_mutex_trylock- Reader-writer locks rarely worth it — contention overhead usually exceeds benefit
Comments
Loading comments...
