Commit 55de35d3 authored by popcornmix's avatar popcornmix
Browse files

Merge remote-tracking branch 'stable/linux-4.14.y' into rpi-4.14.y

parents 0ae646cb f4c88459
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 66
SUBLEVEL = 67
EXTRAVERSION =
NAME = Petit Gorille

@@ -357,9 +357,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
	  else if [ -x /bin/bash ]; then echo /bin/bash; \
	  else echo sh; fi ; fi)

HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS)
HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS)
HOST_LFS_LIBS := $(shell getconf LFS_LIBS)
HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null)
HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null)
HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null)

HOSTCC       = gcc
HOSTCXX      = g++
+1 −14
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ endif

KBUILD_DEFCONFIG := nsim_700_defconfig

cflags-y	+= -fno-common -pipe -fno-builtin -D__linux__
cflags-y	+= -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
cflags-$(CONFIG_ISA_ARCOMPACT)	+= -mA7
cflags-$(CONFIG_ISA_ARCV2)	+= -mcpu=archs

@@ -140,16 +140,3 @@ dtbs: scripts

archclean:
	$(Q)$(MAKE) $(clean)=$(boot)

# Hacks to enable final link due to absence of link-time branch relexation
# and gcc choosing optimal(shorter) branches at -O3
#
# vineetg Feb 2010: -mlong-calls switched off for overall kernel build
# However lib/decompress_inflate.o (.init.text) calls
# zlib_inflate_workspacesize (.text) causing relocation errors.
# Thus forcing all exten calls in this file to be long calls
export CFLAGS_decompress_inflate.o = -mmedium-calls
export CFLAGS_initramfs.o = -mmedium-calls
ifdef CONFIG_SMP
export CFLAGS_core.o = -mmedium-calls
endif
+0 −2
Original line number Diff line number Diff line
@@ -34,9 +34,7 @@ struct machine_desc {
	const char		*name;
	const char		**dt_compat;
	void			(*init_early)(void);
#ifdef CONFIG_SMP
	void			(*init_per_cpu)(unsigned int);
#endif
	void			(*init_machine)(void);
	void			(*init_late)(void);

+1 −1
Original line number Diff line number Diff line
@@ -31,10 +31,10 @@ void __init init_IRQ(void)
	/* a SMP H/w block could do IPI IRQ request here */
	if (plat_smp_ops.init_per_cpu)
		plat_smp_ops.init_per_cpu(smp_processor_id());
#endif

	if (machine_desc->init_per_cpu)
		machine_desc->init_per_cpu(smp_processor_id());
#endif
}

/*
+36 −11
Original line number Diff line number Diff line
@@ -47,7 +47,8 @@ SYSCALL_DEFINE0(arc_gettls)
SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new)
{
	struct pt_regs *regs = current_pt_regs();
	int uval = -EFAULT;
	u32 uval;
	int ret;

	/*
	 * This is only for old cores lacking LLOCK/SCOND, which by defintion
@@ -60,23 +61,47 @@ SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new)
	/* Z indicates to userspace if operation succeded */
	regs->status32 &= ~STATUS_Z_MASK;

	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
		return -EFAULT;
	ret = access_ok(VERIFY_WRITE, uaddr, sizeof(*uaddr));
	if (!ret)
		 goto fail;

again:
	preempt_disable();

	if (__get_user(uval, uaddr))
		goto done;
	ret = __get_user(uval, uaddr);
	if (ret)
		 goto fault;

	if (uval != expected)
		 goto out;

	ret = __put_user(new, uaddr);
	if (ret)
		 goto fault;

	if (uval == expected) {
		if (!__put_user(new, uaddr))
	regs->status32 |= STATUS_Z_MASK;
	}

done:
out:
	preempt_enable();

	return uval;

fault:
	preempt_enable();

	if (unlikely(ret != -EFAULT))
		 goto fail;

	down_read(&current->mm->mmap_sem);
	ret = fixup_user_fault(current, current->mm, (unsigned long) uaddr,
			       FAULT_FLAG_WRITE, NULL);
	up_read(&current->mm->mmap_sem);

	if (likely(!ret))
		 goto again;

fail:
	force_sig(SIGSEGV, current);
	return ret;
}

#ifdef CONFIG_ISA_ARCV2
Loading