mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
To: linux-kernel@vger.kernel.org
Cc: uclinux-dist-devel@blackfin.uclinux.org, Yi Li <yi.li@analog.com>
Subject: [PATCH 58/72] Blackfin: use raw_smp_processor_id() in exception code
Date: Mon, 14 Sep 2009 16:08:02 -0400	[thread overview]
Message-ID: <1252958896-25150-59-git-send-email-vapier@gentoo.org> (raw)
In-Reply-To: <1252958896-25150-1-git-send-email-vapier@gentoo.org>

From: Yi Li <yi.li@analog.com>

When preempt debugging is enabled, smp_processor_id() may utilize the
"current" structure.  This may not be safe to access under all exceptions
due to it being in dynamically allocated memory.  So in exception code,
make sure we use raw_smp_processor_id() instead to get at the real value
directly.

Signed-off-by: Yi Li <yi.li@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 arch/blackfin/kernel/cplb-mpu/cplbmgr.c   |    2 +-
 arch/blackfin/kernel/cplb-nompu/cplbmgr.c |    2 +-
 arch/blackfin/kernel/traps.c              |   12 ++++++------
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
index 651b127..8e1e9e9 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
@@ -280,7 +280,7 @@ static noinline int dcplb_protection_fault(unsigned int cpu)
 int cplb_hdr(int seqstat, struct pt_regs *regs)
 {
 	int cause = seqstat & 0x3f;
-	unsigned int cpu = smp_processor_id();
+	unsigned int cpu = raw_smp_processor_id();
 	switch (cause) {
 	case 0x23:
 		return dcplb_protection_fault(cpu);
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbmgr.c b/arch/blackfin/kernel/cplb-nompu/cplbmgr.c
index aabbb42..d9ea46c 100644
--- a/arch/blackfin/kernel/cplb-nompu/cplbmgr.c
+++ b/arch/blackfin/kernel/cplb-nompu/cplbmgr.c
@@ -202,7 +202,7 @@ MGR_ATTR static int dcplb_miss(int cpu)
 MGR_ATTR int cplb_hdr(int seqstat, struct pt_regs *regs)
 {
 	int cause = seqstat & 0x3f;
-	unsigned int cpu = smp_processor_id();
+	unsigned int cpu = raw_smp_processor_id();
 	switch (cause) {
 	case VEC_CPLB_I_M:
 		return icplb_miss(cpu);
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index 7b3ba06..56464cb 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -227,7 +227,7 @@ asmlinkage void double_fault_c(struct pt_regs *fp)
 	printk(KERN_EMERG "Double Fault\n");
 #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT
 	if (((long)fp->seqstat &  SEQSTAT_EXCAUSE) == VEC_UNCOV) {
-		unsigned int cpu = smp_processor_id();
+		unsigned int cpu = raw_smp_processor_id();
 		char buf[150];
 		decode_address(buf, cpu_pda[cpu].retx_doublefault);
 		printk(KERN_EMERG "While handling exception (EXCAUSE = 0x%x) at %s:\n",
@@ -263,7 +263,7 @@ asmlinkage notrace void trap_c(struct pt_regs *fp)
 	int j;
 #endif
 #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
-	unsigned int cpu = smp_processor_id();
+	unsigned int cpu = raw_smp_processor_id();
 #endif
 	const char *strerror = NULL;
 	int sig = 0;
@@ -1098,7 +1098,7 @@ void show_regs(struct pt_regs *fp)
 	struct irqaction *action;
 	unsigned int i;
 	unsigned long flags = 0;
-	unsigned int cpu = smp_processor_id();
+	unsigned int cpu = raw_smp_processor_id();
 	unsigned char in_atomic = (bfin_read_IPEND() & 0x10) || in_atomic();
 
 	verbose_printk(KERN_NOTICE "\n");
@@ -1126,13 +1126,13 @@ void show_regs(struct pt_regs *fp)
 
 	verbose_printk(KERN_NOTICE "\nSEQUENCER STATUS:\t\t%s\n", print_tainted());
 	verbose_printk(KERN_NOTICE " SEQSTAT: %08lx  IPEND: %04lx  IMASK: %04lx  SYSCFG: %04lx\n",
-		(long)fp->seqstat, fp->ipend, cpu_pda[smp_processor_id()].ex_imask, fp->syscfg);
+		(long)fp->seqstat, fp->ipend, cpu_pda[raw_smp_processor_id()].ex_imask, fp->syscfg);
 	if (fp->ipend & EVT_IRPTEN)
 		verbose_printk(KERN_NOTICE "  Global Interrupts Disabled (IPEND[4])\n");
-	if (!(cpu_pda[smp_processor_id()].ex_imask & (EVT_IVG13 | EVT_IVG12 | EVT_IVG11 |
+	if (!(cpu_pda[raw_smp_processor_id()].ex_imask & (EVT_IVG13 | EVT_IVG12 | EVT_IVG11 |
 			EVT_IVG10 | EVT_IVG9 | EVT_IVG8 | EVT_IVG7 | EVT_IVTMR)))
 		verbose_printk(KERN_NOTICE "  Peripheral interrupts masked off\n");
-	if (!(cpu_pda[smp_processor_id()].ex_imask & (EVT_IVG15 | EVT_IVG14)))
+	if (!(cpu_pda[raw_smp_processor_id()].ex_imask & (EVT_IVG15 | EVT_IVG14)))
 		verbose_printk(KERN_NOTICE "  Kernel interrupts masked off\n");
 	if ((fp->seqstat & SEQSTAT_EXCAUSE) == VEC_HWERR) {
 		verbose_printk(KERN_NOTICE "  HWERRCAUSE: 0x%lx\n",
-- 
1.6.4.2


  parent reply	other threads:[~2009-09-14 20:09 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-14 20:07 [PATCH 00/72] Blackfin updates for 2.6.32 Mike Frysinger
2009-09-14 20:07 ` [PATCH 01/72] Blackfin: bf537-stamp: update ADP5588 header name Mike Frysinger
2009-09-14 20:07 ` [PATCH 02/72] Blackfin: bf537-stamp: declare SPI IRQ resources Mike Frysinger
2009-09-14 20:07 ` [PATCH 03/72] Blackfin: bf537-stamp: add resources for AD1938 audio card Mike Frysinger
2009-09-14 20:07 ` [PATCH 04/72] Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4] Mike Frysinger
2009-09-14 20:07 ` [PATCH 05/72] Blackfin: checkpatch --file arch/blackfin/kernel/ipipe.c Mike Frysinger
2009-09-14 20:07 ` [PATCH 06/72] Blackfin: fix misnomer of some I-pipe helpers Mike Frysinger
2009-09-14 20:07 ` [PATCH 07/72] Blackfin: export show_stack() to modules Mike Frysinger
2009-09-14 20:07 ` [PATCH 08/72] Blackfin: allow high priority domains to preempt schedule_tail() Mike Frysinger
2009-09-14 20:07 ` [PATCH 09/72] Blackfin: use generic name for EVT14 handler Mike Frysinger
2009-09-14 20:07 ` [PATCH 10/72] Blackfin: reuse evt_evt14 handler to perform irqtail epilogue Mike Frysinger
2009-09-14 20:07 ` [PATCH 11/72] Blackfin: allow EVT5 to preempt irqtail prologue (CONFIG_DEBUG_HWERR) Mike Frysinger
2009-09-14 20:07 ` [PATCH 12/72] Blackfin: document __ipipe_call_irqtail Mike Frysinger
2009-09-14 20:07 ` [PATCH 13/72] Blackfin: sanitize manual control of IPEND[4] Mike Frysinger
2009-09-14 20:07 ` [PATCH 14/72] Blackfin: inline I-pipe bypass code in ret_from_exception Mike Frysinger
2009-09-14 20:07 ` [PATCH 15/72] Blackfin: cleanup traps decode_address() a bit Mike Frysinger
2009-09-14 20:07 ` [PATCH 16/72] Blackfin: convert ptrace to new memory functions Mike Frysinger
2009-09-14 20:07 ` [PATCH 17/72] Blackfin: reject outdated/unused/wrong relocation types Mike Frysinger
2009-09-14 20:07 ` [PATCH 18/72] Blackfin: cleanup printk() usage in module code Mike Frysinger
2009-09-14 20:07 ` [PATCH 19/72] Blackfin: convert malloc()/memset() to zalloc() " Mike Frysinger
2009-09-14 20:07 ` [PATCH 20/72] Blackfin: cleanup module section checking Mike Frysinger
2009-09-14 20:07 ` [PATCH 21/72] Blackfin: fix module reloc handling for all memory regions Mike Frysinger
2009-09-14 20:07 ` [PATCH 22/72] Blackfin: clean up early memory setup code Mike Frysinger
2009-09-14 20:07 ` [PATCH 23/72] Blackfin: rename PCF8574 driver config Mike Frysinger
2009-09-14 20:07 ` [PATCH 24/72] Blackfin: unify duplicated SMP checks in L2 cache kconfig Mike Frysinger
2009-09-14 20:07 ` [PATCH 25/72] Blackfin: push SRAM locks down into related ifdefs Mike Frysinger
2009-09-14 20:07 ` [PATCH 26/72] Blackfin: add support for common FDPIC ptrace requests Mike Frysinger
2009-09-14 20:07 ` [PATCH 27/72] Blackfin: add an early shadow console Mike Frysinger
2009-09-14 20:07 ` [PATCH 28/72] Blackfin: catch hardware errors earlier during booting Mike Frysinger
2009-09-14 20:07 ` [PATCH 29/72] Blackfin: fix BF548 UART0 DMA IRQ translation Mike Frysinger
2009-09-14 20:07 ` [PATCH 30/72] Blackfin: bf538: add bfin_clear_PPI_STATUS() helper Mike Frysinger
2009-09-14 20:07 ` [PATCH 31/72] Blackfin: bf533-stamp: add resources for mmc_spi card Mike Frysinger
2009-09-14 20:07 ` [PATCH 32/72] Blackfin: do not try displaying the end of the stack Mike Frysinger
2009-09-14 20:07 ` [PATCH 33/72] Blackfin: bf537-stamp: update AD714x resources Mike Frysinger
2009-09-14 20:07 ` [PATCH 34/72] Blackfin: clean up duplicate I2C device type definitions Mike Frysinger
2009-09-14 20:07 ` [PATCH 35/72] Blackfin: fix MPU handling of invalid memory accesses Mike Frysinger
2009-09-14 20:07 ` [PATCH 36/72] Blackfin: bf533-stamp: fix typo in SPI frequency for ad1836 codec Mike Frysinger
2009-09-14 20:07 ` [PATCH 37/72] Blackfin: improve double fault debug handling Mike Frysinger
2009-09-14 20:07 ` [PATCH 38/72] Blackfin: bf537-stamp: drop ATA interrupt probe workaround Mike Frysinger
2009-09-14 20:07 ` [PATCH 39/72] Blackfin: convert boards to use platform data with smc91x Mike Frysinger
2009-09-14 20:07 ` [PATCH 40/72] Blackfin: drop unused MMR defines that only cause bad code to be written Mike Frysinger
2009-09-14 20:07 ` [PATCH 41/72] Blackfin: cm-bf527/bf537-stamp: fix dm9000 resources Mike Frysinger
2009-09-14 20:07 ` [PATCH 42/72] Blackfin: bf548-ezkit: fix incorrect LCD size parameters Mike Frysinger
2009-09-14 20:07 ` [PATCH 43/72] Blackfin: fix read buffer overflow Mike Frysinger
2009-09-14 20:07 ` [PATCH 44/72] Blackfin: bf538-ezkit: add resources for parallel flash Mike Frysinger
2009-09-14 20:07 ` [PATCH 45/72] Blackfin: update anomaly lists Mike Frysinger
2009-09-14 20:07 ` [PATCH 46/72] Blackfin: bf537-stamp: update ad1836 resources Mike Frysinger
2009-09-14 20:07 ` [PATCH 47/72] Blackfin: cleanup sync handling when enabling/disabling cplbs Mike Frysinger
2009-09-14 20:07 ` [PATCH 48/72] Blackfin: SMP port does not yet support cpu frequency scaling Mike Frysinger
2009-09-14 20:07 ` [PATCH 49/72] Blackfin: fix BF522/BF523 max VCO mixup Mike Frysinger
2009-09-14 20:07 ` [PATCH 50/72] Blackfin: do not trace the exception handler Mike Frysinger
2009-09-14 20:07 ` [PATCH 51/72] Blackfin: drop board resources for dead devices (pbx/ad9960) Mike Frysinger
2009-09-14 20:07 ` [PATCH 52/72] Blackfin: punt dead cache locking code Mike Frysinger
2009-09-14 20:07 ` [PATCH 53/72] Blackfin: delete '-spi' suffix in ad1836/ad1938 driver name Mike Frysinger
2009-09-14 20:07 ` [PATCH 54/72] Blackfin: optimize fixed code handling for the most common case Mike Frysinger
2009-09-14 20:07 ` [PATCH 55/72] Blackfin: handle the core timer interrupt with handle_percpu_irq on SMP Mike Frysinger
2009-09-14 20:08 ` [PATCH 56/72] Blackfin: Fix link errors with binutils 2.19 and GCC 4.3 Mike Frysinger
2009-09-14 20:08 ` [PATCH 57/72] Blackfin: remove useless duplicated assignment in gpio code Mike Frysinger
2009-09-14 20:08 ` Mike Frysinger [this message]
2009-09-14 20:08 ` [PATCH 59/72] Blackfin: fix spelling in a few comments Mike Frysinger
2009-09-14 20:08 ` [PATCH 60/72] Blackfin: workaround anomaly 05000283 Mike Frysinger
2009-09-14 20:08 ` [PATCH 61/72] Blackfin: add some isram-driver self tests Mike Frysinger
2009-09-14 20:08 ` [PATCH 62/72] Blackfin: bf537-stamp: add adp5588 gpio resources Mike Frysinger
2009-09-14 20:08 ` [PATCH 63/72] Blackfin: fix typo in isram_write() Mike Frysinger
2009-09-14 20:08 ` [PATCH 64/72] Blackfin: fix BF54x SPI CS resources Mike Frysinger
2009-09-14 20:08 ` [PATCH 65/72] Blackfin: use KERN_ALERT in all kgdb_test output Mike Frysinger
2009-09-14 20:08 ` [PATCH 66/72] Blackfin: add ICPLB coverage for async banks Mike Frysinger
2009-09-14 20:08 ` [PATCH 67/72] Blackfin: increase default async timings for parallel flashes Mike Frysinger
2009-09-14 20:08 ` [PATCH 68/72] Blackfin: bf538-ezkit: add SPI IRQ resources Mike Frysinger
2009-09-14 20:08 ` [PATCH 69/72] Blackfin: cm-bf537u: split board from cm-bf537e Mike Frysinger
2009-09-14 20:08 ` [PATCH 70/72] Blackfin: update cm board resources Mike Frysinger
2009-09-14 20:08 ` [PATCH 71/72] Blackfin: update ftrace_push_return_trace() breakage Mike Frysinger
2009-09-14 20:08 ` [PATCH 72/72] Blackfin: swap clocksource ratings for gptimer/cycles Mike Frysinger
2009-09-14 20:50 ` [PATCH 00/72] Blackfin updates for 2.6.32 Daniel Walker
2009-09-14 20:57   ` Mike Frysinger
2009-09-14 21:04     ` Daniel Walker
2009-09-14 21:07       ` Mike Frysinger
2009-09-14 21:21         ` Daniel Walker
2009-09-14 22:17           ` Mike Frysinger
2009-09-14 22:36             ` Daniel Walker
2009-09-16  2:54               ` Mike Frysinger
2009-09-16  2:56               ` Mike Frysinger
2009-09-16  3:06                 ` Daniel Walker
2009-09-16  3:21                   ` Mike Frysinger
2009-09-16  3:59                     ` Daniel Walker
2009-09-16  4:13                       ` Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1252958896-25150-59-git-send-email-vapier@gentoo.org \
    --to=vapier@gentoo.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=uclinux-dist-devel@blackfin.uclinux.org \
    --cc=yi.li@analog.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®