Re: [PATCH V1 net-next] IB/ipoib: Fix ndo_get_iflink
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
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
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
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
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
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
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
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
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
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