mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
mlxsw: Fix some IS_ERR() vs NULL bugs
[ Upstream commitc391eb8366] The mlxsw_sp_acl_rulei_create() function is supposed to return an error pointer from mlxsw_afa_block_create(). The problem is that these functions both return NULL instead of error pointers. Half the callers expect NULL and half expect error pointers so it could lead to a NULL dereference on failure. This patch changes both of them to return error pointers and changes all the callers which checked for NULL to check for IS_ERR() instead. Fixes:4cda7d8d70("mlxsw: core: Introduce flexible actions support") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c39723ccc4
commit
b9d1ba5dd9
@@ -316,7 +316,7 @@ struct mlxsw_afa_block *mlxsw_afa_block_create(struct mlxsw_afa *mlxsw_afa)
|
||||
|
||||
block = kzalloc(sizeof(*block), GFP_KERNEL);
|
||||
if (!block)
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
INIT_LIST_HEAD(&block->resource_list);
|
||||
block->afa = mlxsw_afa;
|
||||
|
||||
@@ -344,7 +344,7 @@ err_second_set_create:
|
||||
mlxsw_afa_set_destroy(block->first_set);
|
||||
err_first_set_create:
|
||||
kfree(block);
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_afa_block_create);
|
||||
|
||||
|
||||
@@ -88,8 +88,8 @@ static int mlxsw_sp2_acl_tcam_init(struct mlxsw_sp *mlxsw_sp, void *priv,
|
||||
* to be written using PEFA register to all indexes for all regions.
|
||||
*/
|
||||
afa_block = mlxsw_afa_block_create(mlxsw_sp->afa);
|
||||
if (!afa_block) {
|
||||
err = -ENOMEM;
|
||||
if (IS_ERR(afa_block)) {
|
||||
err = PTR_ERR(afa_block);
|
||||
goto err_afa_block;
|
||||
}
|
||||
err = mlxsw_afa_block_continue(afa_block);
|
||||
|
||||
@@ -442,7 +442,8 @@ mlxsw_sp_acl_rulei_create(struct mlxsw_sp_acl *acl)
|
||||
|
||||
rulei = kzalloc(sizeof(*rulei), GFP_KERNEL);
|
||||
if (!rulei)
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
rulei->act_block = mlxsw_afa_block_create(acl->mlxsw_sp->afa);
|
||||
if (IS_ERR(rulei->act_block)) {
|
||||
err = PTR_ERR(rulei->act_block);
|
||||
|
||||
@@ -199,8 +199,8 @@ mlxsw_sp_mr_tcam_afa_block_create(struct mlxsw_sp *mlxsw_sp,
|
||||
int err;
|
||||
|
||||
afa_block = mlxsw_afa_block_create(mlxsw_sp->afa);
|
||||
if (!afa_block)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
if (IS_ERR(afa_block))
|
||||
return afa_block;
|
||||
|
||||
err = mlxsw_afa_block_append_allocated_counter(afa_block,
|
||||
counter_index);
|
||||
|
||||
Reference in New Issue
Block a user