net/ena: fix deadlock in RSS reta update
Checks
Commit Message
Add missing lock release in case of internal failure.
Fixes: e3595539e0e0 ("net/ena: proxy AQ calls to primary process")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
drivers/net/ena/ena_rss.c | 1 +
1 file changed, 1 insertion(+)
Comments
On 1/5/2023 1:57 PM, David Marchand wrote:
> Add missing lock release in case of internal failure.
>
> Fixes: e3595539e0e0 ("net/ena: proxy AQ calls to primary process")
> Cc: stable@dpdk.org
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> drivers/net/ena/ena_rss.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/ena/ena_rss.c b/drivers/net/ena/ena_rss.c
> index b682d01c20..d0ba9d5c0a 100644
> --- a/drivers/net/ena/ena_rss.c
> +++ b/drivers/net/ena/ena_rss.c
> @@ -105,6 +105,7 @@ int ena_rss_reta_update(struct rte_eth_dev *dev,
> if (unlikely(rc != 0)) {
> PMD_DRV_LOG(ERR,
> "Cannot fill indirection table\n");
> + rte_spinlock_unlock(&adapter->admin_lock);
> return rc;
> }
> }
Acked-by: Fan Zhang <fanzhang.oss@gmail.com>
On 1/5/2023 2:05 PM, Zhang, Fan wrote:
>
> On 1/5/2023 1:57 PM, David Marchand wrote:
>> Add missing lock release in case of internal failure.
>>
>> Fixes: e3595539e0e0 ("net/ena: proxy AQ calls to primary process")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>> ---
>> drivers/net/ena/ena_rss.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/ena/ena_rss.c b/drivers/net/ena/ena_rss.c
>> index b682d01c20..d0ba9d5c0a 100644
>> --- a/drivers/net/ena/ena_rss.c
>> +++ b/drivers/net/ena/ena_rss.c
>> @@ -105,6 +105,7 @@ int ena_rss_reta_update(struct rte_eth_dev *dev,
>> if (unlikely(rc != 0)) {
>> PMD_DRV_LOG(ERR,
>> "Cannot fill indirection table\n");
>> + rte_spinlock_unlock(&adapter->admin_lock);
>> return rc;
>> }
>> }
> Acked-by: Fan Zhang <fanzhang.oss@gmail.com>
Applied to dpdk-next-net/main, thanks.
@@ -105,6 +105,7 @@ int ena_rss_reta_update(struct rte_eth_dev *dev,
if (unlikely(rc != 0)) {
PMD_DRV_LOG(ERR,
"Cannot fill indirection table\n");
+ rte_spinlock_unlock(&adapter->admin_lock);
return rc;
}
}