ipv4: Fix compilation errors in fib_rebalance
authorPeter Nørlund <pch@ordbogen.com>
Tue, 6 Oct 2015 05:24:47 +0000 (07:24 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 6 Oct 2015 06:48:09 +0000 (23:48 -0700)
This fixes

net/built-in.o: In function `fib_rebalance':
fib_semantics.c:(.text+0x9df14): undefined reference to `__divdi3'

and

net/built-in.o: In function `fib_rebalance':
net/ipv4/fib_semantics.c:572: undefined reference to `__aeabi_ldivmod'

Fixes: 0e884c78ee19 ("ipv4: L3 hash-based multipath")

Signed-off-by: Peter Nørlund <pch@ordbogen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/fib_semantics.c

index 0c49d2f3bbc0ebecdb313d098c31694f5822bb7b..7bd698c3bd3a4ceebfb291096ef8e9d7ae222f38 100644 (file)
@@ -569,8 +569,8 @@ static void fib_rebalance(struct fib_info *fi)
                        upper_bound = -1;
                } else {
                        w += nexthop_nh->nh_weight;
-                       upper_bound = DIV_ROUND_CLOSEST(2147483648LL * w,
-                                                       total) - 1;
+                       upper_bound = DIV_ROUND_CLOSEST_ULL((u64)w << 31,
+                                                           total) - 1;
                }
 
                atomic_set(&nexthop_nh->nh_upper_bound, upper_bound);