• Stanislav Brabec's avatar
    b44 WOL setup: one-bit-off stack corruption kernel panic fix · e0188829
    Stanislav Brabec authored
    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: default avatarStanislav Brabec <sbrabec@suse.cz>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e0188829
b44.c 57.7 KB