Krzysztof Halasa wrote:
Jeff Garzik <jgarzik@xxxxxxxxx> writes:
Maybe you guys can spot something I'm missing here. alloc_netdev is
supposed to guarantee that dev->priv is aligned by 32 bytes:
struct net_device *dev;
if (sizeof_priv)
dev->priv = (void *) (((long)(dev + 1) + 31) & ~31);
Now... shouldn't that last line of code be "dev + 1 + sizeof(*dev)" ?
It seems to work 2.[456] for a long time, so I am doubting
myself... surely it would have caused memory corruption or something
by now if I have really found a bug.
Looks ok... not very readable, though.
dev + 1 = ((u8*)dev) + sizeof(dev) = pointer to end of net_device struct.
C pointer arithmatic. Ok, duh, thanks :)
Jeff, too used to void pointer arith
|