Re: [PATCH 1/9] timer locking optimization

From: Oleg Nesterov (oleg_at_tv-sign.ru)
Date: 11/30/05

  • Next message: Pierre Ossman: "Re: [Fwd: [PATCH] [PNP][RFC] Suspend support for PNP bus.]"
    Date:	Wed, 30 Nov 2005 14:23:44 +0300
    To: Roman Zippel <zippel@linux-m68k.org>
    
    

    Roman Zippel wrote:
    >
    > int __mod_timer(struct timer_list *timer, unsigned long expires)
    > @@ -210,6 +203,7 @@ int __mod_timer(struct timer_list *timer
    >
    > BUG_ON(!timer->function);
    >
    > +restart:
    > base = lock_timer_base(timer, &flags);
    >
    > if (timer_pending(timer)) {

    Another problem. __mode_timer() does:

            if (timer_pending(timer)) {
                    detach_timer(timer, 0);

    Note that 'clear_pending' parameter == 0. This means that detach_timer()
    will remove the timer from list, but won't clear 'pending' status. So
    this will crash after 'goto restart' (or in case of concurrent del_timer()).

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


  • Next message: Pierre Ossman: "Re: [Fwd: [PATCH] [PNP][RFC] Suspend support for PNP bus.]"

    Relevant Pages