From d9821d09c7857b70b8f7c16e77d3b66edfb1068a Mon Sep 17 00:00:00 2001 From: "Christian F.K. Schaller" Date: Tue, 7 Apr 2026 13:07:24 -0400 Subject: [PATCH] module-avb: fix Milan lock entity error response and re-lock timeout Fix two bugs in handle_cmd_lock_entity_milan_v12(): 1. When server_find_descriptor() returns NULL, reply_status() was called with the AEM packet pointer instead of the full ethernet frame, corrupting the response ethernet header. 2. When refreshing an existing lock, the expire timeout was extended by raw seconds (60) instead of nanoseconds (60 * SPA_NSEC_PER_SEC), causing the lock to expire almost immediately after re-lock. Co-Authored-By: Claude Opus 4.6 --- src/modules/module-avb/aecp-aem-cmds-resps/cmd-lock-entity.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/module-avb/aecp-aem-cmds-resps/cmd-lock-entity.c b/src/modules/module-avb/aecp-aem-cmds-resps/cmd-lock-entity.c index 0149d633b..73b7d2548 100644 --- a/src/modules/module-avb/aecp-aem-cmds-resps/cmd-lock-entity.c +++ b/src/modules/module-avb/aecp-aem-cmds-resps/cmd-lock-entity.c @@ -99,7 +99,7 @@ int handle_cmd_lock_entity_milan_v12(struct aecp *aecp, int64_t now, const void desc = server_find_descriptor(server, desc_type, desc_id); if (desc == NULL) - return reply_status(aecp, AVB_AECP_AEM_STATUS_NO_SUCH_DESCRIPTOR, p, len); + return reply_status(aecp, AVB_AECP_AEM_STATUS_NO_SUCH_DESCRIPTOR, m, len); entity_state = desc->ptr; lock = &entity_state->state.lock_state; @@ -148,7 +148,7 @@ int handle_cmd_lock_entity_milan_v12(struct aecp *aecp, int64_t now, const void // If the lock is taken again by device if (ctrler_id == lock->locked_id) { lock->base_info.expire_timeout += - AECP_AEM_LOCK_ENTITY_EXPIRE_TIMEOUT_SECOND; + AECP_AEM_LOCK_ENTITY_EXPIRE_TIMEOUT_SECOND * SPA_NSEC_PER_SEC; lock->is_locked = true; } else {