Le 11/12/2021 à 18:53, David Laight a écrit :
From: Tiezhu Yang
quoted
Sent: 11 December 2021 03:33
v2:
-- add copy_to_user_or_kernel() in lib/usercopy.c
-- define userbuf as bool type
Instead of having a flag to indicate whether the buffer is user or kernel,
would it be better to have two separate buffer pointers.
One for a user space buffer, the other for a kernel space buffer.
Exactly one of the buffers should always be NULL.
That way the flag is never incorrectly set.
It's a very good idea.
I was worried about the casts forcing the __user property away and back.
With that approach we will preserve the __user tags on user buffers and
enable sparse checking.
The only little drawback I see is that apparently GCC doesn't consider
the NULL value as a constant and therefore doesn't perform constant
folding on pointers. Not sure if this is a problem here.
Christophe