lkml.org 
[lkml]   [2000]   [Jan]   [21]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateThu, 20 Jan 2000 15:05:19 +0100
FromManfred Spraul <>
Subjectarch/i386/kernel/signals.c: recalc_sigpending without spinlock
I think there is an error in do_signal():

default:
lock_kernel();
sigaddset(&current->signal, signr);
recalc_sigpending(current);
current->flags |= PF_SIGNALED;
do_exit(exit_code);
/* NOTREACHED */
}
I haven't checked the details of the signal delivery, but it seems that
the lock_kernel() is superflous, and
spin_lock_irq(&current->sigmask_lock) is missing:


default:
spin_lock_irq(&current->sigmask_lock);
sigaddset(&current->signal, signr);
recalc_sigpending(current);
spin_unlock_irq(&current->sigmask_lock);
current->flags |= PF_SIGNALED;
do_exit(exit_code);
/* NOTREACHED */
}
--
Manfred



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

\
 
 \ /
  Last update: 2005-03-22 13:56    [from the cache]
©2003-2009