title: Why do I get -38 error, while trying to insmod a kernel module probing do_fork?
body: <p>I am trying to <code>insmod</code> a jprobe module to a rooted Android phone:</p>
  
  <pre><code> #include &lt;linux/kernel.h&gt;
   #include &lt;linux/module.h&gt;
   #include &lt;linux/kprobes.h&gt;
  
   /*
    * Jumper probe for do_fork.
    * Mirror principle enables access to arguments of the probed routine
    * from the probe handler.
    */
  
   /* Proxy routine having the same arguments as actual do_fork() routine */
   static long jdo_fork(unsigned long clone_flags, unsigned long stack_start,
                 struct pt_regs *regs, unsigned long stack_size,
                 int __user *parent_tidptr, int __user *child_tidptr)
   {
           printk(KERN_INFO "jprobe: clone_flags = 0x%lx, stack_size = 0x%lx,"
                           " regs = 0x%p\n",
                  clone_flags, stack_size, regs);
  
           /* Always end with a call to jprobe_return(). */
           jprobe_return();
           return 0;
   }
  
   static struct jprobe my_jprobe = {
           .entry                  = jdo_fork,
           .kp = {
                   .symbol_name    = "do_fork",
           },
   };
  
   static int __init jprobe_init(void)
   {
           int ret;
  
           ret = register_jprobe(&amp;my_jprobe);
           if (ret &lt; 0) {
                   printk(KERN_INFO "register_jprobe failed, returned %d\n", ret);
                   return -1;
           }
           printk(KERN_INFO "Planted jprobe at %p, handler addr %p\n",
                  my_jprobe.kp.addr, my_jprobe.entry);
           return 0;
   }
  
   static void __exit jprobe_exit(void)
   {
           unregister_jprobe(&amp;my_jprobe);
           printk(KERN_INFO "jprobe at %p unregistered\n", my_jprobe.kp.addr);
   }
  
  module_init(jprobe_init)
  module_exit(jprobe_exit)
  MODULE_LICENSE("GPL");
  </code></pre>
  
  <p>but it is failed:</p>
  
  <pre><code>  root@android:# insmod my_jprobe.ko
    [3223.32]register_jprobe failed, returned -38
  </code></pre>
  
  <p>I get <code>-38</code> error, and couldn't understand what is it, the only return value on failure I saw is <code>-22</code>, is it possible to insmod a jprobe module on arm based chip?</p>
  
  <p><code>do_fork</code> is in the <code>System.map</code> and is in the object table.</p>
  
  <p>What flags do I need to turn on in the config file to support <code>jpobes</code>?</p>