diff -ur v2.4.25/linux/net/ipv4/ipvs/ip_vs_ctl.c linux/net/ipv4/ipvs/ip_vs_ctl.c --- v2.4.25/linux/net/ipv4/ipvs/ip_vs_ctl.c 2003-11-28 22:04:14.000000000 +0200 +++ linux/net/ipv4/ipvs/ip_vs_ctl.c 2004-03-20 11:24:28.574545872 +0200 @@ -892,9 +892,13 @@ __ip_vs_update_dest(svc, dest, ur); + write_lock_bh(&__ip_vs_svc_lock); + /* call the update_service, because server weight may be changed */ svc->scheduler->update_service(svc); + write_unlock_bh(&__ip_vs_svc_lock); + LeaveFunction(2); return 0;