Re: Poss. bug in tulip driver since 2.4.7

From: Andrew Morton
Date: Tue Nov 11 2003 - 21:50:40 EST


Prasanna Meda <pmeda@xxxxxxxxxx> wrote:
>
> The inner for loop shown below was not
> supposed to be inside the outside loop.
> They also use the same index i.
> Due to this, when mc_count is more than
> 14, with non ASIX chips, panics, corruptions
> and denial of services to multicast addresses
> can result!
>
> http://lxr.linux.no/source/drivers/net/tulip/tulip_core.c#L1055

So can you confirm that the driver works correctly with this change?

--- 25/drivers/net/tulip/tulip_core.c~tulip-hash-fix 2003-11-11 18:51:52.000000000 -0800
+++ 25-akpm/drivers/net/tulip/tulip_core.c 2003-11-11 18:52:31.000000000 -0800
@@ -979,12 +979,13 @@ static void build_setup_frame_hash(u16 *
for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
i++, mclist = mclist->next) {
int index = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x1ff;
+ int j;

set_bit_le(index, hash_table);

- for (i = 0; i < 32; i++) {
- *setup_frm++ = hash_table[i];
- *setup_frm++ = hash_table[i];
+ for (j = 0; j < 32; j++) {
+ *setup_frm++ = hash_table[j];
+ *setup_frm++ = hash_table[j];
}
setup_frm = &tp->setup_frame[13*6];
}

_

-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html