This has been reported by covscan in our internal CI for v21.11: 2. dpdk-21.11/lib/hash/rte_thash.c:116: assignment: Assigning: "j" = "0". 4. dpdk-21.11/lib/hash/rte_thash.c:118: large_shift: In expression "(uint16_t)rss_key[(i + 1) % size] >> 8 - j", right shifting "rss_key[(i + 1) % size]" by more than 7 bits always yields zero. The shift amount, "8 - j", is 8. # 116| for (j = 0; j < 8; j++) { # 117| left_part = rss_key[i] << j; # 118|-> right_part = (uint16_t)(rss_key[(i + 1) % size]) >> # 119| (8 - j); # 120| m[i * 8 + j] = left_part|right_part;
Hi David, This is exactly what I wanted. Here I just read an unaligned byte, and when j == 0, I need to read only "left_part". So I would suggest marking this as intentional in coverity.