mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
Replace struct hack pattern with flexible array members in msgq_t and msgq_message_t to resolve UBSAN warnings. The message queue implementation was using the old "struct hack" pattern with single-element arrays (int32_t queue[1] and int32_t payload[1]) to create variable-length structures. While functionally correct, this triggers UBSAN array-index-out-of-bounds errors when accessing elements beyond index 0, even though the memory is properly allocated. UBSAN errors observed: - msgq.c:64: index 2045 out of range for type 'int32_t [1]' - msgq.c:69: index 153 out of range for type 'int32_t [1]' - msgq.c:124: index 53 out of range for type 'int32_t [1]' - msgq.c:148: index 53 out of range for type 'int32_t [1]' - msgq.c:149: index 2045 out of range for type 'int32_t [1]' Changes: 1. Convert queue[1] to queue[] in msgq_t structure 2. Convert payload[1] to payload[] in msgq_message_t structure 3. Update MSGQ_HEADER_SIZE and MSGQ_MESSAGE_HEADER_SIZE macros to use sizeof() directly, as flexible array members have zero size and cannot be used with sizeof() The flexible array member (FAM) approach is: - C99 standard compliant - Linux kernel best practice for variable-length structures - Binary compatible with the previous implementation - Eliminates UBSAN false positives without functional changes Bug 4831393 Change-Id: I243d4a1b1f091bf17cfc10337e75dbd1b878042f Signed-off-by: Asha Talambedu <atalambedu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3464624 Reviewed-by: Mohan kumar <mkumard@nvidia.com> Reviewed-by: Viswanath L <viswanathl@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>