Re: [PATCH v2] IB/mlx4: Fix refcount leak in add_port() error path

From: Jason Gunthorpe

Date: Tue Apr 28 2026 - 11:57:43 EST


On Mon, Apr 13, 2026 at 07:59:48PM +0800, Guangshuo Li wrote:
> @@ -642,7 +642,7 @@ static int add_port(struct mlx4_ib_dev *dev, int port_num, int slave)
> kobject_get(dev->dev_ports_parent[slave]),
> "%d", port_num);
> if (ret)
> - goto err_alloc;
> + goto err_kobj;
>
> p->pkey_group.name = "pkey_idx";
> p->pkey_group.attrs =
> @@ -689,6 +689,11 @@ static int add_port(struct mlx4_ib_dev *dev, int port_num, int slave)
> kobject_put(dev->dev_ports_parent[slave]);
> kfree(p);
> return ret;
> +
> +err_kobj:
> + kobject_put(&p->kobj);

Sashiko says this will crash because this was skipped:

p->pkey_group.attrs =
alloc_group_attrs(show_port_pkey,
is_eth ? NULL : store_port_pkey,
dev->dev->caps.pkey_table_len[port_num]);

Along with other problems.

Jason