]> 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)
commit54a9d796b59a282d5108d0bb8677133b8a9ffeab
tree22797fff6fee92d376f06de6462533a117a1d68b
parent88246e4961493242cd5d1e892ed15255c75d5ac8
parent2ec5a2ba96d195f6dbdeeb85e82c832d7ec3f2a7
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()