DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup
@ 2018-05-08 12:20 Raslan Darawsheh
  2018-05-08 12:24 ` Matan Azrad
  2018-05-09 11:49 ` Gaëtan Rivet
  0 siblings, 2 replies; 4+ messages in thread
From: Raslan Darawsheh @ 2018-05-08 12:20 UTC (permalink / raw)
  To: gaetan.rivet; +Cc: dev, matan, thomas, ophirmu, rasland, stable

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: stable@dpdk.org

Signed-off-by: Raslan Darawsheh <rasland@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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup
  2018-05-08 12:20 [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup Raslan Darawsheh
@ 2018-05-08 12:24 ` Matan Azrad
  2018-05-09 11:49 ` Gaëtan Rivet
  1 sibling, 0 replies; 4+ messages in thread
From: Matan Azrad @ 2018-05-08 12:24 UTC (permalink / raw)
  To: Raslan Darawsheh, gaetan.rivet; +Cc: dev, Thomas Monjalon, Ophir Munk, stable


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: stable@dpdk.org
> 
> Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Matan Azrad <matan@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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup
  2018-05-08 12:20 [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup Raslan Darawsheh
  2018-05-08 12:24 ` Matan Azrad
@ 2018-05-09 11:49 ` Gaëtan Rivet
  1 sibling, 0 replies; 4+ messages in thread
From: Gaëtan Rivet @ 2018-05-09 11:49 UTC (permalink / raw)
  To: Raslan Darawsheh; +Cc: dev, matan, thomas, ophirmu, stable

Hello Raslan,

On Tue, May 08, 2018 at 03:20:13PM +0300, Raslan Darawsheh wrote:
> 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: stable@dpdk.org
> 
> Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
> 
> ---
> v2 changes:
>  Reword the commit log.
> 
> v3 changes:
>  Reword the commit log.

Sorry I replied to the v3 instead, my comment on the v2 still stands.
The v2 was not superseded in patchwork and the commit title changed,
making me think it was two different fixes.

> ---
> ---
>  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
> 

-- 
Gaëtan Rivet
6WIND

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup
@ 2018-05-09 15:53 Raslan Darawsheh
  0 siblings, 0 replies; 4+ messages in thread
From: Raslan Darawsheh @ 2018-05-09 15:53 UTC (permalink / raw)
  To: gaetan.rivet; +Cc: dev, matan, thomas, ophirmu, rasland, stable

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: ebea83f8 ("net/failsafe: add plug-in support")
Cc: stable@dpdk.org

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>

---
v2 changes:
 Reword the commit log.

v3 changes:
 Reword the commit log.

v4 changes:
 Fix the fixes commit sha and title.
---
---
 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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-05-09 15:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-08 12:20 [dpdk-dev] [PATCH v3] net/failsafe: fix probe cleanup Raslan Darawsheh
2018-05-08 12:24 ` Matan Azrad
2018-05-09 11:49 ` Gaëtan Rivet
2018-05-09 15:53 Raslan Darawsheh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).