sh: Sanitize sparse irq

Switch over to the new allocator functions.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
diff --git a/drivers/sh/intc/dynamic.c b/drivers/sh/intc/dynamic.c
index 6caecdf..e994c7e 100644
--- a/drivers/sh/intc/dynamic.c
+++ b/drivers/sh/intc/dynamic.c
@@ -37,7 +37,6 @@
 {
 	unsigned int irq = 0, new;
 	unsigned long flags;
-	struct irq_desc *desc;
 
 	raw_spin_lock_irqsave(&vector_lock, flags);
 
@@ -55,24 +54,20 @@
 		__set_bit(new, intc_irq_map);
 	}
 
-	desc = irq_to_desc_alloc_node(new, node);
-	if (unlikely(!desc)) {
+	raw_spin_unlock_irqrestore(&vector_lock, flags);
+
+	irq = irq_alloc_desc_at(new, node);
+	if (unlikely(irq != new)) {
 		pr_err("can't get irq_desc for %d\n", new);
-		goto out_unlock;
+		return 0;
 	}
 
-	desc = move_irq_desc(desc, node);
-	irq = new;
+	activate_irq(irq);
+	return 0;
 
 out_unlock:
 	raw_spin_unlock_irqrestore(&vector_lock, flags);
-
-	if (irq > 0) {
-		dynamic_irq_init(irq);
-		activate_irq(irq);
-	}
-
-	return irq;
+	return 0;
 }
 
 int create_irq(void)
@@ -91,7 +86,7 @@
 {
 	unsigned long flags;
 
-	dynamic_irq_cleanup(irq);
+	irq_free_desc(irq);
 
 	raw_spin_lock_irqsave(&vector_lock, flags);
 	__clear_bit(irq, intc_irq_map);