Messages in this thread Patch in this message |  | | Date | Wed, 30 Oct 2013 15:59:38 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] drivers: w1: make w1_slave::flags long to avoid casts |
| |
On Sat, 26 Oct 2013 12:56:11 +0100 Michal Nazarewicz <mpn@google.com> wrote:
> From: Michal Nazarewicz <mina86@mina86.com> > > Changing flags field of the w1_slave to unsigned long may on > some architectures increase the size of the structure, but > otherwise makes the code more kosher as casting is avoided > and *_bit family of calls do not attempt to operate on an > entity of bigger size than realy is available. > > The current behaviour does not introduce any bugs (since any > bytes past flags field are preserved)
hm, what does this mean....
> --- a/drivers/w1/w1.c > +++ b/drivers/w1/w1.c > @@ -709,7 +709,7 @@ static int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn) > > sl->owner = THIS_MODULE; > sl->master = dev; > - set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags); > + set_bit(W1_SLAVE_ACTIVE, &sl->flags);
... I'd have though that running this code on little-endian 64-bit would result in a scribble over ...
> --- a/drivers/w1/w1.h > +++ b/drivers/w1/w1.h > @@ -67,8 +67,8 @@ struct w1_slave > struct w1_reg_num reg_num; > atomic_t refcnt; > u8 rom[9]; > - u32 flags; > int ttl;
... w1_slave.ttl?
> + unsigned long flags; > > struct w1_master *master; > struct w1_family *family; > > ... >
|  |