mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
synced 2024-11-28 06:34:17 +08:00
btrfs-progs: Fix disable backtrace assert error
Due to commit 00e769d04c2c83029d6c71(btrfs-progs: Correct value printed by assertions/BUG_ON/WARN_ON), which changed the assert_trace() parameter, the condition passed to assert/WARN_ON/BUG_ON are logical notted for backtrace enabled and disabled case. Such behavior makes us easier to pass value wrong, and in fact it did cause us to pass wrong condition for ASSERT(). Instead of passing different conditions for ASSERT/WARN_ON/BUG_ON() manually, this patch will use ASSERT() to implement the resting ASSERT/WARN_ON/BUG() for disable backtrace case, and use assert_trace() to implement ASSERT() and BUG_ON(), to allow them to print correct value. Also, move WARN_ON() out of the ifdef branch, as it's completely the same for both branches. Cc: Goldwyn Rodrigues <rgoldwyn@suse.de> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
795cfb9b17
commit
5826f1e9ff
14
kerncompat.h
14
kerncompat.h
@ -291,18 +291,16 @@ static inline void assert_trace(const char *assertion, const char *filename,
|
|||||||
abort();
|
abort();
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BUG_ON(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
|
|
||||||
#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
|
|
||||||
#define ASSERT(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)!(c))
|
#define ASSERT(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)!(c))
|
||||||
#define BUG() assert_trace(NULL, __FILE__, __func__, __LINE__, 1)
|
#define BUG_ON(c) assert_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
|
||||||
#else
|
#else
|
||||||
#define BUG_ON(c) assert(!(c))
|
#define ASSERT(c) assert(c)
|
||||||
#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
|
#define BUG_ON(c) ASSERT(!(c))
|
||||||
#define ASSERT(c) assert(!(c))
|
|
||||||
#define BUG() assert(0)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define BUG() BUG_ON(1)
|
||||||
|
#define WARN_ON(c) warning_trace(#c, __FILE__, __func__, __LINE__, (long)(c))
|
||||||
|
|
||||||
#define container_of(ptr, type, member) ({ \
|
#define container_of(ptr, type, member) ({ \
|
||||||
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
|
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
|
||||||
(type *)( (char *)__mptr - offsetof(type,member) );})
|
(type *)( (char *)__mptr - offsetof(type,member) );})
|
||||||
|
Loading…
Reference in New Issue
Block a user