Re: [PATCH] staging: axis-fifo: fix maximum TX packet length check
From: Greg KH
Date: Sun Aug 17 2025 - 07:12:38 EST
On Sat, Aug 02, 2025 at 11:59:43PM +0300, Ovidiu Panait wrote:
> Since commit 2ca34b508774 ("staging: axis-fifo: Correct handling of
> tx_fifo_depth for size validation"), write() operations with packets
> larger than 'tx_fifo_depth - 4' words are no longer rejected with -EINVAL.
>
> Fortunately, the packets are not actually getting transmitted to hardware,
> otherwise they would be raising a 'Transmit Packet Overrun Error'
> interrupt, which requires a reset of the TX circuit to recover from.
>
> Instead, the request times out inside wait_event_interruptible_timeout()
> and always returns -EAGAIN, since the wake up condition can never be true
> for these packets. But still, they unnecessarily block other tasks from
> writing to the FIFO and the EAGAIN return code signals userspace to retry
> the write() call, even though it will always fail and time out.
>
> According to the AXI4-Stream FIFO reference manual (PG080), the maximum
> valid packet length is 'tx_fifo_depth - 4' words, so attempting to send
> larger packets is invalid and should not be happening in the first place:
>
> > The maximum packet that can be transmitted is limited by the size of
> > the FIFO, which is (C_TX_FIFO_DEPTH–4)*(data interface width/8) bytes.
>
> Therefore, bring back the old behavior and outright reject packets larger
> than 'tx_fifo_depth - 4' with -EINVAL. Add a comment to explain why the
> check is necessary. The dev_err() message was removed to avoid cluttering
> the dmesg log if an invalid packet is received from userspace.
>
> Fixes: 2ca34b508774 ("staging: axis-fifo: Correct handling of tx_fifo_depth for size validation")
> Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@xxxxxxxxx>
Any specific reason you didn't cc: the staging list? Or add cc: stable
to this commit?
thanks,
greg k-h