Subject: octeon dev_addrs list usage

From: Jiri Pirko <[email-masked]>
Date: Tue, 23 Feb 2010 21:41:52 +0100

Hello David.

Lookin at octeon driver, drivers/net/octeon/octeon_mgmt.c,
octeon_mgmt_set_rx_filtering function and following code:

503         if (cam_mode == 1) {
504                 /* Add primary address. */
505                 octeon_mgmt_cam_state_add(&cam_state, netdev->dev_addr);
506                 list_for_each(pos, &netdev->dev_addrs.list) {
507                         struct netdev_hw_addr *hw_addr;
508                         hw_addr = list_entry(pos, struct netdev_hw_addr, list);
509                         octeon_mgmt_cam_state_add(&cam_state, hw_addr->addr);
510                         list = list->next;
511                 }
512         }

besides netdev->dev_addr is first entry in netdev->dev_addrs.list and
"list = list->next;" makes no sense here (I posted a patch correcting
these earlier), are you sure you are traversing the right list? This list is
currently not filled in anywhere (besides ixgbe driver). Don't you want
to traverse through unicast_list instead? Maybe I'm missing something...

Thanks.

Jirka