All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/4] branch-check: fix long->int truncation when profiling branches
@ 2018-05-30 13:16 Mikulas Patocka
  0 siblings, 0 replies; only message in thread
From: Mikulas Patocka @ 2018-05-30 13:16 UTC (permalink / raw)
  To: Mikulas Patocka, Mike Snitzer, Dan Williams; +Cc: dm-devel, stable

[-- Attachment #1: branch_check-long.patch --]
[-- Type: text/plain, Size: 1259 bytes --]

The function __builtin_expect returns long type (see the gcc
documentation), and so do macros likely and unlikely. Unfortunatelly, when
CONFIG_PROFILE_ANNOTATED_BRANCHES is selected, the macros likely and
unlikely expand to __branch_check__ and __branch_check__ truncates the
long type to int. This unintended truncation may cause bugs in various
kernel code (we found a bug in dm-writecache because of it), so it's
better to fix __branch_check__ to return long.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org

---
 include/linux/compiler.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6/include/linux/compiler.h
===================================================================
--- linux-2.6.orig/include/linux/compiler.h	2018-02-26 20:34:17.000000000 +0100
+++ linux-2.6/include/linux/compiler.h	2018-05-30 14:11:53.000000000 +0200
@@ -21,7 +21,7 @@ void ftrace_likely_update(struct ftrace_
 #define unlikely_notrace(x)	__builtin_expect(!!(x), 0)
 
 #define __branch_check__(x, expect, is_constant) ({			\
-			int ______r;					\
+			long ______r;					\
 			static struct ftrace_likely_data		\
 				__attribute__((__aligned__(4)))		\
 				__attribute__((section("_ftrace_annotated_branch"))) \

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-05-30 13:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-30 13:16 [PATCH 3/4] branch-check: fix long->int truncation when profiling branches Mikulas Patocka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.