lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 11 Aug 2022 13:44:17 +0200 From: Petr Machata <petrm@...dia.com> To: Petr Machata <petrm@...dia.com> CC: "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, <netdev@...r.kernel.org>, <linux-kernel@...r.kernel.org>, Vadim Pasternak <vadimp@...dia.com>, "Ido Schimmel" <idosch@...dia.com>, Jiri Pirko <jiri@...dia.com> Subject: Re: [PATCH net] mlxsw: minimal: Fix deadlock in ports creation CC'ing Jiri, which I forgot to do. Petr Machata <petrm@...dia.com> writes: > From: Vadim Pasternak <vadimp@...dia.com> > > Drop devl_lock() / devl_unlock() from ports creation and removal flows > since the devlink instance lock is now taken by mlxsw_core. > > Fixes: 72a4c8c94efa ("mlxsw: convert driver to use unlocked devlink API during init/fini") > Signed-off-by: Vadim Pasternak <vadimp@...dia.com> > Signed-off-by: Ido Schimmel <idosch@...dia.com> > Signed-off-by: Petr Machata <petrm@...dia.com> > --- > drivers/net/ethernet/mellanox/mlxsw/minimal.c | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlxsw/minimal.c b/drivers/net/ethernet/mellanox/mlxsw/minimal.c > index d9bf584234a6..bb1cd4bae82e 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/minimal.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/minimal.c > @@ -328,7 +328,6 @@ static void mlxsw_m_port_module_unmap(struct mlxsw_m *mlxsw_m, u8 module) > static int mlxsw_m_ports_create(struct mlxsw_m *mlxsw_m) > { > unsigned int max_ports = mlxsw_core_max_ports(mlxsw_m->core); > - struct devlink *devlink = priv_to_devlink(mlxsw_m->core); > u8 last_module = max_ports; > int i; > int err; > @@ -357,7 +356,6 @@ static int mlxsw_m_ports_create(struct mlxsw_m *mlxsw_m) > } > > /* Create port objects for each valid entry */ > - devl_lock(devlink); > for (i = 0; i < mlxsw_m->max_ports; i++) { > if (mlxsw_m->module_to_port[i] > 0) { > err = mlxsw_m_port_create(mlxsw_m, > @@ -367,7 +365,6 @@ static int mlxsw_m_ports_create(struct mlxsw_m *mlxsw_m) > goto err_module_to_port_create; > } > } > - devl_unlock(devlink); > > return 0; > > @@ -377,7 +374,6 @@ static int mlxsw_m_ports_create(struct mlxsw_m *mlxsw_m) > mlxsw_m_port_remove(mlxsw_m, > mlxsw_m->module_to_port[i]); > } > - devl_unlock(devlink); > i = max_ports; > err_module_to_port_map: > for (i--; i > 0; i--) > @@ -390,10 +386,8 @@ static int mlxsw_m_ports_create(struct mlxsw_m *mlxsw_m) > > static void mlxsw_m_ports_remove(struct mlxsw_m *mlxsw_m) > { > - struct devlink *devlink = priv_to_devlink(mlxsw_m->core); > int i; > > - devl_lock(devlink); > for (i = 0; i < mlxsw_m->max_ports; i++) { > if (mlxsw_m->module_to_port[i] > 0) { > mlxsw_m_port_remove(mlxsw_m, > @@ -401,7 +395,6 @@ static void mlxsw_m_ports_remove(struct mlxsw_m *mlxsw_m) > mlxsw_m_port_module_unmap(mlxsw_m, i); > } > } > - devl_unlock(devlink); > > kfree(mlxsw_m->module_to_port); > kfree(mlxsw_m->ports);
Powered by blists - more mailing lists