Re: [PATCH v2 2/2] drm/tyr: allow userspace buffers to be mismatched
From: Alexandre Courbot
Date: Fri Oct 16 2026 - 21:37:08 EST
On Fri Oct 16, 2026 at 6:37 PM JST, Alice Ryhl wrote:
> On Thu, Oct 15, 2026 at 11:35:21AM -0700, Deborah Brouwer wrote:
>> +// If the user buffer is at least the minimum required size, then
>> +// copy as much of the kernel object as will fit into the user buffer.
>> +// Don't fail if the user buffer is smaller than the kernel object.
>> +// If the user buffer is bigger than needed, zero out the remainder.
>> +fn set_uobj<T: AsBytes>(usr_dst: u64, size: u32, min_size: usize, src_obj: &T) -> Result {
>> + if (size as usize) < min_size {
>> + return Err(EINVAL);
>
> Use `kernel::num::casts::u32_as_usize` here.
>
>> + }
>> +
>> + let mut writer = UserSlice::new(UserPtr::from_addr(usr_dst as usize), size as usize).writer();
>
> Avoid casting to usize twice.
>
> let size = kernel::num::casts::u32_as_usize(size);
Or `usize::from_safe_cast(size)` after importing `FromSafeCast` -
`u32_as_usize` is useful in const context, but for regular conversions
the `FromSafeCast` trait looks slightly better.