joaomoreira added a comment.

> In the previous discussion, @joaomoreira  pointed out that this is very 
> similar to `nocf_check` and proposed reusing that attribute. In an offline 
> discussion, @pcc  was concerned that an attribute may not be the right 
> approach here and suggested  a `__builtin_kcfi_unchecked(function(args))` 
> built-in function to avoid changing the type system.

I'm still thinking a bit about this/needing some time to provide a proper 
review, but just to not hold the thoughts back since this is moving.

A consideration I can foresee with extending the type system with an attribute 
is that you then tie the function pointer prototype to the attribute for 
assignments and this will later require some casting magic if you want to 
invoke functions without kcfi_unchecked through a kcfi_unchecked pointer (which 
I assume should be doable). OTOH, it would be nice to get warnings when 
assigning a kcfi_unchecked functions to pointers which will later be used in 
checked indirect calls (yet, it would be better to have explicit warning about 
the inconsistency instead of implicit type mismatching ones).

Regarding nocf_check, my understanding is that the kernel IBT support assumes 
CET/IBT to be orthogonal to KCFI -- with that said, kernel implementation is 
set to never use or allow no-track prefixes, meaning that the above situation 
never happens for IBT (since there are no nocf_check function pointers). OTOH, 
I assume that there could be situations where you want the function pointer 
call to be relaxed/coarse-grained? If yes, this would need to be done through a 
different attribute other than nocf_check, since this sets the compiler to emit 
notrack prefixes that are invalid in kernel.

With all the above, it seems to me that using a kcfi-specific builtin could be 
the more flexible option.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122673/new/

https://reviews.llvm.org/D122673

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to