[roll] Roll fuchsia [kernel] Ensure is_copy_allowed static_assert in user_ptr is always checked

This adds a static_assert into the class definition for user_ptr.
Previously this was only asserted inside the method definitions.
That meant that a new type could be added and used in syscall API
signatures without a violation of the is_copy_allowed constraints
being caught at build time.  It's only when the implementation
code for the syscall went in and actually used the copy in/out
methods that the violation would be caught with a build error.
That was safely before it mattered in the usual development flow,
but not as safe as we'd like.  For reasons of isolating API
review from implementation review, it often makes sense to first
land a new API along with all its documentation and type
definitions and then later land its implementation code.  When
the implementation is complex and takes time to land, it's
possible that user code targeting the new API would start to be
built, making any churn in the public API details later more of a
hassle.  So it's desirable to catch any mechanical problems with
the API types as soon as they are declared.

In the places that define syscall API wrappers, it's now
necessary to ensure that all of the API types are complete rather
than dangling forward references (by including the syscalls/*.h
headers).

For good measure, a static_assert is also added in the main
SafeSyscallArgument template class.  This enforces the same
formal constraints on types used as direct arguments rather
than via pointers in syscall APIs.

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1140272
Original-Revision: 36be9e8d43073fa05d8df7f8e5ec13b2c563ef44
GitOrigin-RevId: ad4eb031e70ea2f349d7a4c5293d7a1bedbf3f75
Change-Id: I8d5d26f12122d92154b0809092c74d544c069160
1 file changed
tree: 267269c471ec409c686271bda4d9831fc5a1de26
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.