mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-16 12:14:06 +00:00
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 commit466c525d6d
("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>
This commit is contained in:
parent
82842fee6e
commit
4320f34666
1 changed files with 4 additions and 4 deletions
|
@ -105,10 +105,10 @@ struct xfs_scrub {
|
|||
};
|
||||
|
||||
/* XCHK state flags grow up from zero, XREP state flags grown down from 2^31 */
|
||||
#define XCHK_TRY_HARDER (1 << 0) /* can't get resources, try again */
|
||||
#define XCHK_FSGATES_DRAIN (1 << 2) /* defer ops draining enabled */
|
||||
#define XCHK_NEED_DRAIN (1 << 3) /* scrub needs to drain defer ops */
|
||||
#define XREP_ALREADY_FIXED (1 << 31) /* checking our repair work */
|
||||
#define XCHK_TRY_HARDER (1U << 0) /* can't get resources, try again */
|
||||
#define XCHK_FSGATES_DRAIN (1U << 2) /* defer ops draining enabled */
|
||||
#define XCHK_NEED_DRAIN (1U << 3) /* scrub needs to drain defer ops */
|
||||
#define XREP_ALREADY_FIXED (1U << 31) /* checking our repair work */
|
||||
|
||||
/*
|
||||
* The XCHK_FSGATES* flags reflect functionality in the main filesystem that
|
||||
|
|
Loading…
Add table
Reference in a new issue