Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/systm.h
| Show First 20 Lines • Show All 303 Lines • ▼ Show 20 Lines | __nodiscard int copyinstr(const void * __restrict udaddr, | ||||
| void * _Nonnull __restrict kaddr, size_t len, | void * _Nonnull __restrict kaddr, size_t len, | ||||
| size_t * __restrict lencopied); | size_t * __restrict lencopied); | ||||
| __nodiscard int copyin(const void * __restrict udaddr, | __nodiscard int copyin(const void * __restrict udaddr, | ||||
| void * _Nonnull __restrict kaddr, size_t len); | void * _Nonnull __restrict kaddr, size_t len); | ||||
| __nodiscard int copyin_nofault(const void * __restrict udaddr, | __nodiscard int copyin_nofault(const void * __restrict udaddr, | ||||
| void * _Nonnull __restrict kaddr, size_t len); | void * _Nonnull __restrict kaddr, size_t len); | ||||
| __nodiscard int copyout(const void * _Nonnull __restrict kaddr, | __nodiscard int copyout(const void * _Nonnull __restrict kaddr, | ||||
| void * __restrict udaddr, size_t len); | void * __restrict udaddr, size_t len); | ||||
| __nodiscard int copyout_nofault( | __nodiscard int copyout_nofault( | ||||
markj: Hmm, I didn't realize that `__nodiscard` and `__result_use_check` are aliases. Should we prefer… | |||||
| const void * _Nonnull __restrict kaddr, void * __restrict udaddr, | const void * _Nonnull __restrict kaddr, void * __restrict udaddr, | ||||
| size_t len); | size_t len); | ||||
| #ifdef __CHERI__ | |||||
| __nodiscard int copyinptr(const void * __restrict udaddr, | |||||
| void * _Nonnull __restrict kaddr, size_t len); | |||||
| __nodiscard int copyinptr_nofault(const void * __restrict udaddr, | |||||
| void * _Nonnull __restrict kaddr, size_t len); | |||||
| __nodiscard int copyoutptr( | |||||
| const void * _Nonnull __restrict kaddr, void * __restrict udaddr, | |||||
| size_t len); | |||||
| __nodiscard int copyoutptr_nofault( | |||||
| const void * _Nonnull __restrict kaddr, void * __restrict udaddr, | |||||
| size_t len); | |||||
| #else | |||||
Done Inline ActionsWe might as well add it anyway, no? markj: We might as well add it anyway, no? | |||||
| #define copyinptr copyin | |||||
| #define copyinptr_nofault copyin_nofault | |||||
| #define copyoutptr copyout | |||||
| #define copyoutptr_nofault copyout_nofault | |||||
| #endif | |||||
| #ifdef SAN_NEEDS_INTERCEPTORS | #ifdef SAN_NEEDS_INTERCEPTORS | ||||
| int SAN_INTERCEPTOR(copyin)(const void *, void *, size_t); | int SAN_INTERCEPTOR(copyin)(const void *, void *, size_t); | ||||
| int SAN_INTERCEPTOR(copyinstr)(const void *, void *, size_t, size_t *); | int SAN_INTERCEPTOR(copyinstr)(const void *, void *, size_t, size_t *); | ||||
| int SAN_INTERCEPTOR(copyout)(const void *, void *, size_t); | int SAN_INTERCEPTOR(copyout)(const void *, void *, size_t); | ||||
| #ifndef SAN_RUNTIME | #ifndef SAN_RUNTIME | ||||
| #define copyin(u, k, l) SAN_INTERCEPTOR(copyin)((u), (k), (l)) | #define copyin(u, k, l) SAN_INTERCEPTOR(copyin)((u), (k), (l)) | ||||
| #define copyinstr(u, k, l, lc) SAN_INTERCEPTOR(copyinstr)((u), (k), (l), (lc)) | #define copyinstr(u, k, l, lc) SAN_INTERCEPTOR(copyinstr)((u), (k), (l), (lc)) | ||||
| #define copyout(k, u, l) SAN_INTERCEPTOR(copyout)((k), (u), (l)) | #define copyout(k, u, l) SAN_INTERCEPTOR(copyout)((k), (u), (l)) | ||||
| ▲ Show 20 Lines • Show All 286 Lines • Show Last 20 Lines | |||||
Hmm, I didn't realize that __nodiscard and __result_use_check are aliases. Should we prefer one over the other?