Re: [PATCH v1 1/6] fs/readdir: Fix filldir() and filldir64() use of user_access_begin()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Le 22/01/2020 à 18:41, Al Viro a écrit :
On Wed, Jan 22, 2020 at 08:13:12AM -0800, Linus Torvalds wrote:
On Wed, Jan 22, 2020 at 5:00 AM Christophe Leroy
<christophe.leroy@xxxxxx> wrote:

Modify filldir() and filldir64() to request the real area they need
to get access to.

Not like this.

This makes the situation for architectures like x86 much worse, since
you now use "put_user()" for the previous dirent filling. Which does
that expensive user access setup/teardown twice again.

So either you need to cover both the dirent's with one call, or you
just need to cover the whole (original) user buffer passed in. But not
this unholy mixing of both unsafe_put_user() and regular put_user().

I would suggest simply covering the range from dirent->d_off to
buf->current_dir->d_name[namelen]; they are going to be close to
each other and we need those addresses anyway...


In v2, I'm covering from the beginning of parent dirent to the end of current dirent.

Christophe



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux