summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.ninka.net>2002-09-03 00:49:04 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2002-09-03 00:49:04 -0700
commit3d5fa36bf0c232f70db4bd15a50bbe322800bcdb (patch)
tree5ada31234f00d9b893c77e713ef7a3e900550041 /kernel
parent96ca2f806ceaf0f8fbde2548f51d6afc0a0fe7e3 (diff)
parent1314cad1540faf6b81e455b2267ce23c2fa1d698 (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.c11
-rw-r--r--kernel/sched.c13
-rw-r--r--kernel/softirq.c4
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);