On Wed, Nov 26, 2025 at 01:35:32PM -0600, Daniel Jurgens wrote:
> @@ -5812,6 +6019,17 @@ static int virtnet_restore_up(struct virtio_device 
> *vdev)
>                       return err;
>       }
>  
> +     /* Initialize flow filters. Not supported is an acceptable and common
> +      * return code
> +      */
> +     rtnl_lock();
> +     err = virtnet_ff_init(&vi->ff, vi->vdev);
> +     if (err && err != -EOPNOTSUPP) {
> +             rtnl_unlock();
> +             return err;

does not look like this rolls back previous
initialization on error (probe does).


> +     }
> +     rtnl_unlock();
> +
>       netif_tx_lock_bh(vi->dev);
>       netif_device_attach(vi->dev);
>       netif_tx_unlock_bh(vi->dev);
> @@ -7145,6 +7363,15 @@ static int virtnet_probe(struct virtio_device *vdev)
>       }
>       vi->guest_offloads_capable = vi->guest_offloads;
>  
> +     /* Initialize flow filters. Not supported is an acceptable and common
> +      * return code
> +      */
> +     err = virtnet_ff_init(&vi->ff, vi->vdev);
> +     if (err && err != -EOPNOTSUPP) {
> +             rtnl_unlock();
> +             goto free_unregister_netdev;
> +     }
> +
>       rtnl_unlock();
>  
>       err = virtnet_cpu_notif_add(vi);
> @@ -7160,6 +7387,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>  
>  free_unregister_netdev:
>       unregister_netdev(dev);
> +     virtnet_ff_cleanup(&vi->ff);
>  free_failover:
>       net_failover_destroy(vi->failover);
>  free_vqs:
> @@ -7209,6 +7437,7 @@ static void virtnet_remove(struct virtio_device *vdev)
>       virtnet_free_irq_moder(vi);
>  
>       unregister_netdev(vi->dev);
> +     virtnet_ff_cleanup(&vi->ff);
>  
>       net_failover_destroy(vi->failover);
>  


Reply via email to