1. 05 Feb, 2007 3 commits
    • Christoph Lameter's avatar
      [PATCH] Check for populated zone in __drain_pages · 75cda36d
      Christoph Lameter authored
      Both process_zones() and drain_node_pages() check for populated zones
      before touching pagesets.  However, __drain_pages does not do so,
      
      This may result in a NULL pointer dereference for pagesets in unpopulated
      zones if a NUMA setup is combined with cpu hotplug.
      
      Initially the unpopulated zone has the pcp pointers pointing to the boot
      pagesets.  Since the zone is not populated the boot pageset pointers will
      not be changed during page allocator and slab bootstrap.
      
      If a cpu is later brought down (first call to __drain_pages()) then the pcp
      pointers for cpus in unpopulated zones are set to NULL since __drain_pages
      does not first check for an unpopulated zone.
      
      If the cpu is then brought up again then we call process_zones() which will
      ignore the unpopulated zone.  So the pageset pointers will still be NULL.
      
      If the cpu is then again brought down then __drain_pages will attempt to
      drain pages by following the NULL pageset pointer for unpopulated zones.
      Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      75cda36d
    • Philippe De Muyter's avatar
      [PATCH] i2c/m41t00: Do not forget to write year · 000883a5
      Philippe De Muyter authored
      m41t00.c forgets to set the year field in set_rtc_time; fix that.
      Signed-off-by: default avatarPhilippe De Muyter <phdm@macqel.be>
      Acked-by: default avatarMark A. Greer <mgreer@mvista.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      000883a5
    • Maxime Bizon's avatar
      [PATCH] i2c-mv64xxx: Fix random oops at boot · a4a19587
      Maxime Bizon authored
      I have a Marvell board which has the same i2c hw block than mv64xxx, so
      I'm trying to use i2c-mv64xxx driver.
      
      But I get the following random oops at boot:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000002
      Backtrace:
      [<c0397e4c>] (mv64xxx_i2c_intr+0x0/0x2b8) from [<c02879c4>] (__do_irq+0x4c/0x8c)
      [<c0287978>] (__do_irq+0x0/0x8c) from [<c0287c0c>] (do_level_IRQ+0x68/0xc0)
       r8 = C0501E08  r7 = 00000005  r6 = C0501E08  r5 = 00000005
       r4 = C048BB78
      [<c0287ba4>] (do_level_IRQ+0x0/0xc0) from [<c02885f8>] (asm_do_IRQ+0x50/0x134)
       r6 = C0449C78  r5 = F1020000  r4 = FFFFFFFF
      [<c02885a8>] (asm_do_IRQ+0x0/0x134) from [<c02869c4>] (__irq_svc+0x24/0x100)
       r8 = C1CAC400  r7 = 00000005  r6 = 00000002  r5 = F1020000
       r4 = FFFFFFFF
      [<c0287efc>] (setup_irq+0x0/0x124) from [<c02880d0>] (request_irq+0xb0/0xd0)
       r7 = C041B2AC  r6 = C0397E4C  r5 = 00000000  r4 = 00000005
      [<c0288020>] (request_irq+0x0/0xd0) from [<c03985f4>] (mv64xxx_i2c_probe+0x148/0x244)
      [<c03984ac>] (mv64xxx_i2c_probe+0x0/0x244) from [<c038bedc>] (platform_drv_probe+0x20/0x24)
      
      The oops is caused by a spurious interrupt that occurs when request_irq
      is called. mv64xxx_i2c_fsm() tries to read drv_data->msg, which is NULL.
      
      I noticed that hardware init is done after requesting irq. Thus any
      pending irq from previous hardware usage may cause this.
      
      The following patch fixes it:
      Signed-off-by: default avatarMaxime Bizon <mbizon@freebox.fr>
      Acked-by: default avatarMark A. Greer <mgreer@mvista.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      a4a19587
  2. 10 Jan, 2007 37 commits