Le 11/12/2021 à 18:53, David Laight a écrit : > From: Tiezhu Yang >> 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