Re: [PATCH v2 2/4] ptp: vmclock: support device notifications

From: David Woodhouse
Date: Tue Dec 02 2025 - 18:45:49 EST


On Tue, 2025-12-02 at 20:11 +0000, Chalios, Babis wrote:
>
> @@ -402,8 +413,16 @@ static ssize_t vmclock_miscdev_read(struct file *fp, char __user *buf,
>  
>   /* Pairs with hypervisor wmb */
>   virt_rmb();
> - if (seq == le32_to_cpu(st->clk->seq_count))
> - break;
> + if (seq == le32_to_cpu(st->clk->seq_count)) {
> + /*
> + * Either we updated fst->seq to seq (the latest version we observed)
> + * or someone else did (old_seq == seq), so we can break.
> + */
> + if (atomic_try_cmpxchg(&fst->seq, &old_seq, seq) ||
> +     old_seq == seq) {
> + break;
> + }
> + }
>  
>   if (ktime_after(ktime_get(), deadline))
>   return -ETIMEDOUT;

I'm slightly confused that that compiles cleanly (as it does here).
Isn't the second argument to atomic_try_cmpxchg() an (int *), and isn't
old_seq a uint32_t? It's doing the right thing; I just didn't think it
would do the right thing *quietly*... ?

Attachment: smime.p7s
Description: S/MIME cryptographic signature