core kernel fixes
Subsystems (2)
Linus,
Please pull the latest core-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-urgent-for-linus
# HEAD: 2decec48b0fd28ffdbf4cc684bd04e735f0839dd objtool: Fix whitelist documentation typo
A handful of objtool updates, plus a documentation addition for __ab_c_size().
Thanks,
Ingo
------------------>
Josh Poimboeuf (2):
objtool: Don't use ignore flag for fake jumps
objtool: Fix function fallthrough detection
Raphael Gault (1):
objtool: Fix whitelist documentation typo
Rasmus Villemoes (1):
overflow.h: Add comment documenting __ab_c_size()
include/linux/overflow.h | 8 ++++++-- tools/objtool/Documentation/stack-validation.txt | 2 +- tools/objtool/check.c | 11 +++++++---- 3 files changed, 14 insertions(+), 7 deletions(-)
include/linux/overflow.h +6 -2
@@ -278,11 +278,15 @@ static inline __must_check size_t array3_size(size_t a, size_t b, size_t c)return bytes; } -static inline __must_check size_t __ab_c_size (size_t n,size_t size,size_t c) +/* +* Compute a*b+c, returning SIZE_MAX on overflow. Internal helper for +* struct_size() below. +*/ +static inline __must_check size_t __ab_c_size (size_t a,size_t b,size_t c) {size_t bytes; -if (check_mul_overflow (n, size, &bytes)) +if (check_mul_overflow (a, b, &bytes))return SIZE_MAX ;if (check_add_overflow (bytes, c, &bytes))return SIZE_MAX ;
tools/objtool/Documentation/stack-validation.txt +1 -1
@@ -306,7 +306,7 @@ ignore it: - To skip validation of a file, add - OBJECT_FILES_NON_STANDARD_filename.o := n + OBJECT_FILES_NON_STANDARD_filename.o := y to the Makefile.
tools/objtool/check.c +7 -4
@@ -28,6 +28,8 @@#include <linux/hashtable.h> #include <linux/kernel.h> +#define FAKE_JUMP_OFFSET -1 +struct alternative {struct list_head list;struct instruction *insn;
@@ -568,7 +570,7 @@ static int add_jump_destinations(struct objtool_file *file) insn->type != INSN_JUMP_UNCONDITIONAL)continue ; -if (insn->ignore) +if (insn->ignore || insn->offset ==FAKE_JUMP_OFFSET )continue ; rela = find_rela_by_dest_range(insn->sec, insn->offset,
@@ -745,10 +747,10 @@ static int handle_group_alt(struct objtool_file *file,clear_insn_state (&fake_jump->state); fake_jump->sec = special_alt->new_sec; - fake_jump->offset =-1 ; + fake_jump->offset =FAKE_JUMP_OFFSET ; fake_jump->type =INSN_JUMP_UNCONDITIONAL ; fake_jump->jump_dest =list_next_entry (last_orig_insn, list); - fake_jump->ignore = true; + fake_jump->func = orig_insn->func; }if (!special_alt->new_len) {
@@ -1957,7 +1959,8 @@ static int validate_branch(struct objtool_file *file, struct instruction *first,return 1 ; } - func = insn->func ? insn->func->pfunc :NULL ; +if (insn->func) + func = insn->func->pfunc;if (func && insn->ignore) { WARN_FUNC("BUG: why am I validating an ignored function?",
The pull request you sent on Thu, 16 May 2019 17:51:46 +0200:
The pull request you sent on Thu, 16 May 2019 17:51:46 +0200:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitcore-urgent-for-linus
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/b2ca74d32bba153a1507e6b7e36d3ec8a89311a1
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.wiki.kernel.org/userdoc/prtracker