Message ID | 20200924123554.2836931-2-marcelo.cerri@canonical.com |
---|---|
State | New |
Headers | show |
Series | LP:#1896760 - Mellanox patch for fixing failures in ConnectX3 Pro/DPDK | expand |
On 24.09.20 14:35, Marcelo Henrique Cerri wrote: > From: Mark Bloch <markb@mellanox.com> > > BugLink: https://bugs.launchpad.net/bugs/1896760 > > If the pkey_table is not available (which is the case when RoCE is not > supported), the cited commit caused a regression where mlx4_devices > without RoCE are not created. > > Fix this by returning a pkey table length of zero in procedure > eth_link_query_port() if the pkey-table length reported by the device is > zero. > > Link: https://lore.kernel.org/r/20200824110229.1094376-1-leon@kernel.org > Cc: <stable@vger.kernel.org> > Fixes: 1901b91f9982 ("IB/core: Fix potential NULL pointer dereference in pkey cache") > Fixes: fa417f7b520e ("IB/mlx4: Add support for IBoE") > Signed-off-by: Mark Bloch <markb@mellanox.com> > Reviewed-by: Maor Gottlieb <maorg@nvidia.com> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> > (cherry picked from commit ec78b3bd66bc9a015505df0ef0eb153d9e64b03b) > Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com> Simple fix and clean cherry-pick. Could you please add the SRU template to the bug report? Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> Thanks, Kleber > --- > drivers/infiniband/hw/mlx4/main.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c > index c46826d34ac8..4860d484f733 100644 > --- a/drivers/infiniband/hw/mlx4/main.c > +++ b/drivers/infiniband/hw/mlx4/main.c > @@ -781,7 +781,8 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port, > props->ip_gids = true; > props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; > props->max_msg_sz = mdev->dev->caps.max_msg_sz; > - props->pkey_tbl_len = 1; > + if (mdev->dev->caps.pkey_table_len[port]) > + props->pkey_tbl_len = 1; > props->max_mtu = IB_MTU_4096; > props->max_vl_num = 2; > props->state = IB_PORT_DOWN; >
Thanks. I updated the bug description with the SRU template. On Thu, Sep 24, 2020 at 02:51:00PM +0200, Kleber Souza wrote: > On 24.09.20 14:35, Marcelo Henrique Cerri wrote: > > From: Mark Bloch <markb@mellanox.com> > > > > BugLink: https://bugs.launchpad.net/bugs/1896760 > > > > If the pkey_table is not available (which is the case when RoCE is not > > supported), the cited commit caused a regression where mlx4_devices > > without RoCE are not created. > > > > Fix this by returning a pkey table length of zero in procedure > > eth_link_query_port() if the pkey-table length reported by the device is > > zero. > > > > Link: https://lore.kernel.org/r/20200824110229.1094376-1-leon@kernel.org > > Cc: <stable@vger.kernel.org> > > Fixes: 1901b91f9982 ("IB/core: Fix potential NULL pointer dereference in pkey cache") > > Fixes: fa417f7b520e ("IB/mlx4: Add support for IBoE") > > Signed-off-by: Mark Bloch <markb@mellanox.com> > > Reviewed-by: Maor Gottlieb <maorg@nvidia.com> > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> > > (cherry picked from commit ec78b3bd66bc9a015505df0ef0eb153d9e64b03b) > > Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com> > > Simple fix and clean cherry-pick. > > Could you please add the SRU template to the bug report? > > Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> > > > Thanks, > Kleber > > > --- > > drivers/infiniband/hw/mlx4/main.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c > > index c46826d34ac8..4860d484f733 100644 > > --- a/drivers/infiniband/hw/mlx4/main.c > > +++ b/drivers/infiniband/hw/mlx4/main.c > > @@ -781,7 +781,8 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port, > > props->ip_gids = true; > > props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; > > props->max_msg_sz = mdev->dev->caps.max_msg_sz; > > - props->pkey_tbl_len = 1; > > + if (mdev->dev->caps.pkey_table_len[port]) > > + props->pkey_tbl_len = 1; > > props->max_mtu = IB_MTU_4096; > > props->max_vl_num = 2; > > props->state = IB_PORT_DOWN; > > >
On 24.09.20 14:35, Marcelo Henrique Cerri wrote: > From: Mark Bloch <markb@mellanox.com> > > BugLink: https://bugs.launchpad.net/bugs/1896760 > > If the pkey_table is not available (which is the case when RoCE is not > supported), the cited commit caused a regression where mlx4_devices > without RoCE are not created. > > Fix this by returning a pkey table length of zero in procedure > eth_link_query_port() if the pkey-table length reported by the device is > zero. > > Link: https://lore.kernel.org/r/20200824110229.1094376-1-leon@kernel.org > Cc: <stable@vger.kernel.org> > Fixes: 1901b91f9982 ("IB/core: Fix potential NULL pointer dereference in pkey cache") > Fixes: fa417f7b520e ("IB/mlx4: Add support for IBoE") > Signed-off-by: Mark Bloch <markb@mellanox.com> > Reviewed-by: Maor Gottlieb <maorg@nvidia.com> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> > (cherry picked from commit ec78b3bd66bc9a015505df0ef0eb153d9e64b03b) > Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > drivers/infiniband/hw/mlx4/main.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c > index c46826d34ac8..4860d484f733 100644 > --- a/drivers/infiniband/hw/mlx4/main.c > +++ b/drivers/infiniband/hw/mlx4/main.c > @@ -781,7 +781,8 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port, > props->ip_gids = true; > props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; > props->max_msg_sz = mdev->dev->caps.max_msg_sz; > - props->pkey_tbl_len = 1; > + if (mdev->dev->caps.pkey_table_len[port]) > + props->pkey_tbl_len = 1; > props->max_mtu = IB_MTU_4096; > props->max_vl_num = 2; > props->state = IB_PORT_DOWN; >
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c index c46826d34ac8..4860d484f733 100644 --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c @@ -781,7 +781,8 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port, props->ip_gids = true; props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; props->max_msg_sz = mdev->dev->caps.max_msg_sz; - props->pkey_tbl_len = 1; + if (mdev->dev->caps.pkey_table_len[port]) + props->pkey_tbl_len = 1; props->max_mtu = IB_MTU_4096; props->max_vl_num = 2; props->state = IB_PORT_DOWN;