Oren Laadan's Top 10 Programming Mistakes Made By COMS W4118 Students
  1. Incorrect syscall prototypes: (use: "asmlinkage long", "__user")
  2. Missing validation of syscall arguments
  3. Incorrect error reporting (use: "return -EINVAL;")
  4. Incorrect/incomplete error path (e.g., no cleanup, memory leaks)
  5. Sleeping while holding a spinlock (e.g., semaphore, memory alloc)
  6. Access to volatile pointers w/o a lock and w/o holding a reference
  7. Access to static/global variables without locking
  8. Missing test for success of operations (or of proper setup)
  9. Emitting debug messages or other unnecessary messages
  10. Using C++ code constructs (when told to use "C")