Commit e0188829cb724e7d12a2d4e343b368ff1d6e1471
Committed by
David S. Miller
1 parent
77722b177a
Exists in
master
and in
39 other branches
b44 WOL setup: one-bit-off stack corruption kernel panic fix
About 50% of shutdowns of b44 Ethernet adapter ends by kernel panic with kernels compiled with stack-protector. Checking b44_magic_pattern() return values, one call of b44_magic_pattern() returns 127. It means, that set_bit(128, pmask) was called on line 1509. It means that bit 0 of 17th byte of pmask was overwritten. But pmask has only 16 bytes. Stack corruption happens. It seems that set_bit() on line 1509 always writes one bit off. The fix does not only solve the stack corruption, but also makes Wake On LAN working on my onboard B44 on Asus A7V-333X mainboard. It seems that this problem affects all kernel versions since commit 725ad800 ([PATCH] b44: add wol for old nic) on 2006-06-20. Signed-off-by: Stanislav Brabec <sbrabec@suse.cz> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 1 additions and 2 deletions Side-by-side Diff
drivers/net/b44.c
... | ... | @@ -1505,8 +1505,7 @@ |
1505 | 1505 | for (k = 0; k< ethaddr_bytes; k++) { |
1506 | 1506 | ppattern[offset + magicsync + |
1507 | 1507 | (j * ETH_ALEN) + k] = macaddr[k]; |
1508 | - len++; | |
1509 | - set_bit(len, (unsigned long *) pmask); | |
1508 | + set_bit(len++, (unsigned long *) pmask); | |
1510 | 1509 | } |
1511 | 1510 | } |
1512 | 1511 | return len - 1; |