On Tue, Sep 15, 2015 at 02:04:59PM +0530, Viresh Kumar wrote: > Long back 'bool' type used to be a typecast to 'int', but that changed > in v2.6.19. And that is a typecast to _Bool now, which (mostly) takes > just a byte. Anyway, the bool type is implementation defined, and better > we don't assume its size to be 4 bytes or 1. > > The problem with current code is that it reads/writes 4 bytes for a > boolean, which will read/update 3 excess bytes following the boolean > variable (when sizeof(bool) is 1 byte). And that can lead to hard to fix > bugs. It was a nightmare cracking this one. > > The debugfs code had this bug since the first time it got introduced, > but was never got caught, strange. Maybe the bool variables (monitored > by debugfs) were followed by an 'int' or something bigger and the pad > bytes made sure, we never see this issue. > > But the OPP (Operating performance points) library have three booleans > allocated to contiguous bytes and this bug got hit quite soon (The > debugfs support for OPP is yet to be merged). It showed up as corruption > of the debugfs boolean symbols, where Y were becoming N and vice versa. > > Fix it properly by changing the last argument of debugfs_create_bool(), > to type 'bool *' instead of 'u32 *', so that it doesn't depend on sizeof > bool at all. > > That required updates to all user sites as well in a single commit. > regmap core was also using debugfs_{read|write}_file_bool(), directly > and variable types were updated for that to be bool as well. > > Acked-by: Mark Brown <broo...@kernel.org> > Signed-off-by: Viresh Kumar <viresh.ku...@linaro.org> > ---
For the minor wm_adsp change: Acked-by: Charles Keepax <ckee...@opensource.wolfsonmicro.com> Thanks, Charles _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu