forked from luck/tmp_suning_uos_patched
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: sparc64: Update defconfig. sparc: Kill user copy check code. sparc64: Fix perf_arch_get_caller_regs(). sparc64: Add missing ID to parport probing code.
This commit is contained in:
commit
4d15393d20
|
@ -30,18 +30,4 @@ config FRAME_POINTER
|
|||
depends on MCOUNT
|
||||
default y
|
||||
|
||||
config DEBUG_STRICT_USER_COPY_CHECKS
|
||||
bool "Strict copy size checks"
|
||||
depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING
|
||||
---help---
|
||||
Enabling this option turns a certain set of sanity checks for user
|
||||
copy operations into compile time failures.
|
||||
|
||||
The copy_from_user() etc checks are there to help test if there
|
||||
are sufficient security checks on the length argument of
|
||||
the copy operation, by having gcc prove that the argument is
|
||||
within bounds.
|
||||
|
||||
If unsure, or if you run an older (pre 4.4) gcc, say N.
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.34
|
||||
# Wed May 26 21:14:01 2010
|
||||
# Linux kernel version: 2.6.35
|
||||
# Mon Aug 9 02:31:36 2010
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_SPARC=y
|
||||
|
@ -9,7 +9,6 @@ CONFIG_SPARC=y
|
|||
CONFIG_SPARC64=y
|
||||
CONFIG_ARCH_DEFCONFIG="arch/sparc/configs/sparc64_defconfig"
|
||||
CONFIG_BITS=64
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
|
@ -24,8 +23,8 @@ CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
|
|||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_ARCH_NO_VIRT_TO_BUS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
CONFIG_CONSTRUCTORS=y
|
||||
|
@ -36,6 +35,7 @@ CONFIG_CONSTRUCTORS=y
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
CONFIG_CROSS_COMPILE=""
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SWAP=y
|
||||
|
@ -51,8 +51,6 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y
|
|||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_TREE_RCU=y
|
||||
# CONFIG_TREE_PREEMPT_RCU is not set
|
||||
# CONFIG_TINY_RCU is not set
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
CONFIG_RCU_FANOUT=64
|
||||
# CONFIG_RCU_FANOUT_EXACT is not set
|
||||
|
@ -110,7 +108,6 @@ CONFIG_PCI_QUIRKS=y
|
|||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_TRACEPOINTS=y
|
||||
CONFIG_OPROFILE=m
|
||||
|
@ -129,7 +126,6 @@ CONFIG_HAVE_DMA_API_DEBUG=y
|
|||
# GCOV-based kernel profiling
|
||||
#
|
||||
# CONFIG_GCOV_KERNEL is not set
|
||||
# CONFIG_SLOW_WORK is not set
|
||||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
|
@ -227,8 +223,6 @@ CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
|||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
# CONFIG_FLATMEM_MANUAL is not set
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_NEED_MULTIPLE_NODES=y
|
||||
|
@ -236,6 +230,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
|
|||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_COMPACTION is not set
|
||||
|
@ -345,6 +340,7 @@ CONFIG_IPV6_TUNNEL=m
|
|||
# CONFIG_IPV6_MULTIPLE_TABLES is not set
|
||||
# CONFIG_IPV6_MROUTE is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
# CONFIG_IP_DCCP is not set
|
||||
# CONFIG_IP_SCTP is not set
|
||||
|
@ -368,6 +364,7 @@ CONFIG_VLAN_8021Q=m
|
|||
# CONFIG_IEEE802154 is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
# CONFIG_DNS_RESOLVER is not set
|
||||
CONFIG_RPS=y
|
||||
|
||||
#
|
||||
|
@ -416,6 +413,11 @@ CONFIG_EXTRA_FIRMWARE=""
|
|||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
CONFIG_CONNECTOR=m
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_OF=y
|
||||
|
||||
#
|
||||
# Flattened Device Tree and Open Firmware support
|
||||
#
|
||||
CONFIG_OF_DEVICE=y
|
||||
CONFIG_OF_MDIO=m
|
||||
# CONFIG_PARPORT is not set
|
||||
|
@ -638,6 +640,7 @@ CONFIG_DM_ZERO=m
|
|||
#
|
||||
# CONFIG_FIREWIRE is not set
|
||||
# CONFIG_IEEE1394 is not set
|
||||
# CONFIG_FIREWIRE_NOSY is not set
|
||||
# CONFIG_I2O is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
|
@ -708,7 +711,6 @@ CONFIG_NET_PCI=y
|
|||
# CONFIG_SMSC9420 is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
# CONFIG_TLAN is not set
|
||||
# CONFIG_KS8842 is not set
|
||||
# CONFIG_KS8851_MLL is not set
|
||||
# CONFIG_VIA_RHINE is not set
|
||||
# CONFIG_SC92031 is not set
|
||||
|
@ -744,6 +746,8 @@ CONFIG_CHELSIO_T3_DEPENDS=y
|
|||
# CONFIG_CHELSIO_T3 is not set
|
||||
CONFIG_CHELSIO_T4_DEPENDS=y
|
||||
# CONFIG_CHELSIO_T4 is not set
|
||||
CONFIG_CHELSIO_T4VF_DEPENDS=y
|
||||
# CONFIG_CHELSIO_T4VF is not set
|
||||
# CONFIG_ENIC is not set
|
||||
# CONFIG_IXGBE is not set
|
||||
# CONFIG_IXGBEVF is not set
|
||||
|
@ -778,6 +782,10 @@ CONFIG_NIU=m
|
|||
# CONFIG_USB_USBNET is not set
|
||||
# CONFIG_USB_IPHETH is not set
|
||||
# CONFIG_WAN is not set
|
||||
|
||||
#
|
||||
# CAIF transport drivers
|
||||
#
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_HIPPI is not set
|
||||
CONFIG_PPP=m
|
||||
|
@ -824,10 +832,11 @@ CONFIG_INPUT_EVDEV=y
|
|||
CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
CONFIG_KEYBOARD_LKKBD=m
|
||||
# CONFIG_KEYBOARD_TCA6416 is not set
|
||||
# CONFIG_KEYBOARD_MAX7359 is not set
|
||||
# CONFIG_KEYBOARD_MCS is not set
|
||||
# CONFIG_KEYBOARD_NEWTON is not set
|
||||
# CONFIG_KEYBOARD_OPENCORES is not set
|
||||
# CONFIG_KEYBOARD_STOWAWAY is not set
|
||||
|
@ -861,6 +870,7 @@ CONFIG_INPUT_SPARCSPKR=y
|
|||
# CONFIG_INPUT_CM109 is not set
|
||||
# CONFIG_INPUT_UINPUT is not set
|
||||
# CONFIG_INPUT_PCF8574 is not set
|
||||
# CONFIG_INPUT_ADXL34X is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
|
@ -921,6 +931,7 @@ CONFIG_HW_RANDOM_N2RNG=m
|
|||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
CONFIG_DEVPORT=y
|
||||
# CONFIG_RAMOOPS is not set
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_COMPAT=y
|
||||
|
@ -954,6 +965,7 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# I2C system bus drivers (mostly embedded / system-on-chip)
|
||||
#
|
||||
# CONFIG_I2C_OCORES is not set
|
||||
# CONFIG_I2C_PCA_PLATFORM is not set
|
||||
# CONFIG_I2C_SIMTEC is not set
|
||||
# CONFIG_I2C_XILINX is not set
|
||||
|
||||
|
@ -967,7 +979,6 @@ CONFIG_I2C_ALGOBIT=y
|
|||
#
|
||||
# Other I2C/SMBus bus drivers
|
||||
#
|
||||
# CONFIG_I2C_PCA_PLATFORM is not set
|
||||
# CONFIG_I2C_STUB is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
|
@ -1034,12 +1045,14 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_DME1737 is not set
|
||||
# CONFIG_SENSORS_EMC1403 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_ADS7828 is not set
|
||||
# CONFIG_SENSORS_AMC6821 is not set
|
||||
# CONFIG_SENSORS_THMC50 is not set
|
||||
# CONFIG_SENSORS_TMP102 is not set
|
||||
# CONFIG_SENSORS_TMP401 is not set
|
||||
# CONFIG_SENSORS_TMP421 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
|
@ -1063,15 +1076,14 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# Sonics Silicon Backplane
|
||||
#
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
CONFIG_MFD_SUPPORT=y
|
||||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_88PM860X is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TPS6507X is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TC35892 is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
|
@ -1081,8 +1093,10 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_WM8994 is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_AB3100_CORE is not set
|
||||
# CONFIG_ABX500_CORE is not set
|
||||
# CONFIG_LPC_SCH is not set
|
||||
# CONFIG_MFD_RDC321X is not set
|
||||
# CONFIG_MFD_JANZ_CMODIO is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
# CONFIG_MEDIA_SUPPORT is not set
|
||||
|
||||
|
@ -1320,6 +1334,7 @@ CONFIG_USB_HIDDEV=y
|
|||
#
|
||||
# CONFIG_HID_3M_PCT is not set
|
||||
CONFIG_HID_A4TECH=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
# CONFIG_HID_CANDO is not set
|
||||
|
@ -1349,6 +1364,7 @@ CONFIG_HID_PANTHERLORD=y
|
|||
CONFIG_HID_PETALYNX=y
|
||||
# CONFIG_HID_PICOLCD is not set
|
||||
# CONFIG_HID_QUANTA is not set
|
||||
# CONFIG_HID_ROCCAT is not set
|
||||
# CONFIG_HID_ROCCAT_KONE is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
|
@ -1713,7 +1729,8 @@ CONFIG_DEBUG_FS=y
|
|||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
CONFIG_LOCKUP_DETECTOR=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
|
@ -1753,6 +1770,7 @@ CONFIG_DEBUG_MEMORY_INIT=y
|
|||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
|
||||
# CONFIG_LKDTM is not set
|
||||
# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
@ -1777,13 +1795,10 @@ CONFIG_FTRACE=y
|
|||
# CONFIG_IRQSOFF_TRACER is not set
|
||||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_FTRACE_SYSCALLS is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
CONFIG_BRANCH_PROFILE_NONE=y
|
||||
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
|
||||
# CONFIG_PROFILE_ALL_BRANCHES is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_KMEMTRACE is not set
|
||||
# CONFIG_WORKQUEUE_TRACER is not set
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
# CONFIG_FTRACE_STARTUP_TEST is not set
|
||||
# CONFIG_RING_BUFFER_BENCHMARK is not set
|
||||
|
@ -1795,7 +1810,6 @@ CONFIG_HAVE_ARCH_KGDB=y
|
|||
# CONFIG_KGDB is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_DCFLUSH is not set
|
||||
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
|
@ -1804,9 +1818,6 @@ CONFIG_KEYS=y
|
|||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
|
||||
# CONFIG_DEFAULT_SECURITY_SMACK is not set
|
||||
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
|
||||
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
CONFIG_DEFAULT_SECURITY=""
|
||||
CONFIG_XOR_BLOCKS=m
|
||||
|
@ -1829,9 +1840,10 @@ CONFIG_CRYPTO_BLKCIPHER2=y
|
|||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_PCOMP=y
|
||||
CONFIG_CRYPTO_PCOMP2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
CONFIG_CRYPTO_MANAGER_TESTS=y
|
||||
CONFIG_CRYPTO_GF128MUL=m
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
# CONFIG_CRYPTO_PCRYPT is not set
|
||||
|
@ -1941,5 +1953,4 @@ CONFIG_DECOMPRESS_LZO=y
|
|||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAVE_LMB=y
|
||||
CONFIG_NLATTR=y
|
||||
|
|
|
@ -228,6 +228,10 @@ static const struct of_device_id ecpp_match[] = {
|
|||
.name = "parallel",
|
||||
.compatible = "ns87317-ecpp",
|
||||
},
|
||||
{
|
||||
.name = "parallel",
|
||||
.compatible = "pnpALI,1533,3",
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
||||
|
|
|
@ -10,11 +10,26 @@ extern void set_perf_event_pending(void);
|
|||
|
||||
extern void init_hw_perf_events(void);
|
||||
|
||||
extern void
|
||||
__perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip);
|
||||
|
||||
#define perf_arch_fetch_caller_regs(pt_regs, ip) \
|
||||
__perf_arch_fetch_caller_regs(pt_regs, ip, 1);
|
||||
#define perf_arch_fetch_caller_regs(regs, ip) \
|
||||
do { \
|
||||
unsigned long _pstate, _asi, _pil, _i7, _fp; \
|
||||
__asm__ __volatile__("rdpr %%pstate, %0\n\t" \
|
||||
"rd %%asi, %1\n\t" \
|
||||
"rdpr %%pil, %2\n\t" \
|
||||
"mov %%i7, %3\n\t" \
|
||||
"mov %%i6, %4\n\t" \
|
||||
: "=r" (_pstate), \
|
||||
"=r" (_asi), \
|
||||
"=r" (_pil), \
|
||||
"=r" (_i7), \
|
||||
"=r" (_fp)); \
|
||||
(regs)->tstate = (_pstate << 8) | \
|
||||
(_asi << 24) | (_pil << 20); \
|
||||
(regs)->tpc = (ip); \
|
||||
(regs)->tnpc = (regs)->tpc + 4; \
|
||||
(regs)->u_regs[UREG_I6] = _fp; \
|
||||
(regs)->u_regs[UREG_I7] = _i7; \
|
||||
} while (0)
|
||||
#else
|
||||
static inline void init_hw_perf_events(void) { }
|
||||
#endif
|
||||
|
|
|
@ -260,23 +260,8 @@ static inline unsigned long __copy_to_user(void __user *to, const void *from, un
|
|||
return __copy_user(to, (__force void __user *) from, n);
|
||||
}
|
||||
|
||||
extern void copy_from_user_overflow(void)
|
||||
#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
|
||||
__compiletime_error("copy_from_user() buffer size is not provably correct")
|
||||
#else
|
||||
__compiletime_warning("copy_from_user() buffer size is not provably correct")
|
||||
#endif
|
||||
;
|
||||
|
||||
static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
{
|
||||
int sz = __compiletime_object_size(to);
|
||||
|
||||
if (unlikely(sz != -1 && sz < n)) {
|
||||
copy_from_user_overflow();
|
||||
return n;
|
||||
}
|
||||
|
||||
if (n && __access_ok((unsigned long) from, n))
|
||||
return __copy_user((__force void __user *) to, from, n);
|
||||
else
|
||||
|
|
|
@ -205,14 +205,6 @@ __asm__ __volatile__( \
|
|||
|
||||
extern int __get_user_bad(void);
|
||||
|
||||
extern void copy_from_user_overflow(void)
|
||||
#ifdef CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
|
||||
__compiletime_error("copy_from_user() buffer size is not provably correct")
|
||||
#else
|
||||
__compiletime_warning("copy_from_user() buffer size is not provably correct")
|
||||
#endif
|
||||
;
|
||||
|
||||
extern unsigned long __must_check ___copy_from_user(void *to,
|
||||
const void __user *from,
|
||||
unsigned long size);
|
||||
|
@ -221,16 +213,11 @@ extern unsigned long copy_from_user_fixup(void *to, const void __user *from,
|
|||
static inline unsigned long __must_check
|
||||
copy_from_user(void *to, const void __user *from, unsigned long size)
|
||||
{
|
||||
int sz = __compiletime_object_size(to);
|
||||
unsigned long ret = size;
|
||||
unsigned long ret = ___copy_from_user(to, from, size);
|
||||
|
||||
if (unlikely(ret))
|
||||
ret = copy_from_user_fixup(to, from, size);
|
||||
|
||||
if (likely(sz == -1 || sz >= size)) {
|
||||
ret = ___copy_from_user(to, from, size);
|
||||
if (unlikely(ret))
|
||||
ret = copy_from_user_fixup(to, from, size);
|
||||
} else {
|
||||
copy_from_user_overflow();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#define __copy_from_user copy_from_user
|
||||
|
|
|
@ -46,81 +46,6 @@ stack_trace_flush:
|
|||
nop
|
||||
.size stack_trace_flush,.-stack_trace_flush
|
||||
|
||||
#ifdef CONFIG_PERF_EVENTS
|
||||
.globl __perf_arch_fetch_caller_regs
|
||||
.type __perf_arch_fetch_caller_regs,#function
|
||||
__perf_arch_fetch_caller_regs:
|
||||
/* We always read the %pstate into %o5 since we will use
|
||||
* that to construct a fake %tstate to store into the regs.
|
||||
*/
|
||||
rdpr %pstate, %o5
|
||||
brz,pn %o2, 50f
|
||||
mov %o2, %g7
|
||||
|
||||
/* Turn off interrupts while we walk around the register
|
||||
* window by hand.
|
||||
*/
|
||||
wrpr %o5, PSTATE_IE, %pstate
|
||||
|
||||
/* The %canrestore tells us how many register windows are
|
||||
* still live in the chip above us, past that we have to
|
||||
* walk the frame as saved on the stack. We stash away
|
||||
* the %cwp in %g1 so we can return back to the original
|
||||
* register window.
|
||||
*/
|
||||
rdpr %cwp, %g1
|
||||
rdpr %canrestore, %g2
|
||||
sub %g1, 1, %g3
|
||||
|
||||
/* We have the skip count in %g7, if it hits zero then
|
||||
* %fp/%i7 are the registers we need. Otherwise if our
|
||||
* %canrestore count maintained in %g2 hits zero we have
|
||||
* to start traversing the stack.
|
||||
*/
|
||||
10: brz,pn %g2, 4f
|
||||
sub %g2, 1, %g2
|
||||
wrpr %g3, %cwp
|
||||
subcc %g7, 1, %g7
|
||||
bne,pt %xcc, 10b
|
||||
sub %g3, 1, %g3
|
||||
|
||||
/* We found the values we need in the cpu's register
|
||||
* windows.
|
||||
*/
|
||||
mov %fp, %g3
|
||||
ba,pt %xcc, 3f
|
||||
mov %i7, %g2
|
||||
|
||||
50: mov %fp, %g3
|
||||
ba,pt %xcc, 2f
|
||||
mov %i7, %g2
|
||||
|
||||
/* We hit the end of the valid register windows in the
|
||||
* cpu, start traversing the stack frame.
|
||||
*/
|
||||
4: mov %fp, %g3
|
||||
|
||||
20: ldx [%g3 + STACK_BIAS + RW_V9_I7], %g2
|
||||
subcc %g7, 1, %g7
|
||||
bne,pn %xcc, 20b
|
||||
ldx [%g3 + STACK_BIAS + RW_V9_I6], %g3
|
||||
|
||||
/* Restore the current register window position and
|
||||
* re-enable interrupts.
|
||||
*/
|
||||
3: wrpr %g1, %cwp
|
||||
wrpr %o5, %pstate
|
||||
|
||||
2: stx %g3, [%o0 + PT_V9_FP]
|
||||
sllx %o5, 8, %o5
|
||||
stx %o5, [%o0 + PT_V9_TSTATE]
|
||||
stx %g2, [%o0 + PT_V9_TPC]
|
||||
add %g2, 4, %g2
|
||||
retl
|
||||
stx %g2, [%o0 + PT_V9_TNPC]
|
||||
.size perf_arch_fetch_caller_regs,.-perf_arch_fetch_caller_regs
|
||||
#endif /* CONFIG_PERF_EVENTS */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
.globl hard_smp_processor_id
|
||||
.type hard_smp_processor_id,#function
|
||||
|
|
Loading…
Reference in New Issue
Block a user