From: Raslan Darawshehת Tuesday, May 8, 2018 3:20 PM
> The hot-plug alarm mechanism is responsible to practically execute both plug
> in and out operations. It periodically tries to detect missed sub-devices to 
> be
> reconfigured and clean the resources of the removed sub-devices.
> 
> The hot-plug alarm is started by the failsafe probe function, and it's wrongly
> not stopped if failsafe instance got an error. for example when starting 
> failsafe
> with a MAC option, and giving it an invalid MAC address this will lead to a 
> NULL
> pointer for the dev private field. Then when the hotplug alarm is called it 
> will
> try to access this pointer, which will lead to a segmentation fault.
> 
> Uninstall the hot-plug alarm in case of error in probe function.
> 
> Fixes: a46f8d58 ("net/failsafe: add fail-safe PMD")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Raslan Darawsheh <rasl...@mellanox.com>
Acked-by: Matan Azrad <ma...@mellanox.com>
> 
> ---
> v2 changes:
>  Reword the commit log.
> 
> v3 changes:
>  Reword the commit log.
> ---
> ---
>  drivers/net/failsafe/failsafe.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/failsafe/failsafe.c 
> b/drivers/net/failsafe/failsafe.c index
> 5e7a8ba..3a747c2 100644
> --- a/drivers/net/failsafe/failsafe.c
> +++ b/drivers/net/failsafe/failsafe.c
> @@ -226,7 +226,7 @@ fs_eth_dev_create(struct rte_vdev_device *vdev)
>                                                              mac);
>                       if (ret) {
>                               ERROR("Failed to set default MAC address");
> -                             goto free_args;
> +                             goto cancel_alarm;
>                       }
>               }
>       } else {
> @@ -260,6 +260,8 @@ fs_eth_dev_create(struct rte_vdev_device *vdev)
>               .type = RTE_INTR_HANDLE_EXT,
>       };
>       return 0;
> +cancel_alarm:
> +     failsafe_hotplug_alarm_cancel(dev);
>  free_args:
>       failsafe_args_free(dev);
>  free_subs:
> --
> 2.7.4

Reply via email to