Re: [PATCH net] ice: Fix freeing uninitialized pointers

From: Andy Shevchenko
Date: Thu Mar 21 2024 - 14:03:19 EST


On Thu, Mar 21, 2024 at 06:59:00PM +0100, Markus Elfring wrote:



> > +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
> > @@ -941,11 +941,11 @@ static u64 ice_loopback_test(struct net_device *netdev)
> > struct ice_netdev_priv *np = netdev_priv(netdev);
> > struct ice_vsi *orig_vsi = np->vsi, *test_vsi;
> > struct ice_pf *pf = orig_vsi->back;
> > + u8 *tx_frame __free(kfree) = NULL;
> > u8 broadcast[ETH_ALEN], ret = 0;
> > int num_frames, valid_frames;
> > struct ice_tx_ring *tx_ring;
> > struct ice_rx_ring *rx_ring;
> > - u8 *tx_frame __free(kfree);
> > int i;
> >
> > netdev_info(netdev, "loopback test\n");
>
> How do you think about to reduce the scope for the affected local variable instead
> with the help of a small script (like the following) for the semantic patch language?
>
> @movement@
> attribute name __free;
> @@
> -u8 *tx_frame __free(kfree);
> int i;
> ... when any
> if (ice_fltr_add_mac(test_vsi, ...))
> { ... }
> +
> +{
> +u8 *tx_frame __free(kfree) = NULL;
> if (ice_lbtest_create_frame(pf, &tx_frame, ...))
> { ... }
> ... when any
> +}
> +
> valid_frames = ice_lbtest_receive_frames(...);

I believe you don't understand what the scope of the above can be.

--
With Best Regards,
Andy Shevchenko