Prechádzať zdrojové kódy

qcacld-3.0: Fix 32-bit crash on markings

The offending code did not get the order of operations right.
It was: shift 16, cast 64,shift 16 and should have been:
cast, shift 16, shift 16.

CRs-Fixed: 2000844
Change-Id: I65cf4aaf0c20535070eb63b15d77b8c3c7dcb4e4
Orhan K AKYILDIZ 8 rokov pred
rodič
commit
4900e1d357
1 zmenil súbory, kde vykonal 4 pridanie a 2 odobranie
  1. 4 2
      core/dp/htt/htt_rx.c

+ 4 - 2
core/dp/htt/htt_rx.c

@@ -395,8 +395,10 @@ htt_rx_in_ord_paddr_get(uint32_t *u32p)
 	paddr = (qdf_dma_addr_t)HTT_RX_IN_ORD_PADDR_IND_PADDR_GET(*u32p);
 	if (sizeof(qdf_dma_addr_t) > 4) {
 		u32p++;
-		paddr |= ((qdf_dma_addr_t)
-			(HTT_RX_IN_ORD_PADDR_IND_PADDR_GET(*u32p) << 16) << 16);
+		/* 32 bit architectures dont like <<32 */
+		paddr |= (((qdf_dma_addr_t)
+			  HTT_RX_IN_ORD_PADDR_IND_PADDR_GET(*u32p))
+			  << 16 << 16);
 	}
 	paddr = htt_rx_paddr_unmark_high_bits(paddr);