[dpdk-dev,2/2] net/tap: fix unregistering callback with invalid fd

Message ID 20170918184735.43968-2-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ferruh Yigit Sept. 18, 2017, 6:47 p.m. UTC
  From: Vipin Varghese <vipin.varghese@intel.com>

tap_intr_handle_set() called by tap_dev_start(), and if LSC is disabled
(dev_conf.intr_conf.lsc == 0), it tries to unregister interrupt
callback without checking the interrupt file descriptor.

Fixes: c0bddd3a057f ("net/tap: add link status notification")
Cc: stable@dpdk.org

Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
---
 drivers/net/tap/rte_eth_tap.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

Pascal Mazon Sept. 19, 2017, 12:46 p.m. UTC | #1
Looks good.

Best regards,
Pascal

Acked-by: Pascal Mazon <pascal.mazon@6wind.com>

On 18/09/2017 20:47, Ferruh Yigit wrote:
> From: Vipin Varghese <vipin.varghese@intel.com>
>
> tap_intr_handle_set() called by tap_dev_start(), and if LSC is disabled
> (dev_conf.intr_conf.lsc == 0), it tries to unregister interrupt
> callback without checking the interrupt file descriptor.
>
> Fixes: c0bddd3a057f ("net/tap: add link status notification")
> Cc: stable@dpdk.org
>
> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
> ---
>  drivers/net/tap/rte_eth_tap.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index 00dad167f..fcfd4215e 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -1098,10 +1098,11 @@ tap_intr_handle_set(struct rte_eth_dev *dev, int set)
>  
>  	/* In any case, disable interrupt if the conf is no longer there. */
>  	if (!dev->data->dev_conf.intr_conf.lsc) {
> -		if (pmd->intr_handle.fd != -1)
> +		if (pmd->intr_handle.fd != -1) {
>  			nl_final(pmd->intr_handle.fd);
> -		rte_intr_callback_unregister(
> -			&pmd->intr_handle, tap_dev_intr_handler, dev);
> +			rte_intr_callback_unregister(&pmd->intr_handle,
> +				tap_dev_intr_handler, dev);
> +		}
>  		return 0;
>  	}
>  	if (set) {
  
Ferruh Yigit Sept. 20, 2017, 4:05 p.m. UTC | #2
On 9/19/2017 1:46 PM, Pascal Mazon wrote:
<...>
> On 18/09/2017 20:47, Ferruh Yigit wrote:
>> From: Vipin Varghese <vipin.varghese@intel.com>
>>
>> tap_intr_handle_set() called by tap_dev_start(), and if LSC is disabled
>> (dev_conf.intr_conf.lsc == 0), it tries to unregister interrupt
>> callback without checking the interrupt file descriptor.
>>
>> Fixes: c0bddd3a057f ("net/tap: add link status notification")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>

> Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 00dad167f..fcfd4215e 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -1098,10 +1098,11 @@  tap_intr_handle_set(struct rte_eth_dev *dev, int set)
 
 	/* In any case, disable interrupt if the conf is no longer there. */
 	if (!dev->data->dev_conf.intr_conf.lsc) {
-		if (pmd->intr_handle.fd != -1)
+		if (pmd->intr_handle.fd != -1) {
 			nl_final(pmd->intr_handle.fd);
-		rte_intr_callback_unregister(
-			&pmd->intr_handle, tap_dev_intr_handler, dev);
+			rte_intr_callback_unregister(&pmd->intr_handle,
+				tap_dev_intr_handler, dev);
+		}
 		return 0;
 	}
 	if (set) {