2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-24 05:04:00 +08:00
linux-next/drivers/dma
Russell King - ARM Linux b61be8d728 ARM: PL08x: ensure pl08x_pre_boundary() works for any value of addr
pl08x_pre_boundary() was unsafe with addresses towards the top of
memory space:

	boundary = ((addr >> PL08X_BOUNDARY_SHIFT) + 1)
			<< PL08X_BOUNDARY_SHIFT;

This can overflow a 32-bit number, producing zero.  When it does:

	if (boundary < addr + len)
		return boundary - addr;
	else
		return len;

results in (boundary - addr) returning either a large positive value.
Also if addr + len overflows, this calculation also fails.

We can fix this trivially as the only thing we're actually interested
in is the value of the least significant PL08X_BOUNDARY_SHIFT bits:

	boundary_len = PL08X_BOUNDARY_SIZE -
		(addr & (PL08X_BOUNDARY_SIZE - 1));

gives us the number of bytes before 'addr' becomes a multiple of
PL08X_BOUNDARY_SIZE.  We can then just take the min() of the two
calculated lengths.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2011-01-04 19:16:13 -08:00
..
ioat ioat2: fix performance regression 2010-10-13 15:43:10 -07:00
ipu DMAENGINE: extend the control command to include an arg 2010-05-17 16:30:42 -07:00
ppc4xx of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
amba-pl08x.c ARM: PL08x: ensure pl08x_pre_boundary() works for any value of addr 2011-01-04 19:16:13 -08:00
at_hdmac_regs.h at_hdmac: implement a private tx_list 2009-09-08 17:53:03 -07:00
at_hdmac.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2010-08-09 21:00:07 -07:00
coh901318_lli.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
coh901318_lli.h tree-wide: Assorted spelling fixes 2010-02-09 11:13:56 +01:00
coh901318.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2010-10-27 19:04:36 -07:00
dmaengine.c async_tx: make async_tx channel switching opt-in 2010-10-07 17:08:32 -07:00
dmatest.c dma: dmatest: fix potential sign bug 2010-08-04 14:27:47 -07:00
dw_dmac_regs.h dw_dmac: implement a private tx_list 2009-09-08 17:53:02 -07:00
dw_dmac.c DMAENGINE: extend the control command to include an arg 2010-05-17 16:30:42 -07:00
fsldma.c fsldma: improved DMA_SLAVE support 2010-10-07 14:41:41 -07:00
fsldma.h fsldma: major cleanups and fixes 2010-02-02 14:51:42 -07:00
imx-dma.c dma: imx-dma: fix signedness bug 2010-10-22 11:08:27 -07:00
imx-sdma.c dmaengine: Add Freescale i.MX SDMA support 2010-10-05 15:49:26 -07:00
intel_mid_dma_regs.h intel_mid_dma: change the slave interface 2010-10-07 15:03:44 -07:00
intel_mid_dma.c intel_mid_dma: change the slave interface 2010-10-07 15:03:44 -07:00
iop-adma.c Merge branch 'ioat' into dmaengine 2010-05-17 16:30:58 -07:00
iovlock.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Kconfig drivers/dma/Kconfig: add part number for Topcliff. 2010-10-29 14:14:02 -07:00
Makefile Merge branches 'dma40', 'pl08x', 'fsldma', 'imx' and 'intel-mid' into dmaengine 2010-10-07 15:19:01 -07:00
mpc512x_dma.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
mv_xor.c dmaengine: fix interrupt clearing for mv_xor 2010-09-23 14:14:22 -07:00
mv_xor.h mv_xor: implement a private tx_list 2009-09-08 17:53:03 -07:00
pch_dma.c NULL-terminate all pci_device_id tables 2010-10-27 20:33:05 +10:30
pl330.c DMA: PL330: Add dma api driver 2010-05-23 20:28:19 -07:00
shdma.c dma/shdma: move dereference below the NULL check 2010-09-22 15:29:17 -07:00
shdma.h dmaengine: shdma: Introduce include/linux/sh_dma.h 2010-03-23 17:20:06 +09:00
ste_dma40_ll.c ste_dma40: remove enum for endianess 2010-10-19 15:17:07 -07:00
ste_dma40_ll.h ste_dma40: move mode_opt to separate config 2010-10-19 15:17:07 -07:00
ste_dma40.c Merge branch 'dma40' into dmaengine 2010-10-19 15:34:26 -07:00
timb_dma.c dma/timberdale: simplify conditional 2010-10-19 15:20:11 -07:00
txx9dmac.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2010-05-21 17:05:46 -07:00
txx9dmac.h txx9dmac: implement a private tx_list 2009-09-08 17:53:03 -07:00