Skip to content

Commit

Permalink
templates: fix mismatched type size in simple
Browse files Browse the repository at this point in the history
Fix a mismatched type size error in component.simple.c:485, which may
causes data overflow when CONFIG_WORD_SIZE is 64 in the 64-bit
 machine. Using defined CLZL() macro to correctly handle the specified
CONFIG_WORD_SIZE.

Signed-off-by: colorglass <[email protected]>
  • Loading branch information
colorglass committed Feb 1, 2024
1 parent 89af719 commit ec30fde
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion camkes/templates/component.simple.c
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,13 @@ void camkes_make_simple(simple_t *simple) {
/*# If there is no size specified in the configuration then we assume the cnode
will be as small as possible to hold all the capabilities that are currently
defined #*/
simple_data.cnodesizebits = CONFIG_WORD_SIZE - __builtin_clz(/*? holding_slot ?*/) + 1;
#if CONFIG_WORD_SIZE == 32
simple_data.cnodesizebits = CONFIG_WORD_SIZE - __builtin_clzl(/*? holding_slot ?*/) + 1;
#elif CONFIG_WORD_SIZE == 64
simple_data.cnodesizebits = CONFIG_WORD_SIZE - __builtin_clzll(/*? holding_slot ?*/) + 1;
#else
#error "Unknown kernel word size"
#endif
/*- endif -*/
/*# Find untyped physical addresses. We only care if the untyped is at least a page size #*/
/*- for u in untyped_obj_list -*/
Expand Down

0 comments on commit ec30fde

Please sign in to comment.