Hi,
The morello/next branch has been rebased from v6.1 to v6.4. Make sure to reset/rebase any local branch tracking next. The final 6.1-based commit has been tagged morello-last-6.1.
There should be no user-visible change following this rebase, aside from upstream changes between 6.1 and 6.4. The rest of this email provides a detailed changelog for developers.
Cheers, Kevin
--------------
Noteworthy changes:
- Reverted access_ok() to its original interface by dropping "uaccess: Allow any address/pointer type for access_ok()". This was motivated by the incompatibility that patch created with [1], and the weak justification behind it. We almost always have (or should have) a user pointer available when calling access_ok(), so changing its interface creates more problems than it solves. Related changes: * Added "uaccess: Fix user pointer downcast" and "arm64: uaccess: Extract user address before untagging" to replace that patch. * Dropped "kernel/fork: Remove unnecessary cast when using access_ok()" * Replaced "mm/(gup, mincore): Remove unnecessary cast when using access_ok()" with: - "mm/gup: Create user pointer when calling access_ok()" - "mm/mincore: Temporarily create a user pointer for access_ok()" * Updated "Documentation: core-api: Add a new document about user pointers" accordingly.
- The upsizing in "io_uring: Enlarge struct io_cmd_data in PCuABI" had to be revised upwards due to [2] and [3] (each adding 16 bytes to struct io_sr_msg due to alignment requirements). struct io_cmd_data is now 2 cachelines instead of 1.5 (96 -> 128 bytes).
- Tweaked "io_uring: Implement compat versions of uAPI structs and handle them" to align it with following upstream patch series: * "User mapped provided buffer rings" [4]: aligned with the renaming of struct io_uring_buf_reg::pad to ::flags; moved the ring size calculation from io_alloc_pbuf_ring() and io_pin_pbuf_ring() to io_register_pbuf_ring(), in order to calculate the size of the ring correctly in the compat case in both cases (without duplicating it). * "io_uring: Pass the whole sqe to commands" [5]: as a result of this series, io_uring commands get a pointer to a full (native) SQE, even in compat. To avoid giving them access to uninitialised memory, changed convert_compat64_io_uring_sqe() to zero out the end of the cmd array in the output SQE.
- Used new vm_flags accessor in "io_uring: Allow capability tag access on the shared memory" and "aio: Allow capability tag access on the shared memory", following [6].
- Updated a few more prototypes to pass user_data as __kernel_uintptr_t in "io_uring: Use user pointer type in the uAPI structs", due to [7].
- [8] provides a similar functionality to "module: Allow arch overrides for ELF arch check". The latter was dropped and "module: Enable module loading for PCuABI kernels" was adapted to use the interface introduced by [8] (thanks Kristina). Minor changes:
- Updated "arm64: morello: Disable trapping early and unconditionally" to stash LR into TPIDR_EL0 in init_kernel_el as [9] causes LR to be clobbered by a subsequent call (on the Morello board, not FVP).
- Aligned "arm64: morello: Signal handling support" with recent changes to arch/arm64/kernel/signal.c
- Updated NSIGSEGV in all assertions in "arm64: morello: Handle capability faults"
- Updated "tracing/syscalls: Allow amending metadata macro arguments" to take care of new uses of SYSCALL_METADATA() in arch code (powerpc).
- Added a #include <linux/user_ptr.h> in "arm64: memory: Always return a u64 in untagged_addr()", as it looks like asm/signal.h no longer (implicitly) includes it.
- Extended "fs/ioctl: Modify 3rd argument of fops->unlocked_ioctl to user_uintptr_t" to handle the ioctl wrappers added by [10].
- Replaced "iov_iter: use copy_from_user_with_ptr for struct iovec" with a new patch "iov_iter: Use get_user_ptr for PCuABI support", as copy_iovec_from_user() now uses get_user() instead of copy_from_user() (see [11]). The new patch was moved earlier in the branch to preserve bisectability.
- Moved "tcp: Explicitly create user pointers" earlier in the branch to preserve bisectability (without warning).
- "arm64: configs: Add Morello transitional PCuABI defconfig" and "arm64: morello: Enable basic 9P FS support in transitional defconfig" updated as per make savedefconfig.
Dropped:
- "arm64: signal: Flatten restore_sigframe() error handling" (it doesn't make much sense any more, considering recent additions to that function).
- "mm/hugetlb: Use appropriate user pointer conversions" and "mm/shmem: Use appropriate user pointer conversions" (reverted as part of the recently merged "New user_ptr helpers for uaccess" series).
- "arm64: entry-ftrace.S: Fix build when CONFIG_ARM64_MORELLO=y" (no longer needed thanks to [12]).
- Landed in mainline and already included in v6.4: * "uapi/linux/const.h: Prefer ISO-friendly __typeof__" * "arm64: compat: Remove defines now in asm-generic" * "net: Finish up ->msg_control{,_user} split" * "memfd: Pass argument of memfd_fcntl as int"
- "io_uring/kbuf: Fix size for shared buffer ring" (fixed upstream by [13]).
[1] https://lore.kernel.org/all/20230410174345.4376-2-dev@der-flo.net/ [2] https://lore.kernel.org/all/f1a1ba93-1adf-63fa-6f0f-f3182f165841@kernel.dk/ [3] https://lore.kernel.org/all/0b0d4411-c8fd-4272-770b-e030af6919a0@kernel.dk/ [4] https://lore.kernel.org/io-uring/20230314171641.10542-1-axboe@kernel.dk/ [5] https://lore.kernel.org/all/20230504121856.904491-1-leitao@debian.org/ [6] https://lore.kernel.org/all/20230126193752.297968-3-surenb@google.com/ [7] https://lore.kernel.org/all/20221124093559.3780686-6-dylany@meta.com/ [8] https://lore.kernel.org/all/20221128041539.1742489-2-npiggin@gmail.com/ [9] https://lore.kernel.org/all/20230111102236.1430401-6-ardb@kernel.org/ [10] https://lore.kernel.org/all/20221205123903.159838-3-brgl@bgdev.pl/ [11] https://lore.kernel.org/all/CAHk-=wiC5OBj36LFKYRONF_B19iyuEjK2WQFJpyZ+-w39mE... [12] https://lore.kernel.org/all/20221103170520.931305-5-mark.rutland@arm.com/ [13] https://lore.kernel.org/all/20230218184141.70891-1-wlukowicz01@gmail.com/
linux-morello@op-lists.linaro.org