diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/futex.c | 8 | ||||
-rw-r--r-- | kernel/irq/manage.c | 16 |
2 files changed, 14 insertions, 10 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index 6c91f938005..15caf93e4a4 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -630,8 +630,10 @@ static int futex_wake(u32 __user *uaddr, int nr_wake) list_for_each_entry_safe(this, next, head, list) { if (match_futex (&this->key, &key)) { - if (this->pi_state) - return -EINVAL; + if (this->pi_state) { + ret = -EINVAL; + break; + } wake_futex(this); if (++ret >= nr_wake) break; @@ -1208,7 +1210,7 @@ static int do_futex_lock_pi(u32 __user *uaddr, int detect, int trylock, } down_read(&curr->mm->mmap_sem); - hb = queue_lock(&q, -1, NULL); + spin_lock(q.lock_ptr); /* * Got the lock. We might not be the anticipated owner if we diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index b7117e81ac5..fcce5181e45 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -114,7 +114,7 @@ void enable_irq(unsigned int irq) spin_lock_irqsave(&desc->lock, flags); switch (desc->depth) { case 0: - printk(KERN_WARNING "Unablanced enable_irq(%d)\n", irq); + printk(KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); WARN_ON(1); break; case 1: { @@ -236,7 +236,8 @@ int setup_irq(unsigned int irq, struct irqaction *new) #if defined(CONFIG_IRQ_PER_CPU) && defined(SA_PERCPU_IRQ) /* All handlers must agree on per-cpuness */ - if ((old->flags & IRQ_PER_CPU) != (new->flags & IRQ_PER_CPU)) + if ((old->flags & SA_PERCPU_IRQ) != + (new->flags & SA_PERCPU_IRQ)) goto mismatch; #endif @@ -266,9 +267,10 @@ int setup_irq(unsigned int irq, struct irqaction *new) * SA_TRIGGER_* but the PIC does not support * multiple flow-types? */ - printk(KERN_WARNING "setup_irq(%d) SA_TRIGGER" - "set. No set_type function available\n", - irq); + printk(KERN_WARNING "No SA_TRIGGER set_type " + "function for IRQ %d (%s)\n", irq, + desc->chip ? desc->chip->name : + "unknown"); } else compat_irq_chip_set_default_handler(desc); @@ -298,7 +300,7 @@ int setup_irq(unsigned int irq, struct irqaction *new) mismatch: spin_unlock_irqrestore(&desc->lock, flags); if (!(new->flags & SA_PROBEIRQ)) { - printk(KERN_ERR "%s: irq handler mismatch\n", __FUNCTION__); + printk(KERN_ERR "IRQ handler type mismatch for IRQ %d\n", irq); dump_stack(); } return -EBUSY; @@ -365,7 +367,7 @@ void free_irq(unsigned int irq, void *dev_id) kfree(action); return; } - printk(KERN_ERR "Trying to free free IRQ%d\n", irq); + printk(KERN_ERR "Trying to free already-free IRQ %d\n", irq); spin_unlock_irqrestore(&desc->lock, flags); return; } |