Re: [PATCH] drivers: w1: make w1_slave::flags long to avoid casts

Andrew Morton
2013-11-01T19:30:44Z

On Fri, 01 Nov 2013 20:01:39 +0400 Evgeniy Polyakov <zbr@ioremap.net> wrote:

> > Now that I look at documentation, I think you are correct, but the
> > problem is on big-endian 64-bit architectures. __The fix is still
> > valid, but the commit message not so much. __Something along the
> > lines of the following would be better:
>
> Guys, you so much overcomplicate things - this field is basically a set of in-memory flags
> for attached device, there is no need to even think about how it is present in different endianess
>
> Or do I miss something fundamental there? I wrote it gazillions years ago and probably already forgot something

set_bit() operates on longs. So if we do

struct foo {
u32 a;
u32 b;
} f;

...
set_bit(0, (long *)&f.a);
...

then we'll scribble on f.b on a big-endian 64-bit machine.