Răsfoiți Sursa

[ARM] VIC: Fix resume sources usage

The resume_mask wasn't being checked in vic_set_wake()
to see if the IRQ was a valid wakeup source.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Ben Dooks 16 ani în urmă
părinte
comite
3f1a567d8a
1 a modificat fișierele cu 6 adăugiri și 2 ștergeri
  1. 6 2
      arch/arm/common/vic.c

+ 6 - 2
arch/arm/common/vic.c

@@ -229,14 +229,18 @@ static int vic_set_wake(unsigned int irq, unsigned int on)
 {
 	struct vic_device *v = vic_from_irq(irq);
 	unsigned int off = irq & 31;
+	u32 bit = 1 << off;
 
 	if (!v)
 		return -EINVAL;
 
+	if (!(bit & v->resume_sources))
+		return -EINVAL;
+
 	if (on)
-		v->resume_irqs |= 1 << off;
+		v->resume_irqs |= bit;
 	else
-		v->resume_irqs &= ~(1 << off);
+		v->resume_irqs &= ~bit;
 
 	return 0;
 }