net/compat/wext: send different messages to compat tasks
Wireless extensions have the unfortunate problem that events are multicast netlink messages, and are not independent of pointer size. Thus, currently 32-bit tasks on 64-bit platforms cannot properly receive events and fail with all kinds of strange problems, for instance wpa_supplicant never notices disassociations, due to the way the 64-bit event looks (to a 32-bit process), the fact that the address is all zeroes is lost, it thinks instead it is 00:00:00:00:01:00. The same problem existed with the ioctls, until David Miller fixed those some time ago in an heroic effort. A different problem caused by this is that we cannot send the ASSOCREQIE/ASSOCRESPIE events because sending them causes a 32-bit wpa_supplicant on a 64-bit system to overwrite its internal information, which is worse than it not getting the information at all -- so we currently resort to sending a custom string event that it then parses. This, however, has a severe size limitatio...
Showing
- arch/mips/kernel/scall64-n32.S 1 addition, 1 deletionarch/mips/kernel/scall64-n32.S
- arch/mips/kernel/scall64-o32.S 2 additions, 2 deletionsarch/mips/kernel/scall64-o32.S
- arch/sparc/kernel/sys32.S 1 addition, 1 deletionarch/sparc/kernel/sys32.S
- include/linux/wireless.h 8 additions, 0 deletionsinclude/linux/wireless.h
- net/Kconfig 20 additions, 0 deletionsnet/Kconfig
- net/compat.c 15 additions, 2 deletionsnet/compat.c
- net/netlink/af_netlink.c 35 additions, 1 deletionnet/netlink/af_netlink.c
- net/wireless/wext.c 78 additions, 0 deletionsnet/wireless/wext.c
Please register or sign in to comment