]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'readdir' (readdir speedup and sanity checking)
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 5 Oct 2019 19:03:27 +0000 (12:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 5 Oct 2019 19:03:27 +0000 (12:03 -0700)
commitd6ff075f9bb7ee7ed900c57984a1903defe3e59e
tree22797fff6fee92d376f06de6462533a117a1d68b
parent04155ddda6402a7256109cda9ed81a386aa7756d
parent77baa1b7958387b02567761e696414d665a26b3e
Merge branch 'readdir' (readdir speedup and sanity checking)

This makes getdents() and getdents64() do sanity checking on the
pathname that it gives to user space.  And to mitigate the performance
impact of that, it first cleans up the way it does the user copying, so
that the code avoids doing the SMAP/PAN updates between each part of the
dirent structure write.

I really wanted to do this during the merge window, but didn't have
time.  The conversion of filldir to unsafe_put_user() is something I've
had around for years now in a private branch, but the extra pathname
checking finally made me clean it up to the point where it is mergable.

It's worth noting that the filename validity checking really should be a
bit smarter: it would be much better to delay the error reporting until
the end of the readdir, so that non-corrupted filenames are still
returned.  But that involves bigger changes, so let's see if anybody
actually hits the corrupt directory entry case before worrying about it
further.

* branch 'readdir':
  Make filldir[64]() verify the directory entry filename is valid
  Convert filldir[64]() from __put_user() to unsafe_put_user()