HomeFreeBSD

Replace Linuxulator implementation of readdir(), getdents() and

Description

Replace Linuxulator implementation of readdir(), getdents() and
getdents64() with wrapper over kern_getdirentries().

The patch was originally written by emaste@ and then adapted by trasz@
and me.

Note:

  1. I divided linux_getdents() and linux_readdir() as in case when the

getdents() called with count = 1 (readdir() case) it can overwrite
user stack (by writing to user buffer pointer more than 1 byte).

  1. Linux returns EINVAL in case when user supplied buffer is not enough

to contain fetched dirent.

  1. Linux returns ENOTDIR in case when fd points to not a directory.

Reviewed by: trasz@
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D2210

Details

Provenance
dchaginAuthored on
Differential Revision
D2210: Linux getdents/getdents64 rewrite.
Parents
rS313739: Directly call m_gethdr() instead of m_getm2() for BHS.
Branches
Unknown
Tags
Unknown