1. 25 Mar, 2006 4 commits
    • Thomas Gleixner's avatar
      [PATCH] Validate and sanitze itimer timeval from userspace · 7d99b7d6
      Thomas Gleixner authored
      According to the specification the timevals must be validated and an
      errorcode -EINVAL returned in case the timevals are not in canonical form.
      This check was never done in Linux.
      
      The pre 2.6.16 code converted invalid timevals silently.  Negative timeouts
      were converted by the timeval_to_jiffies conversion to the maximum timeout.
      
      hrtimers and the ktime_t operations expect timevals in canonical form.
      Otherwise random results might happen on 32 bits machines due to the
      optimized ktime_add/sub operations.  Negative timeouts are treated as
      already expired.  This might break applications which work on pre 2.6.16.
      
      To prevent random behaviour and API breakage the timevals are checked and
      invalid timevals sanitized in a simliar way as the pre 2.6.16 code did.
      
      Invalid timevals are reported with a per boot limited number of kernel
      messages so applications which use this misfeature can be corrected.
      
      After a grace period of one year the sanitizing should be replaced by a
      correct validation check.  This is also documented in
      Documentation/feature-removal-schedule.txt
      
      The validation and sanitizing is done inside do_setitimer so all callers
      (sys_setitimer, compat_sys_setitimer, osf_setitimer) are catched.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7d99b7d6
    • Thomas Gleixner's avatar
      [PATCH] sys_alarm() unsigned signed conversion fixup · c08b8a49
      Thomas Gleixner authored
      alarm() calls the kernel with an unsigend int timeout in seconds.  The
      value is stored in the tv_sec field of a struct timeval to setup the
      itimer.  The tv_sec field of struct timeval is of type long, which causes
      the tv_sec value to be negative on 32 bit machines if seconds > INT_MAX.
      
      Before the hrtimer merge (pre 2.6.16) such a negative value was converted
      to the maximum jiffies timeout by the timeval_to_jiffies conversion.  It's
      not clear whether this was intended or just happened to be done by the
      timeval_to_jiffies code.
      
      hrtimers expect a timeval in canonical form and treat a negative timeout as
      already expired.  This breaks the legitimate usage of alarm() with a
      timeout value > INT_MAX seconds.
      
      For 32 bit machines it is therefor necessary to limit the internal seconds
      value to avoid API breakage.  Instead of doing this in all implementations
      of sys_alarm the duplicated sys_alarm code is moved into a common function
      in itimer.c
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c08b8a49
    • Andrew Morton's avatar
      [PATCH] timer irq driven soft watchdog fix · 185ae6d7
      Andrew Morton authored
      I seem to have lost this hunk in yesterday's patch.  It brings the
      coming-online CPU's softlockup timer up to date so we don't get false-positive
      tripups during CPU hot-add.
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      185ae6d7
    • Andrey Panin's avatar
      [PATCH] fix DMI onboard device discovery · bc83455b
      Andrey Panin authored
      Attached patch fixes invalid pointer arithmetic in DMI code to make onboard
      device discovery working again.
      
      akpm: bug has been present since dmi_find_device() was added in 2.6.14.
      Affects ipmi only (I think) - the symptoms weren't described.
      
      akpm: changed to use pointer arithmetic rather than open-coded sizeof.
      Signed-off-by: default avatarAndrey Panin <pazke@donpac.ru>
      Cc: Corey Minyard <minyard@acm.org>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      bc83455b
  2. 24 Mar, 2006 36 commits