On 4/15/24 12:10 PM, Kevin Brodsky wrote:
On 15/04/2024 12:31, Carsten Haitzler wrote:
On 4/15/24 9:06 AM, Kevin Brodsky wrote:
On 12/04/2024 18:06, carsten.haitzler@foss.arm.com wrote:
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h index 128d09138ceb..3a426e7ed775 100644 --- a/include/uapi/drm/drm_mode.h +++ b/include/uapi/drm/drm_mode.h @@ -1135,7 +1135,7 @@ struct drm_mode_atomic { __u64 props_ptr; __u64 prop_values_ptr; __u64 reserved; - __u64 user_data; + __kernel_uintptr_t user_data;
I think this change requires compat handling too (in drm_mode_atomic_ioctl()). In fact it looks a lot like the *_ptr members should also be changed like the other drm_mode_* structs in patch 3. Or maybe the intention is not to change it at all considering user_data is reverted to __u64 in patch 3? In which case it doesn't really make sense to change create_vblank_event() either.
Ahh never mind - I undid that in patch 2 - well did it in patch 1, undid in patch 2... but yeah - this needs doing. I seem to have only partly begun this but nothing used/tested it so didn't finish it (didn't notice it wasn't finished).
Yeah no worries, it's understood that this series is not comprehensive.
oh ha - i see why...
commit 88f6b9b33e0fb1c0d7af2c7b1f5a1c19e2bc8d4c Author: Kevin Brodsky kevin.brodsky@arm.com Date: Thu Feb 9 15:43:44 2023 +0000
drm: Explicitly create user pointers
that's why i didn't see it fail and thus didn't dig in more... as it was "partially fixed" and by luck happened to not fall over... yeah - this needs fixing properly as per your commit log:
Various DRM uapi structs represent user pointers as __u64, which is not PCuABI-friendly. For now let's create a user pointer manually using uaddr_to_user_ptr(), but eventually the structs should be modified to represent the user pointer fields as __kernel_uintptr_t instead, allowing userspace to provide a whole user pointer instead of just an address.