From 071106ecf68c401173c58808b1cf5f68cc50d390 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 05 Jan 2024 08:39:27 +0000
Subject: [PATCH] change wifi driver to cypress
---
kernel/arch/arm/kernel/process.c | 123 +++++-----------------------------------
1 files changed, 16 insertions(+), 107 deletions(-)
diff --git a/kernel/arch/arm/kernel/process.c b/kernel/arch/arm/kernel/process.c
index b9103af..47a30ff 100644
--- a/kernel/arch/arm/kernel/process.c
+++ b/kernel/arch/arm/kernel/process.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-only
/*
* linux/arch/arm/kernel/process.c
*
* Copyright (C) 1996-2000 Russell King - Converted to ARM.
* Original Copyright (C) 1995 Linus Torvalds
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
*/
#include <stdarg.h>
@@ -39,7 +36,9 @@
#include <asm/tls.h>
#include <asm/vdso.h>
-#ifdef CONFIG_STACKPROTECTOR
+#include "signal.h"
+
+#if defined(CONFIG_STACKPROTECTOR) && !defined(CONFIG_STACKPROTECTOR_PER_TASK)
#include <linux/stackprotector.h>
unsigned long __stack_chk_guard __read_mostly;
EXPORT_SYMBOL(__stack_chk_guard);
@@ -72,7 +71,7 @@
arm_pm_idle();
else
cpu_do_idle();
- local_irq_enable();
+ raw_local_irq_enable();
}
void arch_cpu_idle_prepare(void)
@@ -93,77 +92,6 @@
{
ledtrig_cpu(CPU_LED_IDLE_END);
idle_notifier_call_chain(IDLE_END);
-}
-
-/*
- * dump a block of kernel memory from around the given address
- */
-static void show_data(unsigned long addr, int nbytes, const char *name)
-{
- int i, j;
- int nlines;
- u32 *p;
-
- /*
- * don't attempt to dump non-kernel addresses or
- * values that are probably just small negative numbers
- */
- if (addr < PAGE_OFFSET || addr > -256UL)
- return;
-
- printk("\n%s: %#lx:\n", name, addr);
-
- /*
- * round address down to a 32 bit boundary
- * and always dump a multiple of 32 bytes
- */
- p = (u32 *)(addr & ~(sizeof(u32) - 1));
- nbytes += (addr & (sizeof(u32) - 1));
- nlines = (nbytes + 31) / 32;
-
-
- for (i = 0; i < nlines; i++) {
- /*
- * just display low 16 bits of address to keep
- * each line of the dump < 80 characters
- */
- printk("%04lx ", (unsigned long)p & 0xffff);
- for (j = 0; j < 8; j++) {
- u32 data;
- if (probe_kernel_address(p, data)) {
- pr_cont(" ********");
- } else {
- pr_cont(" %08x", data);
- }
- ++p;
- }
- pr_cont("\n");
- }
-}
-
-static void show_extra_register_data(struct pt_regs *regs, int nbytes)
-{
- mm_segment_t fs;
-
- fs = get_fs();
- set_fs(KERNEL_DS);
- show_data(regs->ARM_pc - nbytes, nbytes * 2, "PC");
- show_data(regs->ARM_lr - nbytes, nbytes * 2, "LR");
- show_data(regs->ARM_sp - nbytes, nbytes * 2, "SP");
- show_data(regs->ARM_ip - nbytes, nbytes * 2, "IP");
- show_data(regs->ARM_fp - nbytes, nbytes * 2, "FP");
- show_data(regs->ARM_r0 - nbytes, nbytes * 2, "R0");
- show_data(regs->ARM_r1 - nbytes, nbytes * 2, "R1");
- show_data(regs->ARM_r2 - nbytes, nbytes * 2, "R2");
- show_data(regs->ARM_r3 - nbytes, nbytes * 2, "R3");
- show_data(regs->ARM_r4 - nbytes, nbytes * 2, "R4");
- show_data(regs->ARM_r5 - nbytes, nbytes * 2, "R5");
- show_data(regs->ARM_r6 - nbytes, nbytes * 2, "R6");
- show_data(regs->ARM_r7 - nbytes, nbytes * 2, "R7");
- show_data(regs->ARM_r8 - nbytes, nbytes * 2, "R8");
- show_data(regs->ARM_r9 - nbytes, nbytes * 2, "R9");
- show_data(regs->ARM_r10 - nbytes, nbytes * 2, "R10");
- set_fs(fs);
}
void __show_regs(struct pt_regs *regs)
@@ -223,7 +151,7 @@
if ((domain & domain_mask(DOMAIN_USER)) ==
domain_val(DOMAIN_USER, DOMAIN_NOACCESS))
segment = "none";
- else if (fs == get_ds())
+ else if (fs == KERNEL_DS)
segment = "kernel";
else
segment = "user";
@@ -257,8 +185,6 @@
printk("Control: %08x%s\n", ctrl, buf);
}
#endif
-
- show_extra_register_data(regs, 128);
}
void show_regs(struct pt_regs * regs)
@@ -301,9 +227,8 @@
asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
-int
-copy_thread(unsigned long clone_flags, unsigned long stack_start,
- unsigned long stk_sz, struct task_struct *p)
+int copy_thread(unsigned long clone_flags, unsigned long stack_start,
+ unsigned long stk_sz, struct task_struct *p, unsigned long tls)
{
struct thread_info *thread = task_thread_info(p);
struct pt_regs *childregs = task_pt_regs(p);
@@ -320,7 +245,7 @@
thread->cpu_domain = get_domain();
#endif
- if (likely(!(p->flags & PF_KTHREAD))) {
+ if (likely(!(p->flags & (PF_KTHREAD | PF_IO_WORKER)))) {
*childregs = *current_pt_regs();
childregs->ARM_r0 = 0;
if (stack_start)
@@ -337,10 +262,14 @@
clear_ptrace_hw_breakpoint(p);
if (clone_flags & CLONE_SETTLS)
- thread->tp_value[0] = childregs->ARM_r3;
+ thread->tp_value[0] = tls;
thread->tp_value[1] = get_tpuser();
thread_notify(THREAD_NOTIFY_COPY, thread);
+
+#ifdef CONFIG_STACKPROTECTOR_PER_TASK
+ thread->stack_canary = p->stack_canary;
+#endif
return 0;
}
@@ -353,21 +282,6 @@
elf_core_copy_regs(elfregs, task_pt_regs(t));
return 1;
}
-
-/*
- * fill in the fpe structure for a core dump...
- */
-int dump_fpu (struct pt_regs *regs, struct user_fp *fp)
-{
- struct thread_info *thread = current_thread_info();
- int used_math = thread->used_cp[1] | thread->used_cp[2];
-
- if (used_math)
- memcpy(fp, &thread->fpstate.soft, sizeof (*fp));
-
- return used_math != 0;
-}
-EXPORT_SYMBOL(dump_fpu);
unsigned long get_wchan(struct task_struct *p)
{
@@ -391,11 +305,6 @@
return frame.pc;
} while (count ++ < 16);
return 0;
-}
-
-unsigned long arch_randomize_brk(struct mm_struct *mm)
-{
- return randomize_page(mm->brk, 0x02000000);
}
#ifdef CONFIG_MMU
@@ -508,7 +417,7 @@
npages = 1; /* for sigpage */
npages += vdso_total_pages;
- if (down_write_killable(&mm->mmap_sem))
+ if (mmap_write_lock_killable(mm))
return -EINTR;
hint = sigpage_addr(mm, npages);
addr = get_unmapped_area(NULL, hint, npages << PAGE_SHIFT, 0, 0);
@@ -535,7 +444,7 @@
arm_install_vdso(mm, addr + PAGE_SIZE);
up_fail:
- up_write(&mm->mmap_sem);
+ mmap_write_unlock(mm);
return ret;
}
#endif
--
Gitblit v1.6.2