diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index f9b62e9a0..a3ff36a00 100755 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -8775,22 +8775,15 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx, return 0; if (p->flags & IORING_SETUP_SQ_AFF) { - cpumask_var_t allowed_mask; + struct cpumask allowed_mask; int cpu = p->sq_thread_cpu; ret = -EINVAL; if (cpu >= nr_cpu_ids || !cpu_online(cpu)) goto err_sqpoll; - ret = -ENOMEM; - if (!alloc_cpumask_var(&allowed_mask, GFP_KERNEL)) + cpuset_cpus_allowed(current, &allowed_mask); + if (!cpumask_test_cpu(cpu, &allowed_mask)) goto err_sqpoll; - ret = -EINVAL; - cpuset_cpus_allowed(current, allowed_mask); - if (!cpumask_test_cpu(cpu, allowed_mask)) { - free_cpumask_var(allowed_mask); - goto err_sqpoll; - } - free_cpumask_var(allowed_mask); sqd->sq_cpu = cpu; } else { sqd->sq_cpu = -1;