Commit d411da06 authored by Paul Burton's avatar Paul Burton

MIPS: dma-noncoherent: Remove bogus condition in dma_sync_phys()

Commit e36863a5 ("MIPS: HIGHMEM DMA on noncoherent MIPS32
processors") introduced code which:

  1) Calculates an offset within a page, by ANDing an address
     with ~PAGE_MASK.

  2) Checks whether that offset is >= PAGE_SIZE.

This check can never evaluate true, making the code it guards
unreachable. smatch spots bogus arithmetic resulting from the
impossible condition, resulting in the following warning:

  arch/mips/mm/dma-noncoherent.c:125
    dma_sync_phys() warn: mask and shift to zero

Fix this by removing the impossible to satisfy condition & the
unreachable code it guards.
Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
Cc: linux-mips@vger.kernel.org
Cc: Christoph Hellwig <hch@lst.de>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Robin Murphy <robin.murphy@arm.com>
parent 66b6572a
...@@ -120,13 +120,8 @@ static inline void dma_sync_phys(phys_addr_t paddr, size_t size, ...@@ -120,13 +120,8 @@ static inline void dma_sync_phys(phys_addr_t paddr, size_t size,
if (PageHighMem(page)) { if (PageHighMem(page)) {
void *addr; void *addr;
if (offset + len > PAGE_SIZE) { if (offset + len > PAGE_SIZE)
if (offset >= PAGE_SIZE) {
page += offset >> PAGE_SHIFT;
offset &= ~PAGE_MASK;
}
len = PAGE_SIZE - offset; len = PAGE_SIZE - offset;
}
addr = kmap_atomic(page); addr = kmap_atomic(page);
dma_sync_virt(addr + offset, len, dir); dma_sync_virt(addr + offset, len, dir);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment