ipvs: Fix race conditions in lblc scheduler
authorSven Wegener <sven.wegener@stealer.net>
Sun, 17 Aug 2008 22:52:08 +0000 (00:52 +0200)
committerSimon Horman <horms@verge.net.au>
Tue, 19 Aug 2008 07:37:04 +0000 (17:37 +1000)
commit39ac50d0c79747b186c1268d9a488f8c1d256be7
treefe2b213b41cef4c3eb3242836a4b7144f05bd826
parent3f087668c4e7c97289f0a67f9278ae6e0a765a80
ipvs: Fix race conditions in lblc scheduler

We can't access the cache entry outside of our critical read-locked region,
because someone may free that entry. And we also need to check in the critical
region wether the destination is still available, i.e. it's not in the trash.
If we drop our reference counter, the destination can be purged from the trash
at any time. Our caller only guarantees that no destination is moved to the
trash, while we are scheduling. Also there is no need for our own rwlock,
there is already one in the service structure for use in the schedulers.

Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
Signed-off-by: Simon Horman <horms@verge.net.au>
net/ipv4/ipvs/ip_vs_lblc.c