• Hannes Frederic Sowa's avatar
    tun: fix premature POLLOUT notification on tun devices · b20e2d54
    Hannes Frederic Sowa authored
    aszlig observed failing ssh tunnels (-w) during initialization since
    commit cc9da6cc ("ipv6: addrconf: use stable address generator for
    ARPHRD_NONE"). We already had reports that the mentioned commit breaks
    Juniper VPN connections. I can't clearly say that the Juniper VPN client
    has the same problem, but it is worth a try to hint to this patch.
    Because of the early generation of link local addresses, the kernel now
    can start asking for routers on the local subnet much earlier than usual.
    Those router solicitation packets arrive inside the ssh channels and
    should be transmitted to the tun fd before the configuration scripts
    might have upped the interface and made it ready for transmission.
    ssh polls on the interface and receives back a POLL_OUT. It tries to send
    the earily router solicitation packet to the tun interface.  Unfortunately
    it hasn't been up'ed yet by config scripts, thus failing with -EIO. ssh
    doesn't retry again and considers the tun interface broken forever.
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=121131
    Fixes: cc9da6cc ("ipv6: addrconf: use stable address generator for ARPHRD_NONE")
    Cc: Bjørn Mork <bjorn@mork.no>
    Reported-by: default avatarValdis Kletnieks <Valdis.Kletnieks@vt.edu>
    Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
    Reported-by: default avatarJonas Lippuner <jonas@lippuner.ca>
    Cc: Jonas Lippuner <jonas@lippuner.ca>
    Reported-by: default avataraszlig <aszlig@redmoonstudios.org>
    Cc: aszlig <aszlig@redmoonstudios.org>
    Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
tun.c 60.8 KB