net: ethernet: adi: adin1110: Fix some error handling path in adin1110_read_fifo()

[ Upstream commit 83211ae1640516accae645de82f5a0a142676897 ]

If 'frame_size' is too small or if 'round_len' is an error code, it is
likely that an error code should be returned to the caller.

Actually, 'ret' is likely to be 0, so if one of these sanity checks fails,
'success' is returned.

Return -EINVAL instead.

Fixes: bc93e19d08 ("net: ethernet: adi: Add ADIN1110 support")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://patch.msgid.link/8ff73b40f50d8fa994a454911b66adebce8da266.1727981562.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Christophe JAILLET
2024-10-03 20:53:15 +02:00
committed by Greg Kroah-Hartman
parent 2a2d6b24f0
commit e4340fef88

View File

@@ -318,11 +318,11 @@ static int adin1110_read_fifo(struct adin1110_port_priv *port_priv)
* from the ADIN1110 frame header. * from the ADIN1110 frame header.
*/ */
if (frame_size < ADIN1110_FRAME_HEADER_LEN + ADIN1110_FEC_LEN) if (frame_size < ADIN1110_FRAME_HEADER_LEN + ADIN1110_FEC_LEN)
return ret; return -EINVAL;
round_len = adin1110_round_len(frame_size); round_len = adin1110_round_len(frame_size);
if (round_len < 0) if (round_len < 0)
return ret; return -EINVAL;
frame_size_no_fcs = frame_size - ADIN1110_FRAME_HEADER_LEN - ADIN1110_FEC_LEN; frame_size_no_fcs = frame_size - ADIN1110_FRAME_HEADER_LEN - ADIN1110_FEC_LEN;
memset(priv->data, 0, ADIN1110_RD_HEADER_LEN); memset(priv->data, 0, ADIN1110_RD_HEADER_LEN);