X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;ds=sidebyside;f=util%2Fmemfd.c;h=4a3c07e0bee6ddcf168553f9c96005bdb11e42c5;hb=510eecbc86e1aa93c17e9e0a3acced366b0258e1;hp=d74ce4d793d019d5b8a335a9f535b085114c4171;hpb=92db922f66cde45bb216c36eb43b762429c96a74;p=mirror_qemu.git diff --git a/util/memfd.c b/util/memfd.c index d74ce4d793..4a3c07e0be 100644 --- a/util/memfd.c +++ b/util/memfd.c @@ -35,11 +35,12 @@ #include #include -static int memfd_create(const char *name, unsigned int flags) +int memfd_create(const char *name, unsigned int flags) { #ifdef __NR_memfd_create return syscall(__NR_memfd_create, name, flags); #else + errno = ENOSYS; return -1; #endif } @@ -70,14 +71,18 @@ int qemu_memfd_create(const char *name, size_t size, bool hugetlb, } mfd = memfd_create(name, flags); if (mfd < 0) { + error_setg_errno(errp, errno, + "failed to create memfd with flags 0x%x", flags); goto err; } if (ftruncate(mfd, size) == -1) { + error_setg_errno(errp, errno, "failed to resize memfd to %zu", size); goto err; } if (seals && fcntl(mfd, F_ADD_SEALS, seals) == -1) { + error_setg_errno(errp, errno, "failed to add seals 0x%x", seals); goto err; } @@ -87,8 +92,9 @@ err: if (mfd >= 0) { close(mfd); } +#else + error_setg_errno(errp, ENOSYS, "failed to create memfd"); #endif - error_setg_errno(errp, errno, "failed to create memfd"); return -1; }