Browse Source

[Blackfin] arch: dump the stack before printing out an error otherwise the stack dump is useless as it shows us tracing through printk

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Mike Frysinger 17 years ago
parent
commit
f85c4abdbc
1 changed files with 7 additions and 7 deletions
  1. 7 7
      arch/blackfin/kernel/bfin_gpio.c

+ 7 - 7
arch/blackfin/kernel/bfin_gpio.c

@@ -821,10 +821,10 @@ int peripheral_request(unsigned short per, const char *label)
 	local_irq_save(flags);
 
 	if (unlikely(reserved_gpio_map[gpio_bank(ident)] & gpio_bit(ident))) {
+		dump_stack();
 		printk(KERN_ERR
 		    "%s: Peripheral %d is already reserved as GPIO by %s !\n",
 		       __FUNCTION__, ident, get_label(ident));
-		dump_stack();
 		local_irq_restore(flags);
 		return -EBUSY;
 	}
@@ -848,10 +848,10 @@ int peripheral_request(unsigned short per, const char *label)
 		if (cmp_label(ident, label) == 0)
 			goto anyway;
 
+			dump_stack();
 			printk(KERN_ERR
 			       "%s: Peripheral %d function %d is already reserved by %s !\n",
 			       __FUNCTION__, ident, P_FUNCT2MUX(per), get_label(ident));
-			dump_stack();
 			local_irq_restore(flags);
 			return -EBUSY;
 		}
@@ -891,10 +891,10 @@ int peripheral_request(unsigned short per, const char *label)
 	if (!check_gpio(ident)) {
 
 	if (unlikely(reserved_gpio_map[gpio_bank(ident)] & gpio_bit(ident))) {
+		dump_stack();
 		printk(KERN_ERR
 		       "%s: Peripheral %d is already reserved as GPIO by %s !\n",
 		       __FUNCTION__, ident, get_label(ident));
-		dump_stack();
 		local_irq_restore(flags);
 		return -EBUSY;
 	}
@@ -918,12 +918,12 @@ int peripheral_request(unsigned short per, const char *label)
 		if (cmp_label(ident, label) == 0)
 			goto anyway;
 
+			dump_stack();
 			printk(KERN_ERR
 			       "%s: Peripheral %d function %d is already"
 			       " reserved by %s !\n",
 			       __FUNCTION__, ident, P_FUNCT2MUX(per),
 				get_label(ident));
-			dump_stack();
 			local_irq_restore(flags);
 			return -EBUSY;
 		}
@@ -1046,17 +1046,17 @@ int gpio_request(unsigned gpio, const char *label)
 	}
 
 	if (unlikely(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
+		dump_stack();
 		printk(KERN_ERR "bfin-gpio: GPIO %d is already reserved by %s !\n",
 			 gpio, get_label(gpio));
-		dump_stack();
 		local_irq_restore(flags);
 		return -EBUSY;
 	}
 	if (unlikely(reserved_peri_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
+		dump_stack();
 		printk(KERN_ERR
 		       "bfin-gpio: GPIO %d is already reserved as Peripheral by %s !\n",
 		       gpio, get_label(gpio));
-		dump_stack();
 		local_irq_restore(flags);
 		return -EBUSY;
 	}
@@ -1082,8 +1082,8 @@ void gpio_free(unsigned gpio)
 	local_irq_save(flags);
 
 	if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
-		gpio_error(gpio);
 		dump_stack();
+		gpio_error(gpio);
 		local_irq_restore(flags);
 		return;
 	}