On Mon, Mar 26, 2018 at 2:55 PM, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > On Mon, Mar 26, 2018 at 10:01:30PM +0200, Arnd Bergmann wrote: >> I had suggested a more complete helper function at some point, >> to take care of all combinations of checking/non-checking, 32/64 >> bit, microsecond/nanosecond, and zeroing/checking the upper 32 bits >> of nanoseconds before comparing against 1 billion, but Deepa >> thought that was overkill, so I didn't continue that. > > Yeah, that sounds like a nightmare to use ;-) > >> For all I can tell, the get_timespec64() helper should almost always >> include the check, the one exception I know is utimensat() and related >> functions that may encode the special UTIME_NOW and UTIME_OMIT >> constants in the nanoseconds. > > So do you endorse the get_valid_timespec64() patch I posted up-thread? > We can't just make get_timespec64 return an errno directly because it'll > require changing all the users. I missed this thread earlier. I had leaned away from this idea before, because of the special cases which don't need it. I was also trying to keep the syntax close to copy_from_user(), which is what was there before. We could probably just change all the get_timespec64()/compat_get_timespec64() to do the check using a simple coccinelle script. I can own this. But, this would not be needed if Arnd is posting the other helper function. Arnd, let me know what you prefer here. -Deepa