[IPVS]: Use IP_VS_WAIT_WHILE when encessary.
For architectures that don't have a volatile atomic_ts constructs like while (atomic_read(&something)); might result in endless loops since a barrier() is missing which forces the compiler to generate code that actually reads memory contents. Fix this in ipvs by using the IP_VS_WAIT_WHILE macro which resolves to while (expr) { cpu_relax(); } (why isn't this open coded btw?) Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7f353bf29e
commit
cae7ca3d3d
|
@ -908,7 +908,7 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user *udest)
|
|||
write_lock_bh(&__ip_vs_svc_lock);
|
||||
|
||||
/* Wait until all other svc users go away */
|
||||
while (atomic_read(&svc->usecnt) > 1) {};
|
||||
IP_VS_WAIT_WHILE(atomic_read(&svc->usecnt) > 1);
|
||||
|
||||
/* call the update_service, because server weight may be changed */
|
||||
svc->scheduler->update_service(svc);
|
||||
|
|
Loading…
Reference in New Issue