2023-11-25 16:36:40

by Subbaraya Sundeep Bhatta

[permalink] [raw]
Subject: [PATCH net] octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam

All the mailbox messages sent to AF needs to be guarded
by mutex lock. Add the missing lock in otx2_get_pauseparam
function.

Fixes: 75f36270990c ("octeontx2-pf: Support to enable/disable pause frames via ethtool")
Signed-off-by: Subbaraya Sundeep <[email protected]>
---
drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
index 9efcec5..53f6258 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
@@ -334,9 +334,12 @@ static void otx2_get_pauseparam(struct net_device *netdev,
if (is_otx2_lbkvf(pfvf->pdev))
return;

+ mutex_lock(&pfvf->mbox.lock);
req = otx2_mbox_alloc_msg_cgx_cfg_pause_frm(&pfvf->mbox);
- if (!req)
+ if (!req) {
+ mutex_unlock(&pfvf->mbox.lock);
return;
+ }

if (!otx2_sync_mbox_msg(&pfvf->mbox)) {
rsp = (struct cgx_pause_frm_cfg *)
@@ -344,6 +347,7 @@ static void otx2_get_pauseparam(struct net_device *netdev,
pause->rx_pause = rsp->rx_pause;
pause->tx_pause = rsp->tx_pause;
}
+ mutex_unlock(&pfvf->mbox.lock);
}

static int otx2_set_pauseparam(struct net_device *netdev,
--
2.7.4


2023-11-28 17:22:45

by Simon Horman

[permalink] [raw]
Subject: Re: [PATCH net] octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam

On Sat, Nov 25, 2023 at 10:05:41PM +0530, Subbaraya Sundeep wrote:
> All the mailbox messages sent to AF needs to be guarded
> by mutex lock. Add the missing lock in otx2_get_pauseparam
> function.
>
> Fixes: 75f36270990c ("octeontx2-pf: Support to enable/disable pause frames via ethtool")
> Signed-off-by: Subbaraya Sundeep <[email protected]>

Hi,

I am wondering if the call to otx2_nix_config_bp()
in otx2_dcbnl_ieee_setpfc() also needs to be protected by mbox.lock.

And although not strictly related to this patch, while looking over this, I
noticed that in otx2_init_hw_resources() it appears that &mbox->lock may be
unlocked twice in some error paths.

e.g.
/* Init Auras and pools used by NIX RQ, for free buffer ptrs */
err = otx2_rq_aura_pool_init(pf);
if (err) {
mutex_unlock(&mbox->lock);
goto err_free_nix_lf;
}
...
err_free_nix_lf:
mutex_lock(&mbox->lock);
...

...

2023-11-29 04:55:45

by Subbaraya Sundeep Bhatta

[permalink] [raw]
Subject: RE: [EXT] Re: [PATCH net] octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam

Hi Simon,

>-----Original Message-----
>From: Simon Horman <[email protected]>
>Sent: Tuesday, November 28, 2023 10:51 PM
>To: Subbaraya Sundeep Bhatta <[email protected]>
>Cc: [email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; [email protected]; Sunil
>Kovvuri Goutham <[email protected]>; Geethasowjanya Akula
><[email protected]>; Hariprasad Kelam <[email protected]>
>Subject: [EXT] Re: [PATCH net] octeontx2-pf: Add missing mutex lock in
>otx2_get_pauseparam
>
>----------------------------------------------------------------------
>On Sat, Nov 25, 2023 at 10:05:41PM +0530, Subbaraya Sundeep wrote:
>> All the mailbox messages sent to AF needs to be guarded by mutex lock.
>> Add the missing lock in otx2_get_pauseparam function.
>>
>> Fixes: 75f36270990c ("octeontx2-pf: Support to enable/disable pause
>> frames via ethtool")
>> Signed-off-by: Subbaraya Sundeep <[email protected]>
>
>Hi,
>
>I am wondering if the call to otx2_nix_config_bp() in otx2_dcbnl_ieee_setpfc()
>also needs to be protected by mbox.lock.
>
Correct. I will add lock around it and send v2 of this patch.

>And although not strictly related to this patch, while looking over this, I
>noticed that in otx2_init_hw_resources() it appears that &mbox->lock may be
>unlocked twice in some error paths.
>
>e.g.
> /* Init Auras and pools used by NIX RQ, for free buffer ptrs */
> err = otx2_rq_aura_pool_init(pf);
> if (err) {
> mutex_unlock(&mbox->lock);
> goto err_free_nix_lf;
> }
> ...
>err_free_nix_lf:
> mutex_lock(&mbox->lock);
> ...
>
>...
Will fix it and send it as another patch.

Thanks,
Sundeep