From: Stanley Chu Date: Fri, 29 Aug 2025 01:23:09 +0000 (+0800) Subject: i3c: master: svc: Recycle unused IBI slot X-Git-Tag: v6.18-rc1~153^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3448a934ba6f803911ac084d05a2ffce507ea6c6;p=thirdparty%2Fkernel%2Flinux.git i3c: master: svc: Recycle unused IBI slot In svc_i3c_master_handle_ibi(), an IBI slot is fetched from the pool to store the IBI payload. However, when an error condition is encountered, the function returns without recycling the IBI slot, resulting in an IBI slot leak. Fixes: c85e209b799f ("i3c: master: svc: fix ibi may not return mandatory data byte") Signed-off-by: Stanley Chu Reviewed-by: Frank Li Link: https://lore.kernel.org/r/20250829012309.3562585-3-yschu@nuvoton.com Signed-off-by: Alexandre Belloni --- diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c index 8e7b4ab919e3d..9641e66a4e5f2 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -417,6 +417,7 @@ static int svc_i3c_master_handle_ibi(struct svc_i3c_master *master, SVC_I3C_MSTATUS_COMPLETE(val), 0, 1000); if (ret) { dev_err(master->dev, "Timeout when polling for COMPLETE\n"); + i3c_generic_ibi_recycle_slot(data->ibi_pool, slot); return ret; }