userfaultfd: use 1ULL to build ioctl masks

There is no need to use the Linux-internal __u64 type, 1ULL is
guaranteed to be wide enough.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/r/20240117160313.175609-1-pbonzini@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-01-17 17:03:13 +01:00 committed by Peter Xu
parent 7a1dc45af5
commit 73b4987858
3 changed files with 10 additions and 12 deletions

View File

@ -102,11 +102,9 @@ void postcopy_thread_create(MigrationIncomingState *mis,
* are target OS specific. * are target OS specific.
*/ */
#if defined(__linux__) #if defined(__linux__)
#include <poll.h> #include <poll.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <asm/types.h> /* for __u64 */
#endif #endif
#if defined(__linux__) && defined(__NR_userfaultfd) && defined(CONFIG_EVENTFD) #if defined(__linux__) && defined(__NR_userfaultfd) && defined(CONFIG_EVENTFD)
@ -272,8 +270,8 @@ static bool request_ufd_features(int ufd, uint64_t features)
return false; return false;
} }
ioctl_mask = (__u64)1 << _UFFDIO_REGISTER | ioctl_mask = 1ULL << _UFFDIO_REGISTER |
(__u64)1 << _UFFDIO_UNREGISTER; 1ULL << _UFFDIO_UNREGISTER;
if ((api_struct.ioctls & ioctl_mask) != ioctl_mask) { if ((api_struct.ioctls & ioctl_mask) != ioctl_mask) {
error_report("Missing userfault features: %" PRIx64, error_report("Missing userfault features: %" PRIx64,
(uint64_t)(~api_struct.ioctls & ioctl_mask)); (uint64_t)(~api_struct.ioctls & ioctl_mask));
@ -462,9 +460,9 @@ bool postcopy_ram_supported_by_host(MigrationIncomingState *mis, Error **errp)
goto out; goto out;
} }
feature_mask = (__u64)1 << _UFFDIO_WAKE | feature_mask = 1ULL << _UFFDIO_WAKE |
(__u64)1 << _UFFDIO_COPY | 1ULL << _UFFDIO_COPY |
(__u64)1 << _UFFDIO_ZEROPAGE; 1ULL << _UFFDIO_ZEROPAGE;
if ((reg_struct.ioctls & feature_mask) != feature_mask) { if ((reg_struct.ioctls & feature_mask) != feature_mask) {
error_setg(errp, "Missing userfault map features: %" PRIx64, error_setg(errp, "Missing userfault map features: %" PRIx64,
(uint64_t)(~reg_struct.ioctls & feature_mask)); (uint64_t)(~reg_struct.ioctls & feature_mask));
@ -733,11 +731,11 @@ static int ram_block_enable_notify(RAMBlock *rb, void *opaque)
error_report("%s userfault register: %s", __func__, strerror(errno)); error_report("%s userfault register: %s", __func__, strerror(errno));
return -1; return -1;
} }
if (!(reg_struct.ioctls & ((__u64)1 << _UFFDIO_COPY))) { if (!(reg_struct.ioctls & (1ULL << _UFFDIO_COPY))) {
error_report("%s userfault: Region doesn't support COPY", __func__); error_report("%s userfault: Region doesn't support COPY", __func__);
return -1; return -1;
} }
if (reg_struct.ioctls & ((__u64)1 << _UFFDIO_ZEROPAGE)) { if (reg_struct.ioctls & (1ULL << _UFFDIO_ZEROPAGE)) {
qemu_ram_set_uf_zeroable(rb); qemu_ram_set_uf_zeroable(rb);
} }

View File

@ -684,7 +684,7 @@ generate_faults(VuDev *dev) {
dev->postcopy_ufd, strerror(errno)); dev->postcopy_ufd, strerror(errno));
return false; return false;
} }
if (!(reg_struct.ioctls & ((__u64)1 << _UFFDIO_COPY))) { if (!(reg_struct.ioctls & (1ULL << _UFFDIO_COPY))) {
vu_panic(dev, "%s Region (%d) doesn't support COPY", vu_panic(dev, "%s Region (%d) doesn't support COPY",
__func__, i); __func__, i);
return false; return false;

View File

@ -104,8 +104,8 @@ static bool ufd_version_check(void)
} }
uffd_feature_thread_id = api_struct.features & UFFD_FEATURE_THREAD_ID; uffd_feature_thread_id = api_struct.features & UFFD_FEATURE_THREAD_ID;
ioctl_mask = (__u64)1 << _UFFDIO_REGISTER | ioctl_mask = 1ULL << _UFFDIO_REGISTER |
(__u64)1 << _UFFDIO_UNREGISTER; 1ULL << _UFFDIO_UNREGISTER;
if ((api_struct.ioctls & ioctl_mask) != ioctl_mask) { if ((api_struct.ioctls & ioctl_mask) != ioctl_mask) {
g_test_message("Skipping test: Missing userfault feature"); g_test_message("Skipping test: Missing userfault feature");
return false; return false;