Partial MODVERSIONS?

Jeff Gold hostap at esclat.net
Sun Aug 24 12:42:39 EDT 2003


I'm attempting to get hostap-0.0.4 working with RedHat 9 using the 
2.4.20-20.9 kernel (which at the moment is the latest offered through 
up2date).  This was working with 2.4.20-19.9 and hostap-0.0.3, but when 
I upgraded the kernel I had trouble compiling.  I immediatedly grabbed 
the latest hostap release to avoid struggling with old bugs.  And indeed 
the changelog says:

   * fixed number of compilation issues (RH9 kernel, *.mod files to local
     directory, 2.4.x compilation with CONFIG_MODVERSIONS, external
     pcmcia-cs)

Unfortunately while the hostap driver builds and installs with no 
trouble, modprobe reports unresolved symbols when attempting to load it. 
  As far as I can tell the problem is that only some kernel symbols used 
by the hostap driver are converted according to the modversions system. 
  For example, from "nm /lib/modules/2.4.20-20.9/net/hostap.o":

          U add_timer_Ra19eacf8
          U add_wait_queue

The first routine shows up in /proc/ksyms, but the second doesn't.  Or 
rather it does, but as add_wait_queue_R53621d0f.  Somehow add_timer was 
correctly adapted for CONFIG_MODVERSIONS=y, but add_wait_queue wasn't. 
All of the symbols modprobe claims are missing lack modversions tags in 
hostap.o, while those unresolved in nm output but not modprobe have 
them.  This seems quite strange to me.  I checked the output of "make 
-n" but each gcc line has -DMODVERSIONS and the associated -include 
option to pull in the modversions.h file.  I've not yet discovered any 
pattern that would make sense of this.  What could be going wrong?

The following symbols don't have modversions tags and are listed as 
unresolved by modprobe (the __this_module symbol is listed as unresolved 
in hostap.o but doesn't trouble modprobe):

     add_wait_queue
     alloc_skb
     create_proc_entry
     dev_queue_xmit
     ether_setup
     eth_type_trans
     irq_stat
     __kfree_skb
     __netdev_watchdog_up
     netif_rx
     proc_mkdir
     proc_net
     pskb_expand_head
     ___pskb_trim
     register_netdev
     register_netdevice
     remove_proc_entry
     remove_wait_queue
     request_module
     skb_clone
     skb_over_panic
     skb_under_panic
     softnet_data
     unregister_netdev
     unregister_netdevice
     __wake_up
     wireless_send_event

The following appear as unresolved in the hostap.o file, but with 
appropriate modversions tags (these are not reported as unresolved by 
modprobe):

     add_timer
     del_timer
     dev_get
     do_softirq
     flush_scheduled_tasks
     __const_udelay
     cpu_raise_softirq
     __generic_copy_from_user
     __generic_copy_to_user
     get_random_bytes
     jiffies
     kfree
     kmalloc
     __out_of_line_bug
     printk
     schedule_task
     schedule_timeout
     sprintf

Does this make sense to anyone?  What might I be doing wrong here?  Or 
is this a bug caused by the interation of hostap and the latest RedHat 
kernel source?

                                             Jeff




More information about the HostAP mailing list