[PATCH] staging: octeon: replace BUG() with WARN_ON_ONCE() in cvn_oct_xmit()

Mark Adamenko posted 1 patch 1 month ago
drivers/staging/octeon/ethernet-tx.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] staging: octeon: replace BUG() with WARN_ON_ONCE() in cvn_oct_xmit()
Posted by Mark Adamenko 1 month ago
All three values of queue_type are handled in the switch case, making
the default case unreachable. Replace BUG() with WARN_ON_ONCE() to avoid
an unnecessary kernel crash if reached.

Signed-off-by: Mark Adamenko <marusik.adamenko@gmail.com>
---
 drivers/staging/octeon/ethernet-tx.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/octeon/ethernet-tx.c b/drivers/staging/octeon/ethernet-tx.c
index f5bbedac6a65..f34d82a433e3 100644
--- a/drivers/staging/octeon/ethernet-tx.c
+++ b/drivers/staging/octeon/ethernet-tx.c
@@ -450,7 +450,8 @@ netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
 		__skb_queue_tail(&priv->tx_free_list[qos], skb);
 		break;
 	default:
-		BUG();
+		WARN_ON_ONCE(1);
+		break;
 	}
 
 	while (skb_to_free > 0) {
-- 
2.53.0
Re: [PATCH] staging: octeon: replace BUG() with WARN_ON_ONCE() in cvn_oct_xmit()
Posted by Greg KH 1 month ago
On Wed, Mar 04, 2026 at 04:53:16PM -0800, Mark Adamenko wrote:
> All three values of queue_type are handled in the switch case, making
> the default case unreachable. Replace BUG() with WARN_ON_ONCE() to avoid
> an unnecessary kernel crash if reached.
> 
> Signed-off-by: Mark Adamenko <marusik.adamenko@gmail.com>
> ---
>  drivers/staging/octeon/ethernet-tx.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/octeon/ethernet-tx.c b/drivers/staging/octeon/ethernet-tx.c
> index f5bbedac6a65..f34d82a433e3 100644
> --- a/drivers/staging/octeon/ethernet-tx.c
> +++ b/drivers/staging/octeon/ethernet-tx.c
> @@ -450,7 +450,8 @@ netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
>  		__skb_queue_tail(&priv->tx_free_list[qos], skb);
>  		break;
>  	default:
> -		BUG();
> +		WARN_ON_ONCE(1);
> +		break;

If this is impossible to ever hit, then nothing changed here, right?  So
why is this even needed?

thanks,

greg k-h
Re: [PATCH] staging: octeon: replace BUG() with WARN_ON_ONCE() in cvn_oct_xmit()
Posted by Mark Adamenko 1 month ago
> If this is impossible to ever hit, then nothing changed here, right?  So
> why is this even needed?

You're right. Would removing the default case entirely be preferred?
Re: [PATCH] staging: octeon: replace BUG() with WARN_ON_ONCE() in cvn_oct_xmit()
Posted by David Laight 1 month ago
On Mon, 9 Mar 2026 17:41:14 +0100
Greg KH <gregkh@linuxfoundation.org> wrote:

> On Wed, Mar 04, 2026 at 04:53:16PM -0800, Mark Adamenko wrote:
> > All three values of queue_type are handled in the switch case, making
> > the default case unreachable. Replace BUG() with WARN_ON_ONCE() to avoid
> > an unnecessary kernel crash if reached.
> > 
> > Signed-off-by: Mark Adamenko <marusik.adamenko@gmail.com>
> > ---
> >  drivers/staging/octeon/ethernet-tx.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/staging/octeon/ethernet-tx.c b/drivers/staging/octeon/ethernet-tx.c
> > index f5bbedac6a65..f34d82a433e3 100644
> > --- a/drivers/staging/octeon/ethernet-tx.c
> > +++ b/drivers/staging/octeon/ethernet-tx.c
> > @@ -450,7 +450,8 @@ netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
> >  		__skb_queue_tail(&priv->tx_free_list[qos], skb);
> >  		break;
> >  	default:
> > -		BUG();
> > +		WARN_ON_ONCE(1);
> > +		break;  
> 
> If this is impossible to ever hit, then nothing changed here, right?  So
> why is this even needed?

Jeepers, that code is horrid....
But it is trivially impossible to get there.
The compiler might even optimise it away!

	David

> 
> thanks,
> 
> greg k-h
>