Re: [PATCH V4 1/2] ACPI / EC: Fix broken 64bit big-endian users of 'global_lock'

Johannes Berg
2015-09-25T18:49:19Z

> Rafael wrote:
> > Actually, what about adding a local u32 variable, say val, here and
> > doing
> >
> > > if (!debugfs_create_x32("gpe", 0444, dev_dir, (u32
> > > *)&first_ec->gpe))
> > > goto error;
> > > if (!debugfs_create_bool("use_global_lock", 0444,
> > > dev_dir,
> > > - (u32 *)&first_ec->global_lock))
> > > + &first_ec->global_lock))
> >
> > if (!debugfs_create_bool("use_global_lock", 0444, dev_dir,
> > &val))
> >
> > > goto error;
> >
> > first_ec->global_lock = val;
> >
> > And then you can turn val into bool just fine without changing the
> > structure
> > definition.

Ok, then, but that means Rafael is completely wrong ...
debugfs_create_bool() takes a *pointer* and it needs to be long-lived,
it can't be on the stack. You also don't get a call when it changes.

If you cannot change the struct definition then you must implement a
debugfs file with its own read/write handlers.

johannes