diff options
| author | David S. Miller <davem@nuts.ninka.net> | 2002-09-03 00:49:04 -0700 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2002-09-03 00:49:04 -0700 |
| commit | 3d5fa36bf0c232f70db4bd15a50bbe322800bcdb (patch) | |
| tree | 5ada31234f00d9b893c77e713ef7a3e900550041 /kernel | |
| parent | 96ca2f806ceaf0f8fbde2548f51d6afc0a0fe7e3 (diff) | |
| parent | 1314cad1540faf6b81e455b2267ce23c2fa1d698 (diff) | |
Merge nuts.ninka.net:/home/davem/src/BK/network-2.5
into nuts.ninka.net:/home/davem/src/BK/net-2.5
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/futex.c | 11 | ||||
| -rw-r--r-- | kernel/sched.c | 13 | ||||
| -rw-r--r-- | kernel/softirq.c | 4 |
3 files changed, 15 insertions, 13 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index ef3dc8b00a5f..ac9fda58181e 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -276,9 +276,14 @@ static int futex_fd(struct list_head *head, filp->f_dentry = dget(futex_mnt->mnt_root); if (signal) { - filp->f_owner.pid = current->tgid; - filp->f_owner.uid = current->uid; - filp->f_owner.euid = current->euid; + int ret; + + ret = f_setown(filp, current->tgid, 1); + if (ret) { + put_unused_fd(fd); + put_filp(filp); + return ret; + } filp->f_owner.signum = signal; } diff --git a/kernel/sched.c b/kernel/sched.c index 0588a29a9393..90344435318c 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -1032,15 +1032,12 @@ asmlinkage void preempt_schedule(void) { struct thread_info *ti = current_thread_info(); - if (unlikely(ti->preempt_count)) - return; - if (unlikely(irqs_disabled())) { - preempt_disable(); - printk("bad: schedule() with irqs disabled!\n"); - show_stack(NULL); - preempt_enable_no_resched(); + /* + * If there is a non-zero preempt_count or interrupts are disabled, + * we do not want to preempt the current task. Just return.. + */ + if (unlikely(ti->preempt_count || irqs_disabled())) return; - } need_resched: ti->preempt_count = PREEMPT_ACTIVE; diff --git a/kernel/softirq.c b/kernel/softirq.c index 4405e83aaf21..14cff3f400f8 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -59,7 +59,7 @@ static inline void wakeup_softirqd(unsigned cpu) asmlinkage void do_softirq() { __u32 pending; - long flags; + unsigned long flags; __u32 mask; int cpu; @@ -129,7 +129,7 @@ inline void cpu_raise_softirq(unsigned int cpu, unsigned int nr) void raise_softirq(unsigned int nr) { - long flags; + unsigned long flags; local_irq_save(flags); cpu_raise_softirq(smp_processor_id(), nr); |
