On 2/17/2014 1:52 PM, Dan Carpenter wrote:
Hello Moni Shoua,

This is a semi-automatic email about new static checker warnings.

The patch ad4885d279b6: "IB/mlx4: Build the port IBoE GID table
properly under bonding" from Feb 5, 2014, leads to the following
Smatch complaint:

drivers/infiniband/hw/mlx4/main.c:1749 mlx4_ib_scan_netdevs()
         error: we previously assumed 'curr_netdev' could be null (see line 
1722)

drivers/infiniband/hw/mlx4/main.c
   1721 
   1722                 if (curr_netdev) {
                             ^^^^^^^^^^^
Check.

   1723                         port_state = (netif_running(curr_netdev) && 
netif_carrier_ok(curr_netdev)) ?
   1724                                                 IB_PORT_ACTIVE : 
IB_PORT_DOWN;
   1725                         mlx4_ib_set_default_gid(ibdev, curr_netdev, 
port);
   1726                 } else {
   1727                         reset_gid_table(ibdev, port);
   1728                 }
   1729                 /* if using bonding/team and a slave port is down, we 
don't the bond IP
   1730                  * based gids in the table since flows that select port 
by gid may get
   1731                  * the down port.
   1732                  */
   1733                 if (curr_master && (port_state == IB_PORT_DOWN)) {
   1734                         reset_gid_table(ibdev, port);
   1735                         mlx4_ib_set_default_gid(ibdev, curr_netdev, 
port);
   1736                 }
   1737                 /* if bonding is used it is possible that we add it to 
masters
   1738                  * only after IP address is assigned to the net bonding
   1739                  * interface.
   1740                 */
   1741                 if (curr_master && (old_master != curr_master)) {
   1742                         reset_gid_table(ibdev, port);
   1743                         mlx4_ib_set_default_gid(ibdev, curr_netdev, 
port);
   1744                         mlx4_ib_get_dev_addr(curr_master, ibdev, port);
   1745                 }
   1746 
   1747                 if (!curr_master && (old_master != curr_master)) {
   1748                         reset_gid_table(ibdev, port);
   1749                         mlx4_ib_set_default_gid(ibdev, curr_netdev, 
port);
                                                                ^^^^^^^^^^^
Dereferenced without checking.

   1750                         mlx4_ib_get_dev_addr(curr_netdev, ibdev, port);
   1751                 }

regards,
dan carpenter
Not really a bug. (curr_master != NULL) implies (curr_netdev != NULL)
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to