Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2b35e00 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ARM fixes from Russell King:
 "A small number of small fixes for ARM, mostly for some build issues.

  One fix for a regression caused by the cpu hotplug conversion from a
  few kernel versions ago"

* 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
  ARM: 8750/1: deflate_xip_data.sh: minor fixes
  ARM: 8748/1: mm: Define vdso_start, vdso_end as array
  ARM: 8747/1: make CONFIG_DEBUG_WX depend on MMU
  ARM: 8746/1: vfp: Go back to clearing vfp_current_hw_state[]
parents fd9adc40 1b8837b6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ config ARM_PTDUMP_DEBUGFS

config DEBUG_WX
	bool "Warn on W+X mappings at boot"
	depends on MMU
	select ARM_PTDUMP_CORE
	---help---
		Generate a warning if any W+X mappings are found at boot.
+3 −3
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ esac

sym_val() {
	# extract hex value for symbol in $1
	local val=$($NM "$VMLINUX" | sed -n "/ $1$/{s/ .*$//p;q}")
	local val=$($NM "$VMLINUX" 2>/dev/null | sed -n "/ $1\$/{s/ .*$//p;q}")
	[ "$val" ] || { echo "can't find $1 in $VMLINUX" 1>&2; exit 1; }
	# convert from hex to decimal
	echo $((0x$val))
@@ -48,12 +48,12 @@ data_end=$(($_edata_loc - $base_offset))
file_end=$(stat -c "%s" "$XIPIMAGE")
if [ "$file_end" != "$data_end" ]; then
	printf "end of xipImage doesn't match with _edata_loc (%#x vs %#x)\n" \
	       $(($file_end + $base_offset)) $_edata_loc 2>&1
	       $(($file_end + $base_offset)) $_edata_loc 1>&2
	exit 1;
fi

# be ready to clean up
trap 'rm -f "$XIPIMAGE.tmp"' 0 1 2 3
trap 'rm -f "$XIPIMAGE.tmp"; exit 1' 1 2 3

# substitute the data section by a compressed version
$DD if="$XIPIMAGE" count=$data_start iflag=count_bytes of="$XIPIMAGE.tmp"
+0 −2
Original line number Diff line number Diff line
@@ -12,8 +12,6 @@ struct mm_struct;

void arm_install_vdso(struct mm_struct *mm, unsigned long addr);

extern char vdso_start, vdso_end;

extern unsigned int vdso_total_pages;

#else /* CONFIG_VDSO */
+7 −5
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@

static struct page **vdso_text_pagelist;

extern char vdso_start[], vdso_end[];

/* Total number of pages needed for the data and text portions of the VDSO. */
unsigned int vdso_total_pages __ro_after_init;

@@ -197,13 +199,13 @@ static int __init vdso_init(void)
	unsigned int text_pages;
	int i;

	if (memcmp(&vdso_start, "\177ELF", 4)) {
	if (memcmp(vdso_start, "\177ELF", 4)) {
		pr_err("VDSO is not a valid ELF object!\n");
		return -ENOEXEC;
	}

	text_pages = (&vdso_end - &vdso_start) >> PAGE_SHIFT;
	pr_debug("vdso: %i text pages at base %p\n", text_pages, &vdso_start);
	text_pages = (vdso_end - vdso_start) >> PAGE_SHIFT;
	pr_debug("vdso: %i text pages at base %p\n", text_pages, vdso_start);

	/* Allocate the VDSO text pagelist */
	vdso_text_pagelist = kcalloc(text_pages, sizeof(struct page *),
@@ -218,7 +220,7 @@ static int __init vdso_init(void)
	for (i = 0; i < text_pages; i++) {
		struct page *page;

		page = virt_to_page(&vdso_start + i * PAGE_SIZE);
		page = virt_to_page(vdso_start + i * PAGE_SIZE);
		vdso_text_pagelist[i] = page;
	}

@@ -229,7 +231,7 @@ static int __init vdso_init(void)

	cntvct_ok = cntvct_functional();

	patch_vdso(&vdso_start);
	patch_vdso(vdso_start);

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -648,7 +648,7 @@ int vfp_restore_user_hwstate(struct user_vfp __user *ufp,
 */
static int vfp_dying_cpu(unsigned int cpu)
{
	vfp_force_reload(cpu, current_thread_info());
	vfp_current_hw_state[cpu] = NULL;
	return 0;
}