1. 07 Mar, 2012 3 commits
    • Russell King's avatar
      Merge branch 'sa11x0-dma' into sa11x0-ir · bb8c9505
      Russell King authored
      bb8c9505
    • Russell King's avatar
      ARM: sa11x0: add SA-11x0 DMA device · 7931d92f
      Russell King authored
      Add sa11x0 DMA platform device and resources to the list of
      generic platform devices for SA11x0 machines.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      7931d92f
    • Russell King's avatar
      DMA: sa11x0: add SA-11x0 DMA driver · 6365bead
      Russell King authored
      Add support for the SA-11x0 DMA driver, which replaces the private
      API version in arch/arm/mach-sa1100/dma.c.
      
      We model this as a set of virtual DMA channels, one for each request
      signal, and assign the virtual DMA channel to a physical DMA channel
      when there is work to be done.  This allows DMA users to claim their
      channels, and hold them while not in use, without affecting the
      availability of the physical channels.
      
      Another advantage over this approach, compared to the private version,
      is that a channel can be reconfigured on the fly without having to
      release and re-request it - which for the IrDA driver, allows us to
      use DMA for SIR mode transmit without eating up three physical
      channels.  As IrDA is half-duplex, we actually only need one physical
      channel, and this architecture allows us to achieve that.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      6365bead
  2. 09 Feb, 2012 27 commits
    • Russell King's avatar
      NET: sa11x0-ir: split si->dev for IrDA transmit and receive buffers · 3c500a35
      Russell King authored
      The sa11x0-ir device is not the device which is doing the DMA, the
      DMA is being performed by a separate DMA engine.  Split the struct
      device associated with each DMA channel from the main struct device,
      but for the time being initialize it from the main struct device.
      
      This is another preparatory step to converting this driver to use the
      DMA engine API.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      3c500a35
    • Russell King's avatar
      NET: sa11x0-ir: fix size of SIR transmit buffer · 04b7fc4d
      Russell King authored
      The SIR transmit buffer was being allocated as 4000 bytes.  IrDA now
      has constants for the buffer sizes, and defines the maximum wrapped
      SIR packet to be 4269 bytes as indicated by IRDA_SIR_MAX_FRAME.  Use
      this definition to allocate the transmit buffer instead.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      04b7fc4d
    • Russell King's avatar
      NET: sa11x0-ir: convert to use scatterlist DMA API · 32273f50
      Russell King authored
      Convert the sa11x0 IrDA driver to use the scatterlist DMA API.  This
      is a preparatory patch for converting the driver to use the DMA engine
      API, which requires a struct scatterlist for every transfer.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      32273f50
    • Russell King's avatar
      NET: sa11x0-ir: get rid of si->hscr0 · 6a7f4911
      Russell King authored
      si->hscr0 is initialized to zero, and never changed.  Get rid of this
      redundant variable.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      6a7f4911
    • Russell King's avatar
      NET: sa11x0-ir: move sa1100_irda_txdma_irq · 26f2bee1
      Russell King authored
      Move the FIR DMA transmit completion function along-side the other FIR
      protocol functions.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      26f2bee1
    • Russell King's avatar
      NET: sa11x0-ir: move SIR and FIR interrupt support · a6b2ea66
      Russell King authored
      Move the interrupt handlers to the SIR and FIR sections of the file.
      This improves the localization of the protocol handlers.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      a6b2ea66
    • Russell King's avatar
      NET: sa11x0-ir: indirect handling of SIR and FIR interrupts · 374f7739
      Russell King authored
      Use the same method for doing this as we do for the tx_start functions.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      374f7739
    • Russell King's avatar
      NET: sa11x0-ir: split SIR and FIR tx functions · 3d26db13
      Russell King authored
      Split the SIR and FIR transmit functions, as they behave differently.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      3d26db13
    • Russell King's avatar
      NET: sa11x0-ir: factor out speed checks · 0e888ee3
      Russell King authored
      Whenever we complete a transmit, we always check for a speed change.
      This check was open coded in several places.  Provide a helper
      function to do this instead.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      0e888ee3
    • Russell King's avatar
      NET: sa11x0-ir: move sa1100_irda_{startup,shutdown,suspend,resume} · cbe1d24f
      Russell King authored
      Places these functions in better locations in the file, near where
      they are used.  This saves some tiresome paging up/down.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      cbe1d24f
    • Russell King's avatar
      NET: sa11x0-ir: fix leak of tx skb · ba84525b
      Russell King authored
      Ensure that we unmap and free a pending transmit skb when the interface
      is stopped.  We rearrange the code a little bit to give all places a
      similar layout when freeing the skb in both the completion and interface
      stop paths - this gives some consistency to the code.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      ba84525b
    • Russell King's avatar
      NET: sa11x0-ir: containerize DMA data · 885767ca
      Russell King authored
      Both the transmit and receive DMA store identical data: the skb, dma
      address, and the dma registers.  Move this data into its own data
      structure.  The following replacements were used:
      
      	rxskb -> dma_rx.skb
      	rxbuf_dma -> dma_rx.dma
      	rxdma -> dma_rx.regs
      
      	txskb -> dma_tx.skb
      	txbuf_dma -> dma_tx.dma
      	txdma -> dma_tx.regs
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      885767ca
    • Russell King's avatar
      NET: sa11x0-ir: obtain interrupt number from platform resources · e556fdbd
      Russell King authored
      Convert the sa11x0-ir driver to obtain its interrupt number from the
      platform device resources, rather than via the asm/irq.h include.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      e556fdbd
    • Russell King's avatar
      NET: sa11x0-ir: set netdev's parent struct device · d3238608
      Russell King authored
      Add the missing SET_NETDEV_DEV() call to set the parent device
      correctly for this network interface.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      d3238608
    • Russell King's avatar
      NET: sa11x0-ir: handle DMA mapping errors properly · 22f0bf96
      Russell King authored
      Handle DMA mapping errors in the rx skb allocation and tx paths.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      22f0bf96
    • Russell King's avatar
      NET: sa11x0-ir: fix documentation bug · 15877e9c
      Russell King authored
      Spell the module parameter correctly in comments.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      15877e9c
    • Linus Torvalds's avatar
      Linux 3.3-rc3 · d65b4e98
      Linus Torvalds authored
      d65b4e98
    • Linus Torvalds's avatar
      Merge branch 'iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 63082402
      Linus Torvalds authored
      One patch fixes an bug in the ARM/MSM IOMMU code which returned sucess
      in the unmap function even when an error occured and the other patch
      adds a workaround into the AMD IOMMU driver to better handle broken IVRS
      ACPI tables (this patch fixes the case when a device is not listed in
      the table but actually translated by the iommu).
      
      * 'iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        iommu/msm: Fix error handling in msm_iommu_unmap()
        iommu/amd: Work around broken IVRS tables
      63082402
    • Linus Torvalds's avatar
      Merge branch '3.3-rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 19e75ed4
      Linus Torvalds authored
      This series contains pending target bug-fixes and cleanups for v3.3-rc3
      that have been addressed the past weeks in lio-core.git.
      
      Some of the highlights include:
      
       - Fix handling for control CDBs with data greater than PAGE_SIZE (andy)
       - Use IP_FREEBIND for iscsi-target to address network portal creation
         issues with systemd (dax)
       - Allow PERSISTENT RESERVE IN for non-reservation holder (marco)
       - Fix iblock se_dev_attrib.unmap_granularity (marco)
       - Fix unsupported WRITE_SAME sense payload handling (martin)
       - Add workaround for zero-length control CDB handling (nab)
       - Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT (nab)
       - Fix target_submit_cmd() exception handling (nab)
       - Return correct ASC for unimplemented VPD pages (roland)
       - Don't zero pages used for data buffers (roland)
       - Fix return code of core_tpg_.*_lun (sebastian)
      
      * '3.3-rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (26 commits)
        target: Fix unsupported WRITE_SAME sense payload
        iscsi: use IP_FREEBIND socket option
        iblock: fix handling of large requests
        target: handle empty string writes in sysfs
        iscsi_target: in_aton needs linux/inet.h
        target: Fix iblock se_dev_attrib.unmap_granularity
        target: Fix target_submit_cmd() exception handling
        target: Change target_submit_cmd() to return void
        target: accept REQUEST_SENSE with 18bytes
        target: Fail INQUIRY commands with EVPD==0 but PAGE CODE!=0
        target: Return correct ASC for unimplemented VPD pages
        iscsi-target: Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT
        target: Allow control CDBs with data > 1 page
        iscsi-target: Fix up a few assignments
        iscsi-target: make one-bit bitfields unsigned
        iscsi-target: Fix double list_add with iscsit_alloc_buffs reject
        iscsi-target: Fix reject release handling in iscsit_free_cmd()
        target: fix return code of core_tpg_.*_lun
        target: use save/restore lock primitive in core_dec_lacl_count()
        target: avoid multiple outputs in scsi_dump_inquiry()
        ...
      19e75ed4
    • Linus Torvalds's avatar
      Merge tag 'md-3.3-fixes' of git://neil.brown.name/md · 4d39aa1b
      Linus Torvalds authored
      Some simple md-related fixes.
      
      1/ two small fixes to ensure we handle an interrupted resync properly.
      2/ avoid loading the bitmap multiple times in dm-raid
      
      * tag 'md-3.3-fixes' of git://neil.brown.name/md:
        md: two small fixes to handling interrupt resync.
        Prevent DM RAID from loading bitmap twice.
      4d39aa1b
    • Linus Torvalds's avatar
      Merge tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6 · 4a68d54c
      Linus Torvalds authored
      SPI bug fixes for v3.3-rc2
      
      Minor SPI device driver changes.  A rename of the pch_spi_pcidev symbol
      that merely eliminates a modpost warning, and a Kconfig change to allow
      the Samsung spi driver to build on EXYNOS.
      
      * tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6:
        spi-topcliff-pch: rename pch_spi_pcidev to pch_spi_pcidev_driver
        spi: Add spi-s3c64xx driver dependency on ARCH_EXYNOS4
      4a68d54c
    • Linus Torvalds's avatar
      Merge branch 'akpm' (Andrew's tree) · 15a46353
      Linus Torvalds authored
      Five fixes
      
      * branch 'akpm':
        pcmcia: fix socket refcount decrementing on each resume
        mm: fix UP THP spin_is_locked BUGs
        drivers/leds/leds-lm3530.c: fix setting pltfm->als_vmax
        mm: compaction: check for overlapping nodes during isolation for migration
        nilfs2: avoid overflowing segment numbers in nilfs_ioctl_clean_segments()
      15a46353
    • Russell King's avatar
      pcmcia: fix socket refcount decrementing on each resume · 025e4ab3
      Russell King authored
      This fixes a memory-corrupting bug: not only does it cause the warning,
      but as a result of dropping the refcount to zero, it causes the
      pcmcia_socket0 device structure to be freed while it still has
      references, causing slab caches corruption.  A fatal oops quickly
      follows this warning - often even just a 'dmesg' following the warning
      causes the kernel to oops.
      
      While testing suspend/resume on an ARM device with PCMCIA support, and a
      CF card inserted, I found that after five suspend and resumes, the
      kernel would complain, and shortly die after with slab corruption.
      
        WARNING: at include/linux/kref.h:41 kobject_get+0x28/0x50()
      
      As the message doesn't give a clue about which kobject, and the built-in
      debugging in drivers/base/power/main.c happens too late, this was added
      right before each get_device():
      
        printk("%s: %p [%s] %u\n", __func__, dev, kobject_name(&dev->kobj), atomic_read(&dev->kobj.kref.refcount));
      
      and on the 3rd s2ram cycle, the following behaviour observed:
      
      On the 3rd suspend/resume cycle:
      
        dpm_prepare: c1a0d998 [pcmcia_socket0] 3
        dpm_suspend: c1a0d998 [pcmcia_socket0] 3
        dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 3
        dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 3
        dpm_resume: c1a0d998 [pcmcia_socket0] 3
        dpm_complete: c1a0d998 [pcmcia_socket0] 2
      
      4th:
      
        dpm_prepare: c1a0d998 [pcmcia_socket0] 2
        dpm_suspend: c1a0d998 [pcmcia_socket0] 2
        dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 2
        dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 2
        dpm_resume: c1a0d998 [pcmcia_socket0] 2
        dpm_complete: c1a0d998 [pcmcia_socket0] 1
      
      5th:
      
        dpm_prepare: c1a0d998 [pcmcia_socket0] 1
        dpm_suspend: c1a0d998 [pcmcia_socket0] 1
        dpm_suspend_noirq: c1a0d998 [pcmcia_socket0] 1
        dpm_resume_noirq: c1a0d998 [pcmcia_socket0] 1
        dpm_resume: c1a0d998 [pcmcia_socket0] 1
        dpm_complete: c1a0d998 [pcmcia_socket0] 0
        ------------[ cut here ]------------
        WARNING: at include/linux/kref.h:41 kobject_get+0x28/0x50()
        Modules linked in: ucb1x00_core
        Backtrace:
        [<c0212090>] (dump_backtrace+0x0/0x110) from [<c04799dc>] (dump_stack+0x18/0x1c)
        [<c04799c4>] (dump_stack+0x0/0x1c) from [<c021cba0>] (warn_slowpath_common+0x50/0x68)
        [<c021cb50>] (warn_slowpath_common+0x0/0x68) from [<c021cbdc>] (warn_slowpath_null+0x24/0x28)
        [<c021cbb8>] (warn_slowpath_null+0x0/0x28) from [<c0335374>] (kobject_get+0x28/0x50)
        [<c033534c>] (kobject_get+0x0/0x50) from [<c03804f4>] (get_device+0x1c/0x24)
        [<c0388c90>] (dpm_complete+0x0/0x1a0) from [<c0389cc0>] (dpm_resume_end+0x1c/0x20)
        ...
      
      Looking at commit 7b24e798 ("pcmcia: split up central event handler"),
      the following change was made to cs.c:
      
                      return 0;
              }
       #endif
      -
      -       send_event(skt, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW);
      +       if (!(skt->state & SOCKET_CARDBUS) && (skt->callback))
      +               skt->callback->early_resume(skt);
              return 0;
       }
      
      And the corresponding change in ds.c is from:
      
      -static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
      -{
      -       struct pcmcia_socket *s = pcmcia_get_socket(skt);
      ...
      -       switch (event) {
      ...
      -       case CS_EVENT_PM_RESUME:
      -               if (verify_cis_cache(skt) != 0) {
      -                       dev_dbg(&skt->dev, "cis mismatch - different card\n");
      -                       /* first, remove the card */
      -                       ds_event(skt, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH);
      -                       mutex_lock(&s->ops_mutex);
      -                       destroy_cis_cache(skt);
      -                       kfree(skt->fake_cis);
      -                       skt->fake_cis = NULL;
      -                       s->functions = 0;
      -                       mutex_unlock(&s->ops_mutex);
      -                       /* now, add the new card */
      -                       ds_event(skt, CS_EVENT_CARD_INSERTION,
      -                                CS_EVENT_PRI_LOW);
      -               }
      -               break;
      ...
      -    }
      
      -    pcmcia_put_socket(s);
      
      -    return 0;
      -} /* ds_event */
      
      to:
      
      +static int pcmcia_bus_early_resume(struct pcmcia_socket *skt)
      +{
      +       if (!verify_cis_cache(skt)) {
      +               pcmcia_put_socket(skt);
      +               return 0;
      +       }
      
      +       dev_dbg(&skt->dev, "cis mismatch - different card\n");
      
      +       /* first, remove the card */
      +       pcmcia_bus_remove(skt);
      +       mutex_lock(&skt->ops_mutex);
      +       destroy_cis_cache(skt);
      +       kfree(skt->fake_cis);
      +       skt->fake_cis = NULL;
      +       skt->functions = 0;
      +       mutex_unlock(&skt->ops_mutex);
      
      +       /* now, add the new card */
      +       pcmcia_bus_add(skt);
      +       return 0;
      +}
      
      As can be seen, the original function called pcmcia_get_socket() and
      pcmcia_put_socket() around the guts, whereas the replacement code
      calls pcmcia_put_socket() only in one path.  This creates an imbalance
      in the refcounting.
      
      Testing with pcmcia_put_socket() put removed shows that the bug is gone:
      
        dpm_suspend: c1a10998 [pcmcia_socket0] 5
        dpm_suspend_noirq: c1a10998 [pcmcia_socket0] 5
        dpm_resume_noirq: c1a10998 [pcmcia_socket0] 5
        dpm_resume: c1a10998 [pcmcia_socket0] 5
        dpm_complete: c1a10998 [pcmcia_socket0] 5
      Tested-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      025e4ab3
    • Hugh Dickins's avatar
      mm: fix UP THP spin_is_locked BUGs · b9980cdc
      Hugh Dickins authored
      Fix CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_SMP=n CONFIG_DEBUG_VM=y
      CONFIG_DEBUG_SPINLOCK=n kernel: spin_is_locked() is then always false,
      and so triggers some BUGs in Transparent HugePage codepaths.
      
      asm-generic/bug.h mentions this problem, and provides a WARN_ON_SMP(x);
      but being too lazy to add VM_BUG_ON_SMP, BUG_ON_SMP, WARN_ON_SMP_ONCE,
      VM_WARN_ON_SMP_ONCE, just test NR_CPUS != 1 in the existing VM_BUG_ONs.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b9980cdc
    • Axel Lin's avatar
      drivers/leds/leds-lm3530.c: fix setting pltfm->als_vmax · ec44fd42
      Axel Lin authored
      In current code, pltfm->als_vmin is set to LM3530_ALS_WINDOW_mV and
      pltfm->als_vmax is 0.  This does not make sense.  I think what we want
      here is setting pltfm->als_vmax to LM3530_ALS_WINDOW_mV.
      
      Both als_vmin and als_vmax local variables will be set to
      pltfm->als_vmin and pltfm->als_vmax by a few lines latter.  Thus also
      remove a redundant assignment for als_vmin and als_vmax in this patch.
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu@stericsson.com>
      Acked-by: default avatarMilo(Woogyom) Kim <milo.kim@ti.com>
      Tested-by: default avatarMilo(Woogyom) Kim <milo.kim@ti.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ec44fd42
    • Mel Gorman's avatar
      mm: compaction: check for overlapping nodes during isolation for migration · dc908600
      Mel Gorman authored
      When isolating pages for migration, migration starts at the start of a
      zone while the free scanner starts at the end of the zone.  Migration
      avoids entering a new zone by never going beyond the free scanned.
      
      Unfortunately, in very rare cases nodes can overlap.  When this happens,
      migration isolates pages without the LRU lock held, corrupting lists
      which will trigger errors in reclaim or during page free such as in the
      following oops
      
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
        IP: [<ffffffff810f795c>] free_pcppages_bulk+0xcc/0x450
        PGD 1dda554067 PUD 1e1cb58067 PMD 0
        Oops: 0000 [#1] SMP
        CPU 37
        Pid: 17088, comm: memcg_process_s Tainted: G            X
        RIP: free_pcppages_bulk+0xcc/0x450
        Process memcg_process_s (pid: 17088, threadinfo ffff881c2926e000, task ffff881c2926c0c0)
        Call Trace:
          free_hot_cold_page+0x17e/0x1f0
          __pagevec_free+0x90/0xb0
          release_pages+0x22a/0x260
          pagevec_lru_move_fn+0xf3/0x110
          putback_lru_page+0x66/0xe0
          unmap_and_move+0x156/0x180
          migrate_pages+0x9e/0x1b0
          compact_zone+0x1f3/0x2f0
          compact_zone_order+0xa2/0xe0
          try_to_compact_pages+0xdf/0x110
          __alloc_pages_direct_compact+0xee/0x1c0
          __alloc_pages_slowpath+0x370/0x830
          __alloc_pages_nodemask+0x1b1/0x1c0
          alloc_pages_vma+0x9b/0x160
          do_huge_pmd_anonymous_page+0x160/0x270
          do_page_fault+0x207/0x4c0
          page_fault+0x25/0x30
      
      The "X" in the taint flag means that external modules were loaded but but
      is unrelated to the bug triggering.  The real problem was because the PFN
      layout looks like this
      
        Zone PFN ranges:
          DMA      0x00000010 -> 0x00001000
          DMA32    0x00001000 -> 0x00100000
          Normal   0x00100000 -> 0x01e80000
        Movable zone start PFN for each node
        early_node_map[14] active PFN ranges
            0: 0x00000010 -> 0x0000009b
            0: 0x00000100 -> 0x0007a1ec
            0: 0x0007a354 -> 0x0007a379
            0: 0x0007f7ff -> 0x0007f800
            0: 0x00100000 -> 0x00680000
            1: 0x00680000 -> 0x00e80000
            0: 0x00e80000 -> 0x01080000
            1: 0x01080000 -> 0x01280000
            0: 0x01280000 -> 0x01480000
            1: 0x01480000 -> 0x01680000
            0: 0x01680000 -> 0x01880000
            1: 0x01880000 -> 0x01a80000
            0: 0x01a80000 -> 0x01c80000
            1: 0x01c80000 -> 0x01e80000
      
      The fix is straight-forward.  isolate_migratepages() has to make a
      similar check to isolate_freepage to ensure that it never isolates pages
      from a zone it does not hold the LRU lock for.
      
      This was discovered in a 3.0-based kernel but it affects 3.1.x, 3.2.x
      and current mainline.
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dc908600
    • Xi Wang's avatar
      nilfs2: avoid overflowing segment numbers in nilfs_ioctl_clean_segments() · 1ecd3c7e
      Xi Wang authored
      nsegs is read from userspace.  Limit its value and avoid overflowing nsegs
      * sizeof(__u64) in the subsequent call to memdup_user().
      
      This patch complements 481fe17e ("nilfs2: potential integer overflow
      in nilfs_ioctl_clean_segments()").
      Signed-off-by: default avatarXi Wang <xi.wang@gmail.com>
      Cc: Haogang Chen <haogangchen@gmail.com>
      Acked-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1ecd3c7e
  3. 08 Feb, 2012 6 commits
  4. 07 Feb, 2012 4 commits
    • Linus Torvalds's avatar
      Merge tag 'fbdev-fixes-for-3.3-1' of git://github.com/schandinat/linux-2.6 · 98e96852
      Linus Torvalds authored
      fbdev fixes for 3.3
      
      It includes:
       - compile fix for fsl-diu-fb
       - fix for a suspend/resume issue in atmel_lcdfb
       - fix for a suspend/resume issue in OMAP
       - workaround for a hardware bug to avoid physical damage in OMAP
       - really trivial dead code removal in intelfb
      
      * tag 'fbdev-fixes-for-3.3-1' of git://github.com/schandinat/linux-2.6:
        atmel_lcdfb: fix usage of CONTRAST_CTR in suspend/resume
        intelfb: remove some dead code
        drivers/video: compile fixes for fsl-diu-fb.c
        OMAPDSS: HDMI: PHY burnout fix
        OMAP: 4430SDP/Panda: add HDMI HPD gpio
        OMAP: 4430SDP/Panda: setup HDMI GPIO muxes
        OMAPDSS: remove wrong HDMI HPD muxing
        OMAP: 4430SDP/Panda: rename HPD GPIO to CT_CP_HPD
        OMAP: 4430SDP/Panda: use gpio_free_array to free HDMI gpios
        OMAPDSS: use sync versions of pm_runtime_put
      98e96852
    • Joe Perches's avatar
      checkpatch: Warn on code with 6+ tab indentation · 8eef05dd
      Joe Perches authored
      Overly indented code should be refactored.
      
      Suggest refactoring excessive indentation of of
      if/else/for/do/while/switch statements.
      
      For example:
      
      $ cat t.c
      #include <stdio.h>
      #include <stdlib.h>
      
      int main(int argc, char **argv)
      {
      
      	if (1)
      		if (2)
      			if (3)
      				if (4)
      					if (5)
      						if (6)
      							if (7)
      								if (8)
      									;
      	return 0;
      }
      
      $ ./scripts/checkpatch.pl -f t.c
      WARNING: Too many leading tabs - consider code refactoring
      #12: FILE: t.c:12:
      +						if (6)
      
      WARNING: Too many leading tabs - consider code refactoring
      #13: FILE: t.c:13:
      +							if (7)
      
      WARNING: Too many leading tabs - consider code refactoring
      #14: FILE: t.c:14:
      +								if (8)
      
      total: 0 errors, 3 warnings, 17 lines checked
      
      t.c has style problems, please review.
      
      If any of these errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8eef05dd
    • Linus Torvalds's avatar
      Merge tag 'ib-srpt-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 6bd113f1
      Linus Torvalds authored
      Cleanups and error path fixes for the new SRP (SCSI RDMA protocol) target.
      
      * tag 'ib-srpt-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        IB/srpt: Don't return freed pointer from srpt_alloc_ioctx_ring()
        IB/srpt: Fix ERR_PTR() vs. NULL checking confusion
        IB/srpt: Remove unneeded <linux/version.h> include
        IB/srpt: Use ARRAY_SIZE() instead of open-coding
        IB/srpt: Use DEFINE_SPINLOCK()/LIST_HEAD()
      6bd113f1
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · 95025d6b
      Linus Torvalds authored
      arch: fix ioport mapping on mips,sh
      
      Kevin Cernekee reported that recent cleanup that replaced pci_iomap with
      a generic function failed to take into account the differences in io
      port handling on mips and sh architectures.
      
      Rather than revert the changes reintroducing the code duplication, this
      patchset fixes this by adding ability for architectures to override
      ioport mapping for pci devices.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        sh: use the the PCI channels's io_map_base
        mips: use the the PCI controller's io_map_base
        lib: add NO_GENERIC_PCI_IOPORT_MAP
      95025d6b