On 04/24/2014 07:21 AM, Stefan Hajnoczi wrote:

>> +static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)
>> +{
>> +    struct dirent *entry;
>> +    DIR *dir;
>> +
>> +    o->nchildren = 0;
>> +    dir = opendir(o->path);
>> +    if (!dir) {
>> +        return;
>> +    }
>> +    while ((entry = readdir(dir)) != NULL) {
> 
> Please use the reentrant readdir_r() so we don't have to worry later on
> when removing the QEMU global mutex.

readdir_r() is absolute trash.  There is no safe way to know how large
to size the buffer.  POSIX is considering withdrawing it as useless, on
the grounds that readdir() is already thread-safe insofar as no two
threads share the same DIR*.

http://austingroupbugs.net/view.php?id=696

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to