CONFIG_ELOOP_POLL breaks wpa_supplicant new dbus interface on kernel 4.0.0-rc3
Jouni Malinen
j
Thu Mar 26 07:22:55 PDT 2015
On Thu, Mar 19, 2015 at 08:49:27AM +0200, Anders Holm wrote:
> I noticed (using version 2.3, but the code looks the same in git
> master) that if I configure wpa_supplicant using CONFIG_ELOOP_POLL I
> never get any replies through the dbus interface. A quick look
> through the last few months of the mailing list and git log did not
> turn up a mention of this.
I'm assuming you are actually talking of CONFIG_ELOOP_EPOLL, not
CONFIG_ELOOP_POLL here..
> The problem is that epoll_ctl is called twice with EPOLL_CTL_ADD for
> the dbus socket.
>
> From strace
> epoll_ctl(3, EPOLL_CTL_ADD, 5, {EPOLLERR|EPOLLHUP, {u32=5, u64=5}}) = 0
> epoll_ctl(3, EPOLL_CTL_ADD, 5, {EPOLLIN, {u32=5, u64=5}}) = -1
> EEXIST (File exists)
It sounds like this may have been the first time someone tried to use
the epoll option with D-Bus..
> These probably need to be combined somehow or eloop_register_sock
> needs to use EPOLL_CTL_MOD when the sock is added again.
I was looking at how to do a quick workaround for this by falling back
to EPOLL_CTL_MOD in case of EEXISTS, but it turns out this requires
quite a bit larger redesign for event dispatching to work. For now, the
clear workaround is not to use CONFIG_ELOOP_EPOLL=y with CONFIG_DBUS=y..
--
Jouni Malinen PGP id EFC895FA
More information about the Hostap
mailing list