[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <287fc833-a643-40d3-b663-72446e1344f5@redhat.com>
Date: Tue, 24 Jun 2025 11:48:31 +0200
From: Paolo Abeni <pabeni@...hat.com>
To: Thomas Gleixner <tglx@...utronix.de>, LKML <linux-kernel@...r.kernel.org>
Cc: Richard Cochran <richardcochran@...il.com>, netdev@...r.kernel.org
Subject: Re: [patch 13/13] ptp: Convert ptp_open/read() to __free()
On 6/20/25 3:24 PM, Thomas Gleixner wrote:
> scoped_guard(spinlock_irq, &queue->lock) {
> - size_t qcnt = queue_cnt(queue);
> -
> - if (cnt > qcnt)
> - cnt = qcnt;
> + size_t qcnt = min((size_t)queue_cnt(queue), cnt / sizeof(*event));
>
> - for (size_t i = 0; i < cnt; i++) {
> + for (size_t i = 0; i < qcnt; i++) {
> event[i] = queue->buf[queue->head];
> /* Paired with READ_ONCE() in queue_cnt() */
> WRITE_ONCE(queue->head, (queue->head + 1) % PTP_MAX_TIMESTAMPS);
> }
> }
>
> - cnt = cnt * sizeof(struct ptp_extts_event);
> -
> - result = cnt;
> - if (copy_to_user(buf, event, cnt)) {
> - result = -EFAULT;
> - goto free_event;
> - }
> -
> -free_event:
> - kfree(event);
> -exit:
> - return result;
> + return copy_to_user(buf, event, cnt) ? -EFAULT : cnt;
> }
I'm likely low on coffee, but it looks like the above code is now
returning the original amount of provided events, while the existing
code returns the value bounded to the number of queue events.
Cheers,
Paolo
Powered by blists - more mailing lists