[bug report] can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Marc Kleine-Budde,

The patch 55e5b97f003e: "can: mcp25xxfd: add driver for Microchip
MCP25xxFD SPI CAN" from Sep 18, 2020, leads to the following static
checker warning:

	drivers/net/can/spi/mcp25xxfd/mcp25xxfd-core.c:2155 mcp25xxfd_irq()
	error: uninitialized symbol 'set_normal_mode'.

drivers/net/can/spi/mcp25xxfd/mcp25xxfd-core.c
  2074          do {
  2075                  u32 intf_pending, intf_pending_clearable;
  2076                  bool set_normal_mode;
                        ^^^^^^^^^^^^^^^^^^^^
  2077  
  2078                  err = regmap_bulk_read(priv->map_reg, MCP25XXFD_REG_INT,
  2079                                         &priv->regs_status,
  2080                                         sizeof(priv->regs_status) /
  2081                                         sizeof(u32));
  2082                  if (err)
  2083                          goto out_fail;
  2084  
  2085                  intf_pending = FIELD_GET(MCP25XXFD_REG_INT_IF_MASK,
  2086                                           priv->regs_status.intf) &
  2087                          FIELD_GET(MCP25XXFD_REG_INT_IE_MASK,
  2088                                    priv->regs_status.intf);
  2089  
  2090                  if (!(intf_pending))
  2091                          return handled;
  2092  
  2093                  /* Some interrupts must be ACKed in the
  2094                   * MCP25XXFD_REG_INT register.
  2095                   * - First ACK then handle, to avoid lost-IRQ race
  2096                   *   condition on fast re-occurring interrupts.
  2097                   * - Write "0" to clear active IRQs, "1" to all other,
  2098                   *   to avoid r/m/w race condition on the
  2099                   *   MCP25XXFD_REG_INT register.
  2100                   */
  2101                  intf_pending_clearable = intf_pending &
  2102                          MCP25XXFD_REG_INT_IF_CLEARABLE_MASK;
  2103                  if (intf_pending_clearable) {
  2104                          err = regmap_update_bits(priv->map_reg,
  2105                                                   MCP25XXFD_REG_INT,
  2106                                                   MCP25XXFD_REG_INT_IF_MASK,
  2107                                                   ~intf_pending_clearable);
  2108                          if (err)
  2109                                  goto out_fail;
  2110                  }
  2111  
  2112                  if (intf_pending & MCP25XXFD_REG_INT_MODIF) {
                                           ^^^^^^^^^^^^^^^^^^^^^^^
This is BIT(3)

  2113                          err = mcp25xxfd_handle(priv, modif, &set_normal_mode);
                                                                    ^^^^^^^^^^^^^^^^
  2114                          if (err)
  2115                                  goto out_fail;
  2116                  }
  2117  
  2118                  if (intf_pending & MCP25XXFD_REG_INT_RXIF) {
  2119                          err = mcp25xxfd_handle(priv, rxif);
  2120                          if (err)
  2121                                  goto out_fail;
  2122                  }
  2123  
  2124                  if (intf_pending & MCP25XXFD_REG_INT_TEFIF) {
  2125                          err = mcp25xxfd_handle(priv, tefif);
  2126                          if (err)
  2127                                  goto out_fail;
  2128                  }
  2129  
  2130                  if (intf_pending & MCP25XXFD_REG_INT_RXOVIF) {
  2131                          err = mcp25xxfd_handle(priv, rxovif);
  2132                          if (err)
  2133                                  goto out_fail;
  2134                  }
  2135  
  2136                  if (intf_pending & MCP25XXFD_REG_INT_TXATIF) {
  2137                          err = mcp25xxfd_handle(priv, txatif);
  2138                          if (err)
  2139                                  goto out_fail;
  2140                  }
  2141  
  2142                  if (intf_pending & MCP25XXFD_REG_INT_IVMIF) {
  2143                          err = mcp25xxfd_handle(priv, ivmif);
  2144                          if (err)
  2145                                  goto out_fail;
  2146                  }
  2147  
  2148                  if (intf_pending & MCP25XXFD_REG_INT_SERRIF) {
  2149                          err = mcp25xxfd_handle(priv, serrif);
  2150                          if (err)
  2151                                  goto out_fail;
  2152                  }
  2153  
  2154                  if (intf_pending & MCP25XXFD_REG_INT_ECCIF) {
                                           ^^^^^^^^^^^^^^^^^^^^^^^
This is BIT(8)

  2155                          err = mcp25xxfd_handle(priv, eccif, set_normal_mode);
                                                                    ^^^^^^^^^^^^^^^^
This might not be initialized if BIT(8) is set but BIT(3) is not.

  2156                          if (err)
  2157                                  goto out_fail;

regards,
dan carpenter



[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux