• Steven Rostedt's avatar
    [PATCH] fix bad macro param in timer.c · 6ea24f9a
    Steven Rostedt authored
    We have
    
    #define INDEX(N) (base->timer_jiffies >> (TVR_BITS + N * TVN_BITS)) & TVN_MASK
    
    and it's used via
    
    	list = varray[i + 1]->vec + (INDEX(i + 1));
    
    So, due to underparenthesisation, this INDEX(i+1) is now a ...  (TVR_BITS + i
    + 1 * TVN_BITS)) ...
    
    So this bugfix changes behaviour.  It worked before by sheer luck:
    
      "If i was anything but 0, it was broken.  But this was only used by
       s390 and arm.  Since it was for the next interrupt, could that next
       interrupt be a problem (going into the second cascade)? But it was
       probably seldom wrong.  That is, this would fail if the next
       interrupt was in the second cascade, and was wrapped.  Which may
       never of happened.  Also if it did happen, it would have just missed
       the interrupt.
    
       If an interrupt was missed, and no one was there to miss it, was it
       really missed :-)"
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Cc: Oleg Nesterov <oleg@tv-sign.ru>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    6ea24f9a
timer.c 50.2 KB