Re: [PATCH] fix an endianness bug in ext4_encrypted_follow_link()

From: Fengguang Wu
Date: Thu Nov 26 2015 - 20:32:51 EST


On Thu, Nov 26, 2015 at 02:47:56PM -0800, Joe Perches wrote:
> On Thu, 2015-11-26 at 22:28 +0100, Julia Lawall wrote:
> > On Thu, 26 Nov 2015, Al Viro wrote:
> > > On Thu, Nov 26, 2015 at 11:40:37AM -0800, Joe Perches wrote:
> > > (cc'ing Julia Lawall)
> > > > On Thu, 2015-11-26 at 15:27 +0000, Al Viro wrote:
> > > > applying le32_to_cpu() to 16bit value is a bad idea...
> > > Julia, perhaps you or your crew could produce a coccinelle test
> > > for this class of error?
> > What's wrong with something like make C=2 CF=-D__CHECK_ENDIAN__ fs/ext4/ ?
> > Worked just fine, TYVM -
> > sparse does locate them...
>
> Nothing at all.
>
> > As long as the code of interest is getting compiled in the current
> > configuration, relying on the compiler for this seems like a better choice.
>
> Sparse isn't the compiler, but that would be fine by me
> as long as something can catch them.
>
> The original commit (f348c252320b9) was from April.
> Isn't the kbuild robot using sparse and __CHECK_ENDIAN__?

Yes 0day did catch the sparse warning, however it seems the email
somehow failed to get delivered. Here is the local record:

Date: Mon, 13 Apr 2015 16:41:54 +0800
From: kbuild test robot <fengguang.wu@xxxxxxxxx>
To: Theodore Ts'o <tytso@xxxxxxx>
Cc: kbuild-all@xxxxxx, Uday Savagaonkar <savagaon@xxxxxxxxxx>
Subject: [ext4:dev 32/33] fs/ext4/namei.c:3262:25: sparse: incorrect type in
assignment (different base types)
Message-ID: <201504131652.Ox8dW5C0%fengguang.wu@xxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.23 (2014-03-12)

tree: git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
head: 3a19824f63e0a0df99c0a133097eb87c0152545e
commit: f1195c72c95115858123813e9a84badad37424c0 [32/33] ext4 crypto: Add symlink encryption
reproduce:
# apt-get install sparse
git checkout f1195c72c95115858123813e9a84badad37424c0
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__

sparse warnings: (new ones prefixed by >>)

>> fs/ext4/namei.c:3262:25: sparse: incorrect type in assignment (different base types)
fs/ext4/namei.c:3262:25: expected restricted __le16 [usertype] len
fs/ext4/namei.c:3262:25: got restricted __le32 [usertype] <noident>
--
>> fs/ext4/symlink.c:74:29: sparse: cast to restricted __le32
>> fs/ext4/symlink.c:74:29: sparse: cast from restricted __le16

Thanks,
Fengguang
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/