|
@@ -200,8 +200,8 @@ static inline struct ip_vs_dest *ip_vs_dest_set_min(struct ip_vs_dest_set *set)
|
|
|
continue;
|
|
|
|
|
|
doh = ip_vs_dest_conn_overhead(dest);
|
|
|
- if ((loh * atomic_read(&dest->weight) >
|
|
|
- doh * atomic_read(&least->weight))
|
|
|
+ if (((__s64)loh * atomic_read(&dest->weight) >
|
|
|
+ (__s64)doh * atomic_read(&least->weight))
|
|
|
&& (dest->flags & IP_VS_DEST_F_AVAILABLE)) {
|
|
|
least = dest;
|
|
|
loh = doh;
|
|
@@ -246,8 +246,8 @@ static inline struct ip_vs_dest *ip_vs_dest_set_max(struct ip_vs_dest_set *set)
|
|
|
dest = rcu_dereference_protected(e->dest, 1);
|
|
|
doh = ip_vs_dest_conn_overhead(dest);
|
|
|
/* moh/mw < doh/dw ==> moh*dw < doh*mw, where mw,dw>0 */
|
|
|
- if ((moh * atomic_read(&dest->weight) <
|
|
|
- doh * atomic_read(&most->weight))
|
|
|
+ if (((__s64)moh * atomic_read(&dest->weight) <
|
|
|
+ (__s64)doh * atomic_read(&most->weight))
|
|
|
&& (atomic_read(&dest->weight) > 0)) {
|
|
|
most = dest;
|
|
|
moh = doh;
|
|
@@ -611,8 +611,8 @@ __ip_vs_lblcr_schedule(struct ip_vs_service *svc)
|
|
|
continue;
|
|
|
|
|
|
doh = ip_vs_dest_conn_overhead(dest);
|
|
|
- if (loh * atomic_read(&dest->weight) >
|
|
|
- doh * atomic_read(&least->weight)) {
|
|
|
+ if ((__s64)loh * atomic_read(&dest->weight) >
|
|
|
+ (__s64)doh * atomic_read(&least->weight)) {
|
|
|
least = dest;
|
|
|
loh = doh;
|
|
|
}
|