On Tue, 25 Aug 2026 23:15:02 +0200 Ricardo Ribalda <[email protected]> wrote:
> Hi Dave > > On Tue, 25 Aug 2026 at 23:06, Dave Hansen <[email protected]> wrote: > > > > On 8/25/26 13:02, Ricardo Ribalda wrote: > > > Recent versions of smatch preserved the address space qualifiers with > > > typeof()[1]. > > > > > > This fix has discovered an invalid casting in put_user. > > > > > > This patch fixes tens of smatch errors like the following: > > > drivers/media/usb/uvc/uvc_v4l2.c:1112:13: warning: incorrect type in > > > argument 2 (different address spaces) > > > drivers/media/usb/uvc/uvc_v4l2.c:1112:13: expected void const *from > > > drivers/media/usb/uvc/uvc_v4l2.c:1112:13: got unsigned int __user * > > > > Could we beef up the changelog here a bit, please? > > > > What _is_ the invalid casting? > > > > What is the fix? > > > > Why does it work? > > Something like this would be better? I will send a v2 if there are no > more comments. > > > Recent versions of smatch preserved the address space qualifiers with > typeof()[1]. > > This fix has discovered an invalid casting in put_user. > > put_user is using a casting with __typeof__(*(ptr)), which keeps the > qualifiers (__user), instead it should use the macro TYPEOF_UNQUAL() > that will use __typeof_unqual__ where the compiler supports it. > __typeof_unqual__ copies the type but not the qualifiers. This is a spares 'bug'. You need to fix it without changing normal compiles. There are enough put_user() calls that is will slow down compiles. David > > > This patch fixes tens of smatch errors like the following: > drivers/media/usb/uvc/uvc_v4l2.c:1112:13: warning: incorrect type in > argument 2 (different address spaces) > drivers/media/usb/uvc/uvc_v4l2.c:1112:13: expected void const *from > drivers/media/usb/uvc/uvc_v4l2.c:1112:13: got unsigned int __user * > > [1] > https://github.com/error27/smatch/commit/e53027a4e816a772403baafa83c09e4a94c1cb8f > >

