[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1287670228.6871.99.camel@edumazet-laptop>
Date: Thu, 21 Oct 2010 16:10:28 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: Timo Teräs <timo.teras@....fi>
Cc: David Miller <davem@...emloft.net>, netdev@...r.kernel.org
Subject: Re: [PATCH v2] ipv4: synchronize bind() with RTM_NEWADDR
notifications
Le jeudi 21 octobre 2010 à 16:06 +0300, Timo Teräs a écrit :
> Otherwise we have race condition to user land:
> 1. process A: changes IP address
> 2. process A: kernel sends RTM_NEWADDR (and schedules out)
> 3. process B: gets notification
> 4. process B: tries to bind() to new IP, but fails with EADDRNOTAVAIL
> because FIB is not yet updated and inet_addr_type() in inet_bind()
> does not recognize the IP as local
> 5. process A: calls inetaddr_chain notifiers which updates FIB
>
> Fix the error path to synchronize with configuration changes and retry
> the address type check.
>
> IPv6 side seems to handle the notifications properly: bind() immediately
> after RTM_NEWADDR succeeds as expected. This is because ipv6_chk_addr()
> uses inet6_addr_lst which is updated before address notification.
>
> Signed-off-by: Timo Teräs <timo.teras@....fi>
> ---
> Since there was no reply to my question if this is ok, I interpreted it
> as "maybe". So here's the code for review. Hopefully this helps determining
> if this is an acceptable fix.
>
Just say : no
Really Timo, this problem must get another fix.
I understand you need an urgent fix, you can use your patch in the
meantime, of course ;)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists