misc: bcm-vk: Annotate struct bcm_vk_wkent with __counted_by
Subsystems (2)
PATCH 1/1 misc: bcm-vk: Annotate struct bcm_vk_wkent with __counted_by
Prepare for the coming implementation by GCC and Clang of the __counted_by attribute. Flexible array members annotated with __counted_by can have their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family functions).
As found with Coccinelle[1], add __counted_by for struct bcm_vk_wkent. Additionally, since the element count member must be set before accessing the annotated flexible array member, move its initialization earlier.
[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
--- drivers/misc/bcm-vk/bcm_vk_msg.c | 2 +- drivers/misc/bcm-vk/bcm_vk_msg.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/misc/bcm-vk/bcm_vk_msg.c +1 -1
@@ -703,12 +703,12 @@ int bcm_vk_send_shutdown_msg(struct bcm_vk *vk, u32 shut_type, entry =kzalloc (struct_size (entry, to_v_msg,1 ),GFP_KERNEL );if (!entry)return -ENOMEM ; + entry->to_v_blks =1 ;/* always 1 block */ /* fill up necessary data */ entry->to_v_msg[0 ].function_id =VK_FID_SHUTDOWN ;set_q_num (&entry->to_v_msg[0 ], q_num);set_msg_id (&entry->to_v_msg[0 ],VK_SIMPLEX_MSG_ID ); - entry->to_v_blks =1 ;/* always 1 block */ entry->to_v_msg[0 ].cmd = shut_type; entry->to_v_msg[0 ].arg = pid;
drivers/misc/bcm-vk/bcm_vk_msg.h +1 -1
@@ -116,7 +116,7 @@ struct bcm_vk_wkent {u32 usr_msg_id;u32 to_v_blks;u32 seq_num; -struct vk_msg_blk to_v_msg[]; + struct vk_msg_blk to_v_msg[] __counted_by(to_v_blks); };/* queue stats counters */
Signature · 1 line
2.34.1
Quoted 10 lines · Kees Cook
Prepare for the coming implementation by GCC and Clang of the
__counted_byattribute. Flexible array members annotated with__counted_bycan have their accesses bounds-checked at run-time checking viaCONFIG_UBSAN_BOUNDS(for array indexing) andCONFIG_FORTIFY_SOURCE(for strcpy/memcpy-family functions).As found with Coccinelle[1], add
__counted_byfor structbcm_vk_wkent. Additionally, since the element count member must be set before accessing the annotated flexible array member, move its initialization earlier.
Quoted 7 lines
[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
Cc Scott Branden <[email protected]>Cc Broadcom internal kernel review list <[email protected]>Cc Arnd Bergmann <[email protected]>Cc Greg Kroah-Hartman <[email protected]>Signed-off-by Kees Cook <[email protected]>
Thanks
Signature · 1 line
Gustavo
Quoted 36 lines
--- drivers/misc/bcm-vk/bcm_vk_msg.c | 2 +- drivers/misc/bcm-vk/bcm_vk_msg.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)drivers/misc/bcm-vk/bcm_vk_msg.c +1
-1@@ -703,12 +703,12 @@ int bcm_vk_send_shutdown_msg(struct bcm_vk *vk, u32 shut_type, entry =kzalloc (struct_size (entry, to_v_msg,1 ),GFP_KERNEL );if (!entry)return -ENOMEM ; + entry->to_v_blks =1 ;/* always 1 block */ /* fill up necessary data */ entry->to_v_msg[0 ].function_id =VK_FID_SHUTDOWN ;set_q_num (&entry->to_v_msg[0 ], q_num);set_msg_id (&entry->to_v_msg[0 ],VK_SIMPLEX_MSG_ID ); - entry->to_v_blks =1 ;/* always 1 block */ entry->to_v_msg[0 ].cmd = shut_type; entry->to_v_msg[0 ].arg = pid;drivers/misc/bcm-vk/bcm_vk_msg.h +1
-1@@ -116,7 +116,7 @@ struct bcm_vk_wkent {u32 usr_msg_id;u32 to_v_blks;u32 seq_num; -struct vk_msg_blk to_v_msg[]; + struct vk_msg_blk to_v_msg[] __counted_by(to_v_blks); };/* queue stats counters */