title: why do I get "rmmod: delete_module '/my_module' failed (errno 2)" while trying to rmmod?
body: <pre><code>#include &lt;linux/version.h&gt;
  #include &lt;linux/kernel.h&gt;
  #include &lt;linux/jiffies.h&gt;
  #include &lt;linux/module.h&gt;
  #include &lt;linux/interrupt.h&gt;
  #include &lt;linux/fs.h&gt;
  #include &lt;linux/types.h&gt;
  #include &lt;linux/string.h&gt;
  #include &lt;linux/socket.h&gt;
  #include &lt;linux/errno.h&gt;
  #include &lt;linux/fcntl.h&gt;
  #include &lt;linux/in.h&gt;
  #include &lt;linux/init.h&gt;
  #include &lt;linux/miscdevice.h&gt;
  #include &lt;linux/platform_device.h&gt;
  #include &lt;linux/slab.h&gt;
  #include &lt;asm/system.h&gt;
  #include &lt;asm/uaccess.h&gt;
  #include &lt;asm/io.h&gt;
  
  #include &lt;linux/mm.h&gt;
  #include &lt;net/checksum.h&gt;
  #include &lt;linux/cdev.h&gt;
  
      static int t_open(struct inode *inode, struct file *filp)
      {
          return nonseekable_open(inode, filp);
      }
  
  
      static struct file_operations testmod_fops = {
          .open = t_open,
          .owner = THIS_MODULE
      };
  
  
      static struct miscdevice testmod_miscdev = {
          MISC_DYNAMIC_MINOR,
          "my_module",  
          &amp;testmod_fops,
      }; 
  
  
  
  
  
      static int __init testmod_init(void)
      { 
          printk("module is on\n");
          misc_register(&amp;testmod_miscdev);
  
          return 0;
  
  
      };
  
      static void __exit testmod_exit(void)
      {
          printk("about exit \n");
          misc_deregister(&amp;testmod_miscdev);
      }
  
  
  
  
  
      module_init(testmod_init);
      module_exit(testmod_exit);
      MODULE_LICENSE("GPL");
      MODULE_AUTHOR("0x90");
      MODULE_DESCRIPTION("my_module");
  </code></pre>
  
  <p>why do I get the <code>errno2</code> in this simple example? </p>