[openib-general] [PATCH] [RFC] ofed_1_2 - SLES9SP3 Backport -IWCM workaroundfor ip_dev_find() bug.

Steve Wise swise at opengridcomputing.com
Tue Feb 6 15:39:13 PST 2007


Here it is (only tested with rping over iWARP on sles9sp3):

----------------


xxx_ip_dev_find() must use scope HOST.

From: Steve Wise <swise at opengridcomputing.com>

Function xxx_ip_dev_find(RT_SCOPE_LINK) returns the wrong interface on
some kernels.  The correct scope is RT_SCOPE_HOST.

Signed-off-by: Steve Wise <swise at opengridcomputing.com>
---

 .../backport/2.6.11/include/linux/inetdevice.h     |    2 +-
 .../backport/2.6.11_FC4/include/linux/inetdevice.h |    2 +-
 .../backport/2.6.12/include/linux/inetdevice.h     |    2 +-
 .../backport/2.6.13/include/linux/inetdevice.h     |    2 +-
 .../2.6.13_suse10_0_u/include/linux/inetdevice.h   |    2 +-
 .../backport/2.6.14/include/linux/inetdevice.h     |    2 +-
 .../backport/2.6.15/include/linux/inetdevice.h     |    2 +-
 .../2.6.15_ubuntu606/include/linux/inetdevice.h    |    2 +-
 .../backport/2.6.16/include/linux/inetdevice.h     |    2 +-
 .../backport/2.6.17/include/linux/inetdevice.h     |    2 +-
 .../2.6.5_sles9_sp3/include/linux/inetdevice.h     |    2 +-
 .../backport/2.6.9_U2/include/linux/inetdevice.h   |    2 +-
 .../backport/2.6.9_U3/include/linux/inetdevice.h   |    2 +-
 .../backport/2.6.9_U4/include/linux/inetdevice.h   |    2 +-
 14 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/kernel_addons/backport/2.6.11/include/linux/inetdevice.h b/kernel_addons/backport/2.6.11/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.11/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.11/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h b/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.11_FC4/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.12/include/linux/inetdevice.h b/kernel_addons/backport/2.6.12/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.12/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.12/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.13/include/linux/inetdevice.h b/kernel_addons/backport/2.6.13/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.13/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.13/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h b/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.13_suse10_0_u/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.14/include/linux/inetdevice.h b/kernel_addons/backport/2.6.14/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.14/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.14/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.15/include/linux/inetdevice.h b/kernel_addons/backport/2.6.15/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.15/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.15/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.15_ubuntu606/include/linux/inetdevice.h b/kernel_addons/backport/2.6.15_ubuntu606/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.15_ubuntu606/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.15_ubuntu606/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.16/include/linux/inetdevice.h b/kernel_addons/backport/2.6.16/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.16/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.16/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.17/include/linux/inetdevice.h b/kernel_addons/backport/2.6.17/include/linux/inetdevice.h
index 7a32313..fd0aa36 100644
--- a/kernel_addons/backport/2.6.17/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.17/include/linux/inetdevice.h
@@ -11,7 +11,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.5_sles9_sp3/include/linux/inetdevice.h b/kernel_addons/backport/2.6.5_sles9_sp3/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.5_sles9_sp3/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.5_sles9_sp3/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.9_U2/include/linux/inetdevice.h b/kernel_addons/backport/2.6.9_U2/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.9_U2/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.9_U2/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.9_U3/include/linux/inetdevice.h b/kernel_addons/backport/2.6.9_U3/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.9_U3/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.9_U3/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;
diff --git a/kernel_addons/backport/2.6.9_U4/include/linux/inetdevice.h b/kernel_addons/backport/2.6.9_U4/include/linux/inetdevice.h
index 7244487..2d3c50f 100644
--- a/kernel_addons/backport/2.6.9_U4/include/linux/inetdevice.h
+++ b/kernel_addons/backport/2.6.9_U4/include/linux/inetdevice.h
@@ -13,7 +13,7 @@ static inline struct net_device *xxx_ip_
 
 	read_lock(&dev_base_lock);
 	for (dev = dev_base; dev; dev = dev->next) {
-		ip = inet_select_addr(dev, 0, RT_SCOPE_LINK);
+		ip = inet_select_addr(dev, 0, RT_SCOPE_HOST);
 		if (ip == addr) {
 			dev_hold(dev);
 			break;






More information about the general mailing list