[PATCH char-misc-next] mei: bail out if no matching hbm request found

From: Alexander Usyskin

Date: Sun Nov 01 2026 - 09:32:24 EST


Umatched HBM client response acts on wrong client
as last traversed client is used.

Fill cl pointer only when match is found and add debug print
for that edge case.

Signed-off-by: Alexander Usyskin <alexander.usyskin@xxxxxxxxx>
---
drivers/misc/mei/hbm.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/misc/mei/hbm.c b/drivers/misc/mei/hbm.c
index a864ac7121b2..c93f3db34353 100644
--- a/drivers/misc/mei/hbm.c
+++ b/drivers/misc/mei/hbm.c
@@ -998,25 +998,26 @@ static void mei_hbm_cl_res(struct mei_device *dev,
struct mei_hbm_cl_cmd *rs,
enum mei_cb_file_ops fop_type)
{
- struct mei_cl *cl;
+ struct mei_cl *cl = NULL;
struct mei_cl_cb *cb, *next;

- cl = NULL;
list_for_each_entry_safe(cb, next, &dev->ctrl_rd_list, list) {

- cl = cb->cl;
-
if (cb->fop_type != fop_type)
continue;

- if (mei_hbm_cl_addr_equal(cl, rs)) {
+ if (mei_hbm_cl_addr_equal(cb->cl, rs)) {
list_del_init(&cb->list);
+ cl = cb->cl;
break;
}
}

- if (!cl)
+ if (!cl) {
+ dev_dbg(&dev->dev, "Can't find request for cmd %02d (%02d:%02d)\n",
+ rs->hbm_cmd, rs->host_addr, rs->me_addr);
return;
+ }

switch (fop_type) {
case MEI_FOP_CONNECT:

---
base-commit: 79e5797d243a466138f641932f81dc69f796060c
change-id: 20261101-bail_out_on_nonexisting_hbm-a9a578675835

Best regards,
--
Alexander Usyskin <alexander.usyskin@xxxxxxxxx>