diff mbox series

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

Message ID 20190215220250.30883-1-paul.burton@mips.com (mailing list archive)
State Mainlined
Commit d411da06abbe4c7cad0cc16b509d10b43da783a8
Headers show
Series MIPS: dma-noncoherent: Remove bogus condition in dma_sync_phys() | expand

Commit Message

Paul Burton Feb. 15, 2019, 10:03 p.m. UTC
Commit e36863a550da ("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: Paul Burton <paul.burton@mips.com>
---

 arch/mips/mm/dma-noncoherent.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

Comments

Paul Burton Feb. 19, 2019, 8:48 p.m. UTC | #1
Hello,

Paul Burton wrote:
> Commit e36863a550da ("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: Paul Burton <paul.burton@mips.com>

Applied to mips-next.

Thanks,
    Paul

[ This message was auto-generated; if you believe anything is incorrect
  then please email paul.burton@mips.com to report it. ]
diff mbox series

Patch

diff --git a/arch/mips/mm/dma-noncoherent.c b/arch/mips/mm/dma-noncoherent.c
index f7e0fd6b7619..b57465733e87 100644
--- a/arch/mips/mm/dma-noncoherent.c
+++ b/arch/mips/mm/dma-noncoherent.c
@@ -120,13 +120,8 @@  static inline void dma_sync_phys(phys_addr_t paddr, size_t size,
 		if (PageHighMem(page)) {
 			void *addr;
 
-			if (offset + len > PAGE_SIZE) {
-				if (offset >= PAGE_SIZE) {
-					page += offset >> PAGE_SHIFT;
-					offset &= ~PAGE_MASK;
-				}
+			if (offset + len > PAGE_SIZE)
 				len = PAGE_SIZE - offset;
-			}
 
 			addr = kmap_atomic(page);
 			dma_sync_virt(addr + offset, len, dir);