[ovs-dev] [PATCH] multipath: Fix off-by-one in hash_threshold multipath calculation.
Ben Pfaff
blp at nicira.com
Sat Jan 22 00:42:32 UTC 2011
0xffffffff / (0xffffffff / n) can have a value as large as n (consider the
n == 1 case), but we need a value no bigger than n-1. So add 1 before
dividing to fix the problem.
This caused a test failure on Debian "lenny" amd64 when apparently
unrelated code changed.
Reported-by: Justin Pettit <jpettit at nicira.com>
---
lib/multipath.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/multipath.c b/lib/multipath.c
index af0ebff..3b9c54d 100644
--- a/lib/multipath.c
+++ b/lib/multipath.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010 Nicira Networks.
+ * Copyright (c) 2010, 2011 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -195,7 +195,7 @@ multipath_algorithm(uint32_t hash, enum nx_mp_algorithm algorithm,
return hash % n_links;
case NX_MP_ALG_HASH_THRESHOLD:
- return hash / (UINT32_MAX / n_links);
+ return hash / (UINT32_MAX / n_links + 1);
case NX_MP_ALG_HRW:
return (n_links <= 64
--
1.7.1
More information about the dev
mailing list