On 4/9/24 9:22 AM, Jens Axboe wrote: > @@ -312,8 +313,8 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count, > ctx->ticks = 0; > } > spin_unlock_irq(&ctx->wqh.lock); > - if (ticks) > - res = put_user(ticks, (u64 __user *) buf) ? -EFAULT: sizeof(ticks); > + if (ticks && !copy_to_iter_full(&ticks, sizeof(ticks), to)) > + res = -EFAULT; > return res; > } Dumb thinko here, as that should be: if (ticks) { res = copy_to_iter(&ticks, sizeof(ticks), to); if (!res) res = -EFAULT; } I've updated my branch, just a heads-up. Odd how it passing testing, guess I got stack lucky... -- Jens Axboe