Commit b09b58e3 authored by Zhipeng Lu's avatar Zhipeng Lu Committed by David S. Miller
Browse files

octeontx2-pf: Fix a memleak otx2_sq_init



When qmem_alloc and pfvf->hw_ops->sq_aq_init fails, sq->sg should be
freed to prevent memleak.

Fixes: c9c12d33 ("octeontx2-pf: Add support for PTP clock")
Signed-off-by: default avatarZhipeng Lu <alexious@zju.edu.cn>
Acked-by: default avatarJiri Pirko <jiri@nvidia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f3616173
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -951,9 +951,12 @@ int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura)
	if (pfvf->ptp && qidx < pfvf->hw.tx_queues) {
		err = qmem_alloc(pfvf->dev, &sq->timestamps, qset->sqe_cnt,
				 sizeof(*sq->timestamps));
		if (err)
		if (err) {
			kfree(sq->sg);
			sq->sg = NULL;
			return err;
		}
	}

	sq->head = 0;
	sq->cons_head = 0;
@@ -968,7 +971,14 @@ int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura)
	sq->stats.bytes = 0;
	sq->stats.pkts = 0;

	return pfvf->hw_ops->sq_aq_init(pfvf, qidx, sqb_aura);
	err = pfvf->hw_ops->sq_aq_init(pfvf, qidx, sqb_aura);
	if (err) {
		kfree(sq->sg);
		sq->sg = NULL;
		return err;
	}

	return 0;

}