diff --git a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_int.c b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_int.c index 3625567ffa15..49dcd907fd4c 100644 --- a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_int.c +++ b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_int.c @@ -399,6 +399,13 @@ static int mcp25xxfd_can_int_handle_ivmif(struct mcp25xxfd_can_priv *cpriv) if (!(cpriv->status.intf & MCP25XXFD_CAN_INT_IVMIF)) return 0; + /* I sometimes get IVMIF interrupts even though IVMIE is disabled + * and no error flags are set in BDIAG1. So make sure that the interrupt + * is enabled before continuing + */ + if (!(cpriv->status.intf & MCP25XXFD_CAN_INT_IVMIE)) + return 0; + MCP25XXFD_DEBUGFS_STATS_INCR(cpriv, int_ivm_count); /* if we have a systemerror as well,