CONFIG_ELOOP_POLL breaks wpa_supplicant new dbus interface on kernel 4.0.0-rc3

Jouni Malinen j at w1.fi
Thu Mar 26 10:22:55 EDT 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