* [PATCH net 0/2] bnxt_en: Bug fixes
@ 2023-04-17 6:58 Michael Chan
2023-04-17 6:58 ` [PATCH net 1/2] bnxt_en: Do not initialize PTP on older P3/P4 chips Michael Chan
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Michael Chan @ 2023-04-17 6:58 UTC (permalink / raw)
To: davem; +Cc: netdev, edumazet, kuba, pabeni, gospo
[-- Attachment #1: Type: text/plain, Size: 572 bytes --]
This small series contains 2 fixes. The first one fixes the PTP
initialization logic on older chips to avoid logging a warning. The
second one fixes a potenial NULL pointer dereference in the driver's
aux bus unload path.
Kalesh AP (1):
bnxt_en: Fix a possible NULL pointer dereference in unload path
Michael Chan (1):
bnxt_en: Do not initialize PTP on older P3/P4 chips
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 19 ++++++++++---------
2 files changed, 11 insertions(+), 10 deletions(-)
--
2.18.1
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4209 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net 1/2] bnxt_en: Do not initialize PTP on older P3/P4 chips
2023-04-17 6:58 [PATCH net 0/2] bnxt_en: Bug fixes Michael Chan
@ 2023-04-17 6:58 ` Michael Chan
2023-04-17 6:58 ` [PATCH net 2/2] bnxt_en: Fix a possible NULL pointer dereference in unload path Michael Chan
2023-04-18 10:40 ` [PATCH net 0/2] bnxt_en: Bug fixes patchwork-bot+netdevbpf
2 siblings, 0 replies; 8+ messages in thread
From: Michael Chan @ 2023-04-17 6:58 UTC (permalink / raw)
To: davem; +Cc: netdev, edumazet, kuba, pabeni, gospo
[-- Attachment #1: Type: text/plain, Size: 1357 bytes --]
The driver does not support PTP on these older chips and it is assuming
that firmware on these older chips will not return the
PORT_MAC_PTP_QCFG_RESP_FLAGS_HWRM_ACCESS flag in __bnxt_hwrm_ptp_qcfg(),
causing the function to abort quietly.
But newer firmware now sets this flag and so __bnxt_hwrm_ptp_qcfg()
will proceed further. Eventually it will fail in bnxt_ptp_init() ->
bnxt_map_ptp_regs() because there is no code to support the older chips.
The driver will then complain:
"PTP initialization failed.\n"
Fix it so that we abort quietly earlier without going through the
unnecessary steps and alarming the user with the warning log.
Fixes: ae5c42f0b92c ("bnxt_en: Get PTP hardware capability from firmware")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index c23e3b397bcf..ef97a4190b39 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -7627,7 +7627,7 @@ static int __bnxt_hwrm_ptp_qcfg(struct bnxt *bp)
u8 flags;
int rc;
- if (bp->hwrm_spec_code < 0x10801) {
+ if (bp->hwrm_spec_code < 0x10801 || !BNXT_CHIP_P5_THOR(bp)) {
rc = -ENODEV;
goto no_ptp;
}
--
2.18.1
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4209 bytes --]
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH net 2/2] bnxt_en: Fix a possible NULL pointer dereference in unload path
2023-04-17 6:58 [PATCH net 0/2] bnxt_en: Bug fixes Michael Chan
2023-04-17 6:58 ` [PATCH net 1/2] bnxt_en: Do not initialize PTP on older P3/P4 chips Michael Chan
@ 2023-04-17 6:58 ` Michael Chan
2023-04-18 10:40 ` [PATCH net 0/2] bnxt_en: Bug fixes patchwork-bot+netdevbpf
2 siblings, 0 replies; 8+ messages in thread
From: Michael Chan @ 2023-04-17 6:58 UTC (permalink / raw)
To: davem; +Cc: netdev, edumazet, kuba, pabeni, gospo, Kalesh AP, Ajit Khaparde
[-- Attachment #1: Type: text/plain, Size: 4708 bytes --]
From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
In the driver unload path, the driver currently checks the valid
BNXT_FLAG_ROCE_CAP flag in bnxt_rdma_aux_device_uninit() before
proceeding. This is flawed because the flag may not be set initially
during driver load. It may be set later after the NVRAM setting is
changed followed by a firmware reset. Relying on the
BNXT_FLAG_ROCE_CAP flag may crash in bnxt_rdma_aux_device_uninit() if
the aux device was never initialized:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
PGD 8ae6aa067 P4D 0
Oops: 0000 [#1] SMP NOPTI
CPU: 39 PID: 42558 Comm: rmmod Kdump: loaded Tainted: G OE --------- - - 4.18.0-348.el8.x86_64 #1
Hardware name: Dell Inc. PowerEdge R750/0WT8Y6, BIOS 1.5.4 12/17/2021
RIP: 0010:device_del+0x1b/0x410
Code: 89 a5 50 03 00 00 4c 89 a5 58 03 00 00 eb 89 0f 1f 44 00 00 41 56 41 55 41 54 4c 8d a7 80 00 00 00 55 53 48 89 fb 48 83 ec 18 <48> 8b 2f 4c 89 e7 65 48 8b 04 25 28 00 00 00 48 89 44 24 10 31 c0
RSP: 0018:ff7f82bf469a7dc8 EFLAGS: 00010292
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000206 RDI: 0000000000000000
RBP: ff31b7cd114b0ac0 R08: 0000000000000000 R09: ffffffff935c3400
R10: ff31b7cd45bc3440 R11: 0000000000000001 R12: 0000000000000080
R13: ffffffffc1069f40 R14: 0000000000000000 R15: 0000000000000000
FS: 00007fc9903ce740(0000) GS:ff31b7d4ffac0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000992fee004 CR4: 0000000000773ee0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
PKRU: 55555554
Call Trace:
bnxt_rdma_aux_device_uninit+0x1f/0x30 [bnxt_en]
bnxt_remove_one+0x2f/0x1f0 [bnxt_en]
pci_device_remove+0x3b/0xc0
device_release_driver_internal+0x103/0x1f0
driver_detach+0x54/0x88
bus_remove_driver+0x77/0xc9
pci_unregister_driver+0x2d/0xb0
bnxt_exit+0x16/0x2c [bnxt_en]
__x64_sys_delete_module+0x139/0x280
do_syscall_64+0x5b/0x1a0
entry_SYSCALL_64_after_hwframe+0x65/0xca
RIP: 0033:0x7fc98f3af71b
Fix this by modifying the check inside bnxt_rdma_aux_device_uninit()
to check for bp->aux_priv instead. We also need to make some changes
in bnxt_rdma_aux_device_init() to make sure that bp->aux_priv is set
only when the aux device is fully initialized.
Fixes: d80d88b0dfff ("bnxt_en: Add auxiliary driver support")
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
index e7b5e28ee29f..852eb449ccae 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c
@@ -304,7 +304,7 @@ void bnxt_rdma_aux_device_uninit(struct bnxt *bp)
struct auxiliary_device *adev;
/* Skip if no auxiliary device init was done. */
- if (!(bp->flags & BNXT_FLAG_ROCE_CAP))
+ if (!bp->aux_priv)
return;
aux_priv = bp->aux_priv;
@@ -324,6 +324,7 @@ static void bnxt_aux_dev_release(struct device *dev)
bp->edev = NULL;
kfree(aux_priv->edev);
kfree(aux_priv);
+ bp->aux_priv = NULL;
}
static void bnxt_set_edev_info(struct bnxt_en_dev *edev, struct bnxt *bp)
@@ -359,19 +360,18 @@ void bnxt_rdma_aux_device_init(struct bnxt *bp)
if (!(bp->flags & BNXT_FLAG_ROCE_CAP))
return;
- bp->aux_priv = kzalloc(sizeof(*bp->aux_priv), GFP_KERNEL);
- if (!bp->aux_priv)
+ aux_priv = kzalloc(sizeof(*bp->aux_priv), GFP_KERNEL);
+ if (!aux_priv)
goto exit;
- bp->aux_priv->id = ida_alloc(&bnxt_aux_dev_ids, GFP_KERNEL);
- if (bp->aux_priv->id < 0) {
+ aux_priv->id = ida_alloc(&bnxt_aux_dev_ids, GFP_KERNEL);
+ if (aux_priv->id < 0) {
netdev_warn(bp->dev,
"ida alloc failed for ROCE auxiliary device\n");
- kfree(bp->aux_priv);
+ kfree(aux_priv);
goto exit;
}
- aux_priv = bp->aux_priv;
aux_dev = &aux_priv->aux_dev;
aux_dev->id = aux_priv->id;
aux_dev->name = "rdma";
@@ -380,10 +380,11 @@ void bnxt_rdma_aux_device_init(struct bnxt *bp)
rc = auxiliary_device_init(aux_dev);
if (rc) {
- ida_free(&bnxt_aux_dev_ids, bp->aux_priv->id);
- kfree(bp->aux_priv);
+ ida_free(&bnxt_aux_dev_ids, aux_priv->id);
+ kfree(aux_priv);
goto exit;
}
+ bp->aux_priv = aux_priv;
/* From this point, all cleanup will happen via the .release callback &
* any error unwinding will need to include a call to
--
2.18.1
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4209 bytes --]
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net 0/2] bnxt_en: Bug fixes
2023-04-17 6:58 [PATCH net 0/2] bnxt_en: Bug fixes Michael Chan
2023-04-17 6:58 ` [PATCH net 1/2] bnxt_en: Do not initialize PTP on older P3/P4 chips Michael Chan
2023-04-17 6:58 ` [PATCH net 2/2] bnxt_en: Fix a possible NULL pointer dereference in unload path Michael Chan
@ 2023-04-18 10:40 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 8+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-04-18 10:40 UTC (permalink / raw)
To: Michael Chan; +Cc: davem, netdev, edumazet, kuba, pabeni, gospo
Hello:
This series was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:
On Sun, 16 Apr 2023 23:58:17 -0700 you wrote:
> This small series contains 2 fixes. The first one fixes the PTP
> initialization logic on older chips to avoid logging a warning. The
> second one fixes a potenial NULL pointer dereference in the driver's
> aux bus unload path.
>
> Kalesh AP (1):
> bnxt_en: Fix a possible NULL pointer dereference in unload path
>
> [...]
Here is the summary with links:
- [net,1/2] bnxt_en: Do not initialize PTP on older P3/P4 chips
https://git.kernel.org/netdev/net/c/e8b51a1a15d5
- [net,2/2] bnxt_en: Fix a possible NULL pointer dereference in unload path
https://git.kernel.org/netdev/net/c/4f4e54b1041e
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net 0/2] bnxt_en: Bug fixes.
@ 2021-01-11 9:26 Michael Chan
2021-01-13 4:10 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 8+ messages in thread
From: Michael Chan @ 2021-01-11 9:26 UTC (permalink / raw)
To: davem; +Cc: netdev, kuba, gospo
This series has 2 fixes. The first one fixes a resource accounting error
with the RDMA driver loaded and the second one fixes the firmware
flashing sequence after defragmentation.
Please queue the 1st one for -stable. Thanks.
Michael Chan (1):
bnxt_en: Improve stats context resource accounting with RDMA driver
loaded.
Pavan Chebbi (1):
bnxt_en: Clear DEFRAG flag in firmware message when retry flashing.
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 3 ++-
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 8 ++++++--
2 files changed, 8 insertions(+), 3 deletions(-)
--
2.18.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net 0/2] bnxt_en: Bug fixes.
@ 2020-12-27 19:18 Michael Chan
2020-12-28 22:20 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 8+ messages in thread
From: Michael Chan @ 2020-12-27 19:18 UTC (permalink / raw)
To: davem; +Cc: netdev, kuba, gospo
The first patch fixes recovery of fatal AER errors. The second one
fixes a potential array out of bounds issue.
Please queue for -stable. Thanks.
Michael Chan (1):
bnxt_en: Check TQM rings for maximum supported value.
Vasundhara Volam (1):
bnxt_en: Fix AER recovery.
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 38 +++++++++++------------
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 7 ++++-
2 files changed, 25 insertions(+), 20 deletions(-)
--
2.18.1
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-04-18 10:40 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-17 6:58 [PATCH net 0/2] bnxt_en: Bug fixes Michael Chan
2023-04-17 6:58 ` [PATCH net 1/2] bnxt_en: Do not initialize PTP on older P3/P4 chips Michael Chan
2023-04-17 6:58 ` [PATCH net 2/2] bnxt_en: Fix a possible NULL pointer dereference in unload path Michael Chan
2023-04-18 10:40 ` [PATCH net 0/2] bnxt_en: Bug fixes patchwork-bot+netdevbpf
-- strict thread matches above, loose matches on Subject: below --
2021-01-11 9:26 Michael Chan
2021-01-13 4:10 ` patchwork-bot+netdevbpf
2020-12-27 19:18 Michael Chan
2020-12-28 22:20 ` patchwork-bot+netdevbpf
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.