linux/fs/xfs/scrub
Geert Uytterhoeven 4320f34666 xfs: Fix undefined behavior of shift into sign bit
With gcc-5:

    In file included from ./include/trace/define_trace.h:102:0,
		     from ./fs/xfs/scrub/trace.h:988,
		     from fs/xfs/scrub/trace.c:40:
    ./fs/xfs/./scrub/trace.h: In function ‘trace_raw_output_xchk_fsgate_class’:
    ./fs/xfs/scrub/scrub.h:111:28: error: initializer element is not constant
     #define XREP_ALREADY_FIXED (1 << 31) /* checking our repair work */
				^

Shifting the (signed) value 1 into the sign bit is undefined behavior.

Fix this for all definitions in the file by shifting "1U" instead of
"1".

This was exposed by the first user added in commit 466c525d6d
("xfs: minimize overhead of drain wakeups by using jump labels").

Fixes: 160b5a7845 ("xfs: hoist the already_fixed variable to the scrub context")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2023-06-05 04:09:27 +10:00
..
agheader_repair.c xfs: convert xbitmap to interval tree 2023-04-11 19:00:36 -07:00
agheader.c xfs: teach scrub to check for sole ownership of metadata objects 2023-04-11 19:00:15 -07:00
alloc.c xfs: flag free space btree records that could be merged 2023-04-11 19:00:26 -07:00
attr.c xfs: don't load local xattr values during scrub 2023-04-11 19:00:35 -07:00
attr.h xfs: check used space of shortform xattr structures 2023-04-11 19:00:33 -07:00
bitmap.c xfs: cross-reference rmap records with free space btrees 2023-04-11 19:00:38 -07:00
bitmap.h xfs: cross-reference rmap records with free space btrees 2023-04-11 19:00:38 -07:00
bmap.c xfs: flush dirty data and drain directios before scrubbing cow fork 2023-05-02 09:14:43 +10:00
btree.c xfs: teach scrub to check for sole ownership of metadata objects 2023-04-11 19:00:15 -07:00
btree.h xfs: always scrub record/key order of interior records 2023-04-11 19:00:09 -07:00
common.c xfs: disable reaping in fscounters scrub 2023-05-02 09:16:14 +10:00
common.h xfs: disable reaping in fscounters scrub 2023-05-02 09:16:14 +10:00
dabtree.c xfs: scrub should use ECHRNG to signal that the drain is needed 2023-04-11 19:00:00 -07:00
dabtree.h xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00
dir.c xfs: manage inode DONTCACHE status at irele time 2023-04-11 19:00:20 -07:00
fscounters.c xfs: disable reaping in fscounters scrub 2023-05-02 09:16:14 +10:00
health.c xfs: allow queued AG intents to drain before scrubbing 2023-04-11 18:59:58 -07:00
health.h xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00
ialloc.c xfs: teach scrub to check for sole ownership of metadata objects 2023-04-11 19:00:15 -07:00
inode.c xfs: don't take the MMAPLOCK when scrubbing file metadata 2023-04-11 19:00:22 -07:00
parent.c xfs: manage inode DONTCACHE status at irele time 2023-04-11 19:00:20 -07:00
quota.c xfs: minimize overhead of drain wakeups by using jump labels 2023-04-11 18:59:59 -07:00
readdir.c xfs: streamline the directory iteration code for scrub 2023-04-11 19:00:17 -07:00
readdir.h xfs: streamline the directory iteration code for scrub 2023-04-11 19:00:17 -07:00
refcount.c xfs: fix duplicate includes 2023-04-20 08:18:34 +10:00
repair.c xfs: remove the for_each_xbitmap_ helpers 2023-04-11 19:00:35 -07:00
repair.h xfs: introduce bitmap type for AG blocks 2023-04-11 19:00:37 -07:00
rmap.c xfs: cross-reference rmap records with refcount btrees 2023-04-11 19:00:39 -07:00
rtbitmap.c xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00
scrub.c xfs: disable reaping in fscounters scrub 2023-05-02 09:16:14 +10:00
scrub.h xfs: Fix undefined behavior of shift into sign bit 2023-06-05 04:09:27 +10:00
symlink.c xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00
trace.c xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00
trace.h xfs: disable reaping in fscounters scrub 2023-05-02 09:16:14 +10:00
xfs_scrub.h xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00