linux/arch/arm/mm
Thomas Petazzoni f3d8752497 arm: mm: fix DMA pool affiliation check
The __free_from_pool() function was changed in
e9da6e9905. Unfortunately, the test that
checks whether the provided (start,size) is within the DMA pool has
been improperly modified. It used to be:

  if (start < coherent_head.vm_start || end > coherent_head.vm_end)

Where coherent_head.vm_end was non-inclusive (i.e, it did not include
the first byte after the pool). The test has been changed to:

  if (start < pool->vaddr || start > pool->vaddr + pool->size)

So now pool->vaddr + pool->size is inclusive (i.e, it includes the
first byte after the pool), so the test should be >= instead of >.

This bug causes the following message when freeing the *first* DMA
coherent buffer that has been allocated, because its virtual address
is exactly equal to pool->vaddr + pool->size :

WARNING: at /home/thomas/projets/linux-2.6/arch/arm/mm/dma-mapping.c:463 __free_from_pool+0xa4/0xc0()
freeing wrong coherent size from pool

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Lior Amsalem <alior@marvell.com>
Cc: Maen Suleiman <maen@marvell.com>
Cc: Tawfik Bayouk <tawfik@marvell.com>
Cc: Shadi Ammouri <shadi@marvell.com>
Cc: Eran Ben-Avi <benavi@marvell.com>
Cc: Yehuda Yitschak <yehuday@marvell.com>
Cc: Nadav Haklai <nadavh@marvell.com>
[m.szyprowski: rebased onto v3.6-rc5 and resolved conflict]
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
2012-09-10 16:15:48 +02:00
..
abort-ev4.S
abort-ev4t.S
abort-ev5t.S
abort-ev5tj.S
abort-ev6.S ARM: 7396/1: errata: only handle ARM erratum #326103 on affected cores 2012-04-23 14:21:52 +01:00
abort-ev7.S
abort-lv4t.S
abort-macro.S
abort-nommu.S
alignment.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
cache-fa.S
cache-feroceon-l2.c ARM: move CP15 definitions to separate header file 2012-03-28 18:30:01 +01:00
cache-l2x0.c ARM: 7398/1: l2x0: only write to debug registers on PL310 2012-04-23 14:21:52 +01:00
cache-tauros2.c ARM: cache: tauros2: add disable and resume callback 2012-05-07 11:43:48 +08:00
cache-v3.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
cache-v4.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
cache-v4wb.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
cache-v4wt.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
cache-v6.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
cache-v7.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
cache-xsc3l2.c ARM: move CP15 definitions to separate header file 2012-03-28 18:30:01 +01:00
context.c ARM: 7445/1: mm: update CONTEXTIDR register to contain PID of current process 2012-07-09 17:41:10 +01:00
copypage-fa.c
copypage-feroceon.c
copypage-v4mc.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
copypage-v4wb.c
copypage-v4wt.c
copypage-v6.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
copypage-xsc3.c
copypage-xscale.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
dma-mapping.c arm: mm: fix DMA pool affiliation check 2012-09-10 16:15:48 +02:00
extable.c
fault-armv.c
fault.c Merge branch 'v3-removal' into for-linus 2012-05-21 15:15:33 +01:00
fault.h
flush.c ARM: 7487/1: mm: avoid setting nG bit for user mappings that aren't present 2012-08-11 09:15:59 +01:00
fsr-2level.c
fsr-3level.c
highmem.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
idmap.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
init.c Merge branches 'audit', 'delay', 'fixes', 'misc' and 'sta2x11' into for-linus 2012-07-27 23:06:32 +01:00
iomap.c
ioremap.c ARM: 7432/1: use the new linux/sizes.h 2012-06-28 17:14:35 +01:00
Kconfig ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs 2012-05-05 05:50:50 +01:00
Makefile ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs 2012-05-05 05:50:50 +01:00
mm.h ARM: dma-mapping: remove custom consistent dma region 2012-07-30 12:25:45 +02:00
mmap.c
mmu.c Merge branches 'audit', 'delay', 'fixes', 'misc' and 'sta2x11' into for-linus 2012-07-27 23:06:32 +01:00
nommu.c ARM: 7383/1: nommu: populate vectors page from paging_init 2012-04-13 14:05:42 +01:00
pabort-legacy.S
pabort-v6.S
pabort-v7.S
pgd.c ARM: move CP15 definitions to separate header file 2012-03-28 18:30:01 +01:00
proc-arm7tdmi.S
proc-arm9tdmi.S
proc-arm720.S
proc-arm740.S
proc-arm920.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm922.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm925.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm926.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm940.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm946.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm1020.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm1020e.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm1022.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-arm1026.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-fa526.S Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
proc-feroceon.S ARM: 7408/1: cacheflush: return error to userspace when flushing syscall fails 2012-05-02 11:12:49 +01:00
proc-macros.S
proc-mohawk.S arm-soc: power management changes 2012-05-22 09:41:01 -07:00
proc-sa110.S
proc-sa1100.S
proc-syms.c
proc-v6.S ARM: 7445/1: mm: update CONTEXTIDR register to contain PID of current process 2012-07-09 17:41:10 +01:00
proc-v7-2level.S ARM: 7445/1: mm: update CONTEXTIDR register to contain PID of current process 2012-07-09 17:41:10 +01:00
proc-v7-3level.S
proc-v7.S ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access for !CONFIG_ARM_THUMBEE 2012-04-15 22:00:31 +01:00
proc-xsc3.S
proc-xscale.S
tlb-fa.S
tlb-v4.S
tlb-v4wb.S
tlb-v4wbi.S
tlb-v6.S
tlb-v7.S ARM: 7489/1: errata: fix workaround for erratum #720789 on UP systems 2012-08-11 09:16:00 +01:00
vmregion.c
vmregion.h ARM: dma-mapping: add support for IOMMU mapper 2012-05-21 15:06:23 +02:00