xfs_repair: add printf format checking and fix the fallout

Dave Chinner david at fromorbit.com
Tue Aug 30 00:22:26 CDT 2011


On Mon, Aug 29, 2011 at 04:38:52AM -0400, Christoph Hellwig wrote:
> ping?
> 
> On Sun, Aug 14, 2011 at 04:12:39PM -0400, Christoph Hellwig wrote:
> > Add the gcc printf like attribute to the xfs_repair-internal logging helpers,
> > and fix the massive fallout.  A large part of it is dealing with the correct
> > format for fixed size 64-bit types, but there were a lot of real bug in there,
> > including some that lead to crashed when repairing certain corrupted
> > filesystems on ARM based systems.
> > 
> > Signed-off-by: Christoph Hellwig <hch at lst.de>
> > Reported-by: Anisse Astier <anisse at astier.eu>

I see these new warnings after applying the patch on x86-64:

phase6.c: In function "shortform_dir_entry_check":
phase6.c:2737:4: warning: format "%llu" expects argument of type "long long unsigned int", but argument 3 has type "xfs_ino_t" [-Wformat]
phase6.c:2737:4: warning: format "%llu" expects argument of type "long long unsigned int", but argument 4 has type "xfs_ino_t" [-Wformat]
phase6.c: In function "shortform_dir2_entry_check":
phase6.c:3066:4: warning: format "%llu" expects argument of type "long long unsigned int", but argument 3 has type "xfs_ino_t" [-Wformat]
phase6.c:3066:4: warning: format "%llu" expects argument of type "long long unsigned int", but argument 4 has type "xfs_ino_t" [-Wformat]

The warnings do not appear on i686.

Otherwise, I've scanned the changes after checking what most of the
conversions are (e.g. %llu -> PRIU64 for inode numbers) and I didn't
see any obvious errors (but then again my eyes glazed over a bit
after the first 2000 lines of the patch). I haven't seen any runtime
changes, either, so if you fix the above warning as well, then
consider this:

Reviewed-by: Dave Chinner <dchinner at redhat.com>

-- 
Dave Chinner
david at fromorbit.com




More information about the xfs mailing list