Skip to contentSkip to conversation

Patch "MIPS: lib: Mark intrinsics notrace" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Jun 4, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

MIPS: lib: Mark intrinsics notrace

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
mips-lib-mark-intrinsics-notrace.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From aedcfbe06558a9f53002e82d5be64c6c94687726 Mon Sep 17 00:00:00 2001

From: Harvey Hunt <[email protected]>
Date: Wed, 25 May 2016 11:06:35 +0100
Subject: MIPS: lib: Mark intrinsics notrace

From: Harvey Hunt <[email protected]>

commit aedcfbe06558a9f53002e82d5be64c6c94687726 upstream.

On certain MIPS32 devices, the ftrace tracer "function_graph" uses __lshrdi3() during the capturing of trace data. ftrace then attempts to trace __lshrdi3() which leads to infinite recursion and a stack overflow. Fix this by marking __lshrdi3() as notrace. Mark the other compiler intrinsics as notrace in case the compiler decides to use them in the ftrace path.

Patchwork: https://patchwork.linux-mips.org/patch/13354/

---
 arch/mips/lib/ashldi3.c |    2 +-
 arch/mips/lib/ashrdi3.c |    2 +-
 arch/mips/lib/bswapdi.c |    2 +-
 arch/mips/lib/bswapsi.c |    2 +-
 arch/mips/lib/cmpdi2.c  |    2 +-
 arch/mips/lib/lshrdi3.c |    2 +-
 arch/mips/lib/ucmpdi2.c |    2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)
arch/mips/lib/ashldi3.c +1 -1
@@ -2,7 +2,7 @@
 
 #include "libgcc.h"
 
-long long __ashldi3(long long u, word_type b)
+long long notrace __ashldi3(long long u, word_type b)
 {
 	DWunion uu, w;
 	word_type bm;
arch/mips/lib/ashrdi3.c +1 -1
@@ -2,7 +2,7 @@
 
 #include "libgcc.h"
 
-long long __ashrdi3(long long u, word_type b)
+long long notrace __ashrdi3(long long u, word_type b)
 {
 	DWunion uu, w;
 	word_type bm;
arch/mips/lib/bswapdi.c +1 -1
@@ -1,6 +1,6 @@
 #include <linux/module.h>
 
-unsigned long long __bswapdi2(unsigned long long u)
+unsigned long long notrace __bswapdi2(unsigned long long u)
 {
 	return (((u) & 0xff00000000000000ull) >> 56) |
 	       (((u) & 0x00ff000000000000ull) >> 40) |
arch/mips/lib/bswapsi.c +1 -1
@@ -1,6 +1,6 @@
 #include <linux/module.h>
 
-unsigned int __bswapsi2(unsigned int u)
+unsigned int notrace __bswapsi2(unsigned int u)
 {
 	return (((u) & 0xff000000) >> 24) |
 	       (((u) & 0x00ff0000) >>  8) |
arch/mips/lib/cmpdi2.c +1 -1
@@ -2,7 +2,7 @@
 
 #include "libgcc.h"
 
-word_type __cmpdi2(long long a, long long b)
+word_type notrace __cmpdi2(long long a, long long b)
 {
 	const DWunion au = {
 		.ll = a
arch/mips/lib/lshrdi3.c +1 -1
@@ -2,7 +2,7 @@
 
 #include "libgcc.h"
 
-long long __lshrdi3(long long u, word_type b)
+long long notrace __lshrdi3(long long u, word_type b)
 {
 	DWunion uu, w;
 	word_type bm;
arch/mips/lib/ucmpdi2.c +1 -1
@@ -2,7 +2,7 @@
 
 #include "libgcc.h"
 
-word_type __ucmpdi2(unsigned long long a, unsigned long long b)
+word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b)
 {
 	const DWunion au = {.ll = a};
 	const DWunion bu = {.ll = b};

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/mips-lib-mark-intrinsics-notrace.patch