Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-20 Thread Haggai Eran
On 17/04/2015 22:21, David Miller wrote:
 From: Erez Shitrit ere...@mellanox.com
 Date: Thu, 16 Apr 2015 16:34:34 +0300
 
 Currently, iflink of the parent interface was always accessed, even 
 when interface didn't have a parent and hence we crashed there.

 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.

 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.

 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com
 
 Applied, thanks.

Doug, Roland,

You might want to include this patch in your for-next / for-4.1 trees,
or merge net-next again. Currently they contain the issue it fixes, and
it can prevent some systems with IPoIB from booting.

Regards,
Haggai

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-20 Thread Or Gerlitz
On Mon, Apr 20, 2015 at 11:16 AM, Haggai Eran hagg...@mellanox.com wrote:
 On 17/04/2015 22:21, David Miller wrote:
 From: Erez Shitrit ere...@mellanox.com
 Date: Thu, 16 Apr 2015 16:34:34 +0300

 Currently, iflink of the parent interface was always accessed, even
 when interface didn't have a parent and hence we crashed there.

 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.

 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.

 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com

 Applied, thanks.

 Doug, Roland,
 You might want to include this patch in your for-next / for-4.1 trees,
 or merge net-next again. Currently they contain the issue it fixes, and
 it can prevent some systems with IPoIB from booting.

Haggai,


It's upstream by now, pull Linus tree.

Or.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-20 Thread Doug Ledford
On Mon, 2015-04-20 at 12:21 +0300, Or Gerlitz wrote:
 On Mon, Apr 20, 2015 at 11:16 AM, Haggai Eran hagg...@mellanox.com wrote:
  On 17/04/2015 22:21, David Miller wrote:
  From: Erez Shitrit ere...@mellanox.com
  Date: Thu, 16 Apr 2015 16:34:34 +0300
 
  Currently, iflink of the parent interface was always accessed, even
  when interface didn't have a parent and hence we crashed there.
 
  Handle the interface types properly: for a child interface, return
  the ifindex of the parent, for parent interface, return its ifindex.
 
  For child devices, make sure to set the parent pointer prior to
  invoking register_netdevice(), this allows the new ndo to be called
  by the stack immediately after the child device is registered.
 
  Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
  Reported-by: Honggang Li ho...@redhat.com
  Signed-off-by: Erez Shitrit ere...@mellanox.com
  Signed-off-by: Honggang Li ho...@redhat.com
 
  Applied, thanks.
 
  Doug, Roland,
  You might want to include this patch in your for-next / for-4.1 trees,
  or merge net-next again. Currently they contain the issue it fixes, and
  it can prevent some systems with IPoIB from booting.
 
 Haggai,
 
 
 It's upstream by now, pull Linus tree.
 
 Or.

Right, it already went via net-next.  I skipped it because of that.

-- 
Doug Ledford dledf...@redhat.com
  GPG KeyID: 0E572FDD




signature.asc
Description: This is a digitally signed message part


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-20 Thread David Miller
From: Haggai Eran hagg...@mellanox.com
Date: Mon, 20 Apr 2015 11:16:34 +0300

 On 17/04/2015 22:21, David Miller wrote:
 From: Erez Shitrit ere...@mellanox.com
 Date: Thu, 16 Apr 2015 16:34:34 +0300
 
 Currently, iflink of the parent interface was always accessed, even 
 when interface didn't have a parent and hence we crashed there.

 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.

 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.

 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com
 
 Applied, thanks.
 
 Doug, Roland,
 
 You might want to include this patch in your for-next / for-4.1 trees,
 or merge net-next again. Currently they contain the issue it fixes, and
 it can prevent some systems with IPoIB from booting.

I put this into 'net', not 'net-next'.  'net-next' is dormant after I do
my first push to Linus of the merge window.  After that everything goes
via 'net' until the merge window closes and I open 'net-next' up again.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-17 Thread Nicolas Dichtel

Le 16/04/2015 15:34, Erez Shitrit a écrit :

Currently, iflink of the parent interface was always accessed, even
when interface didn't have a parent and hence we crashed there.

Handle the interface types properly: for a child interface, return
the ifindex of the parent, for parent interface, return its ifindex.

For child devices, make sure to set the parent pointer prior to
invoking register_netdevice(), this allows the new ndo to be called
by the stack immediately after the child device is registered.

Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
Reported-by: Honggang Li ho...@redhat.com
Signed-off-by: Erez Shitrit ere...@mellanox.com
Signed-off-by: Honggang Li ho...@redhat.com

Acked-by: Nicolas Dichtel nicolas.dich...@6wind.com
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-17 Thread David Miller
From: Erez Shitrit ere...@mellanox.com
Date: Thu, 16 Apr 2015 16:34:34 +0300

 Currently, iflink of the parent interface was always accessed, even 
 when interface didn't have a parent and hence we crashed there.
 
 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.
 
 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.
 
 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com

Applied, thanks.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-16 Thread Jason Gunthorpe
On Thu, Apr 16, 2015 at 04:34:34PM +0300, Erez Shitrit wrote:
 Currently, iflink of the parent interface was always accessed, even 
 when interface didn't have a parent and hence we crashed there.
 
 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.
 
 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.
 
 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com

Reviewed-By: Jason Gunthorpe jguntho...@obsidianresearch.com+

 changes from V0:
  - fixed two typos in the change-log
 
  drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +
  drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 3 +--
  2 files changed, 6 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c 
 b/drivers/infiniband/ulp/ipoib/ipoib_main.c
 index 657b89b..915ad04 100644
 +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
 @@ -846,6 +846,11 @@ static int ipoib_get_iflink(const struct net_device *dev)
  {
   struct ipoib_dev_priv *priv = netdev_priv(dev);
  
 + /* parent interface */
 + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags))
 + return dev-ifindex;
 +
 + /* child/vlan interface */
   return priv-parent-ifindex;
  }
  
 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c 
 b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 index 4dd1313..fca1a88 100644
 +++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 @@ -58,6 +58,7 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
 ipoib_dev_priv *priv,
   /* MTU will be reset when mcast join happens */
   priv-dev-mtu   = IPOIB_UD_MTU(priv-max_ib_mtu);
   priv-mcast_mtu  = priv-admin_mtu = priv-dev-mtu;
 + priv-parent = ppriv-dev;
   set_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags);
  
   result = ipoib_set_dev_features(priv, ppriv-ca);
 @@ -84,8 +85,6 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
 ipoib_dev_priv *priv,
   goto register_failed;
   }
  
 - priv-parent = ppriv-dev;
 -
   ipoib_create_debug_files(priv-dev);
  
   /* RTNL childs don't need proprietary sysfs entries */
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-16 Thread Yann Droneaud
Hi,

Le jeudi 16 avril 2015 à 16:34 +0300, Erez Shitrit a écrit :
 Currently, iflink of the parent interface was always accessed, even 
 when interface didn't have a parent and hence we crashed there.

+ since commit 5aa7add8f14b ('infiniband/ipoib: implement
ndo_get_iflink').

as there was no crash here before AFAIK.

 
 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.
 
 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.
 
 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')

Cc: Nicolas Dichtel nicolas.dich...@6wind.com

 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com
 ---
 
 changes from V0:
  - fixed two typos in the change-log
 
  drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +
  drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 3 +--
  2 files changed, 6 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c 
 b/drivers/infiniband/ulp/ipoib/ipoib_main.c
 index 657b89b..915ad04 100644
 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
 +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
 @@ -846,6 +846,11 @@ static int ipoib_get_iflink(const struct net_device *dev)
  {
   struct ipoib_dev_priv *priv = netdev_priv(dev);
  
 + /* parent interface */
 + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags))
 + return dev-ifindex;
 +
 + /* child/vlan interface */
   return priv-parent-ifindex;
  }
  
 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c 
 b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 index 4dd1313..fca1a88 100644
 --- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 +++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 @@ -58,6 +58,7 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
 ipoib_dev_priv *priv,
   /* MTU will be reset when mcast join happens */
   priv-dev-mtu   = IPOIB_UD_MTU(priv-max_ib_mtu);
   priv-mcast_mtu  = priv-admin_mtu = priv-dev-mtu;
 + priv-parent = ppriv-dev;
   set_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags);
  
   result = ipoib_set_dev_features(priv, ppriv-ca);
 @@ -84,8 +85,6 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
 ipoib_dev_priv *priv,
   goto register_failed;
   }
  
 - priv-parent = ppriv-dev;
 -
   ipoib_create_debug_files(priv-dev);
  
   /* RTNL childs don't need proprietary sysfs entries */

Regards.

-- 
Yann Droneaud
OPTEYA


--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-16 Thread Erez Shitrit
Currently, iflink of the parent interface was always accessed, even 
when interface didn't have a parent and hence we crashed there.

Handle the interface types properly: for a child interface, return
the ifindex of the parent, for parent interface, return its ifindex.

For child devices, make sure to set the parent pointer prior to
invoking register_netdevice(), this allows the new ndo to be called
by the stack immediately after the child device is registered.

Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
Reported-by: Honggang Li ho...@redhat.com
Signed-off-by: Erez Shitrit ere...@mellanox.com
Signed-off-by: Honggang Li ho...@redhat.com
---

changes from V0:
 - fixed two typos in the change-log

 drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 3 +--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c 
b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 657b89b..915ad04 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -846,6 +846,11 @@ static int ipoib_get_iflink(const struct net_device *dev)
 {
struct ipoib_dev_priv *priv = netdev_priv(dev);
 
+   /* parent interface */
+   if (!test_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags))
+   return dev-ifindex;
+
+   /* child/vlan interface */
return priv-parent-ifindex;
 }
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c 
b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
index 4dd1313..fca1a88 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
@@ -58,6 +58,7 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
ipoib_dev_priv *priv,
/* MTU will be reset when mcast join happens */
priv-dev-mtu   = IPOIB_UD_MTU(priv-max_ib_mtu);
priv-mcast_mtu  = priv-admin_mtu = priv-dev-mtu;
+   priv-parent = ppriv-dev;
set_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags);
 
result = ipoib_set_dev_features(priv, ppriv-ca);
@@ -84,8 +85,6 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
ipoib_dev_priv *priv,
goto register_failed;
}
 
-   priv-parent = ppriv-dev;
-
ipoib_create_debug_files(priv-dev);
 
/* RTNL childs don't need proprietary sysfs entries */
-- 
1.7.11.3

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink

2015-04-16 Thread Or Gerlitz
On Thu, Apr 16, 2015, Yann Droneaud ydrone...@opteya.com wrote:
 Hi,

 Le jeudi 16 avril 2015 à 16:34 +0300, Erez Shitrit a écrit :
 Currently, iflink of the parent interface was always accessed, even
 when interface didn't have a parent and hence we crashed there.

 + since commit 5aa7add8f14b ('infiniband/ipoib: implement
 ndo_get_iflink').

 as there was no crash here before AFAIK.

Disagree, it's redundant, as the Fixes tag below points to this commit


 Handle the interface types properly: for a child interface, return
 the ifindex of the parent, for parent interface, return its ifindex.

 For child devices, make sure to set the parent pointer prior to
 invoking register_netdevice(), this allows the new ndo to be called
 by the stack immediately after the child device is registered.

 Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')

 Cc: Nicolas Dichtel nicolas.dich...@6wind.com

Ditto, I find it enough to just copy Nicholas on the patch submission,
as we did here.

Or.

 Reported-by: Honggang Li ho...@redhat.com
 Signed-off-by: Erez Shitrit ere...@mellanox.com
 Signed-off-by: Honggang Li ho...@redhat.com
 ---

 changes from V0:
  - fixed two typos in the change-log

  drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +
  drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 3 +--
  2 files changed, 6 insertions(+), 2 deletions(-)

 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c 
 b/drivers/infiniband/ulp/ipoib/ipoib_main.c
 index 657b89b..915ad04 100644
 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
 +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
 @@ -846,6 +846,11 @@ static int ipoib_get_iflink(const struct net_device 
 *dev)
  {
   struct ipoib_dev_priv *priv = netdev_priv(dev);

 + /* parent interface */
 + if (!test_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags))
 + return dev-ifindex;
 +
 + /* child/vlan interface */
   return priv-parent-ifindex;
  }

 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c 
 b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 index 4dd1313..fca1a88 100644
 --- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 +++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
 @@ -58,6 +58,7 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
 ipoib_dev_priv *priv,
   /* MTU will be reset when mcast join happens */
   priv-dev-mtu   = IPOIB_UD_MTU(priv-max_ib_mtu);
   priv-mcast_mtu  = priv-admin_mtu = priv-dev-mtu;
 + priv-parent = ppriv-dev;
   set_bit(IPOIB_FLAG_SUBINTERFACE, priv-flags);

   result = ipoib_set_dev_features(priv, ppriv-ca);
 @@ -84,8 +85,6 @@ int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct 
 ipoib_dev_priv *priv,
   goto register_failed;
   }

 - priv-parent = ppriv-dev;
 -
   ipoib_create_debug_files(priv-dev);

   /* RTNL childs don't need proprietary sysfs entries */

 Regards.

 --
 Yann Droneaud
 OPTEYA


 --
 To unsubscribe from this list: send the line unsubscribe linux-rdma in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html