]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
ixgbe: Fix possible skb NULL pointer dereference
authorPiotr Kwapulinski <piotr.kwapulinski@intel.com>
Fri, 31 Jan 2025 12:14:50 +0000 (13:14 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 11 Feb 2025 17:13:11 +0000 (09:13 -0800)
The commit c824125cbb18 ("ixgbe: Fix passing 0 to ERR_PTR in
ixgbe_run_xdp()") stopped utilizing the ERR-like macros for xdp status
encoding. Propagate this logic to the ixgbe_put_rx_buffer().

The commit also relaxed the skb NULL pointer check - caught by Smatch.
Restore this check.

Fixes: c824125cbb18 ("ixgbe: Fix passing 0 to ERR_PTR in ixgbe_run_xdp()")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/intel-wired-lan/2c7d6c31-192a-4047-bd90-9566d0e14cc0@stanley.mountain/
Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Signed-off-by: Piotr Kwapulinski <piotr.kwapulinski@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Saritha Sanigani <sarithax.sanigani@intel.com> (A Contingent Worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

index 7236f20c9a309d14a11fa8ddfe48c5f67f39a9b8..467f81239e12f9fa7a007db544a5917d08dca92e 100644 (file)
@@ -2105,7 +2105,7 @@ static void ixgbe_put_rx_buffer(struct ixgbe_ring *rx_ring,
                /* hand second half of page back to the ring */
                ixgbe_reuse_rx_page(rx_ring, rx_buffer);
        } else {
-               if (!IS_ERR(skb) && IXGBE_CB(skb)->dma == rx_buffer->dma) {
+               if (skb && IXGBE_CB(skb)->dma == rx_buffer->dma) {
                        /* the page has been released from the ring */
                        IXGBE_CB(skb)->page_released = true;
                } else {