9p: darwin: Move XATTR_SIZE_MAX->P9_XATTR_SIZE_MAX
Signed-off-by: Keno Fischer <keno@juliacomputing.com> Signed-off-by: Michael Roitzsch <reactorcontrol@icloud.com> Because XATTR_SIZE_MAX is not defined on Darwin, create a cross-platform P9_XATTR_SIZE_MAX instead. [Will Cohen: - Adjust coding style - Lower XATTR_SIZE_MAX to 64k - Add explanatory context related to XATTR_SIZE_MAX] [Fabian Franz: - Move XATTR_SIZE_MAX reference from 9p.c to P9_XATTR_SIZE_MAX in 9p.h] Signed-off-by: Will Cohen <wwcohen@gmail.com> Signed-off-by: Fabian Franz <fabianfranz.oss@gmail.com> [Will Cohen: - For P9_XATTR_MAX, ensure that Linux uses XATTR_SIZE_MAX, Darwin uses 64k, and error out for undefined hosts] Signed-off-by: Will Cohen <wwcohen@gmail.com> Message-Id: <20220227223522.91937-7-wwcohen@gmail.com> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
This commit is contained in:
parent
67a71e3b71
commit
38d7fd68b0
@ -3949,7 +3949,7 @@ static void coroutine_fn v9fs_xattrcreate(void *opaque)
|
||||
rflags |= XATTR_REPLACE;
|
||||
}
|
||||
|
||||
if (size > XATTR_SIZE_MAX) {
|
||||
if (size > P9_XATTR_SIZE_MAX) {
|
||||
err = -E2BIG;
|
||||
goto out_nofid;
|
||||
}
|
||||
|
18
hw/9pfs/9p.h
18
hw/9pfs/9p.h
@ -479,4 +479,22 @@ struct V9fsTransport {
|
||||
void (*push_and_notify)(V9fsPDU *pdu);
|
||||
};
|
||||
|
||||
#if defined(XATTR_SIZE_MAX)
|
||||
/* Linux */
|
||||
#define P9_XATTR_SIZE_MAX XATTR_SIZE_MAX
|
||||
#elif defined(CONFIG_DARWIN)
|
||||
/*
|
||||
* Darwin doesn't seem to define a maximum xattr size in its user
|
||||
* space header, so manually configure it across platforms as 64k.
|
||||
*
|
||||
* Having no limit at all can lead to QEMU crashing during large g_malloc()
|
||||
* calls. Because QEMU does not currently support macOS guests, the below
|
||||
* preliminary solution only works due to its being a reflection of the limit of
|
||||
* Linux guests.
|
||||
*/
|
||||
#define P9_XATTR_SIZE_MAX 65536
|
||||
#else
|
||||
#error Missing definition for P9_XATTR_SIZE_MAX for this host system
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user