9p: add locking to V9fsDir
commit7cde47d4a89d5efefcc805788bc29133f4f3c5c7
authorGreg Kurz <gkurz@linux.vnet.ibm.com>
Mon, 6 Jun 2016 09:52:34 +0000 (6 11:52 +0200)
committerGreg Kurz <gkurz@linux.vnet.ibm.com>
Mon, 6 Jun 2016 09:52:34 +0000 (6 11:52 +0200)
tree56025012a1648ccced4c5d1ea5f06b5536e245c6
parentf314ea4e30a1ef87bf8845da952c6dd0bac20b95
9p: add locking to V9fsDir

If several threads concurrently call readdir() with the same directory
stream pointer, it is possible that they all get a pointer to the same
dirent structure, whose content is overwritten each time readdir() is
called.

We must thus serialize accesses to the dirent structure.

This may be achieved with a mutex like below:

lock_mutex();

readdir();

// work with the dirent

unlock_mutex();

This patch adds all the locking, to prepare the switch to readdir().

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
hw/9pfs/9p.c
hw/9pfs/9p.h