Re: [PATCH v2] irqdomain: protect macro variable in domain iterators

From: Nicolas Ferre
Date: Thu Dec 08 2011 - 04:38:19 EST


On 12/02/2011 02:44 PM, Dave Martin :
On Fri, Dec 02, 2011 at 02:30:09PM +0100, Nicolas Ferre wrote:
Signed-off-by: Nicolas Ferre<nicolas.ferre@xxxxxxxxx>

Looks OK to me:

Acked-by: Dave Martin<dave.martin@xxxxxxxxxx>

Rob,

Do you want a different implementation for this. I think it is the simplest way to write this macro...

If it is ok for you, it will be interesting to include this patch quickly so that I will be able to queue my own patches on top of it.
(Cc: stable can be a good idea also).

Best regards,

---
v2: add brackets to each macro variable.

include/linux/irqdomain.h | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index bd4272b..e535063 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -82,12 +82,14 @@ static inline unsigned int irq_domain_to_irq(struct irq_domain *d,
}

#define irq_domain_for_each_hwirq(d, hw) \
- for (hw = d->hwirq_base; hw< d->hwirq_base + d->nr_irq; hw++)
+ for ((hw) = (d)->hwirq_base; \
+ (hw)< (d)->hwirq_base + (d)->nr_irq; \
+ (hw)++)

#define irq_domain_for_each_irq(d, hw, irq) \
- for (hw = d->hwirq_base, irq = irq_domain_to_irq(d, hw); \
- hw< d->hwirq_base + d->nr_irq; \
- hw++, irq = irq_domain_to_irq(d, hw))
+ for ((hw) = (d)->hwirq_base, (irq) = irq_domain_to_irq((d), (hw)); \
+ (hw)< (d)->hwirq_base + (d)->nr_irq; \
+ (hw)++, (irq) = irq_domain_to_irq((d), (hw)))

extern void irq_domain_add(struct irq_domain *domain);
extern void irq_domain_del(struct irq_domain *domain);
--
1.7.5.4




--
Nicolas Ferre
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/