Skip to contentSkip to conversation

lpm: undefined right shift

DPDK/other Bug 1587 [email protected] 1 participant 1 message Nov 20, 2024

lore
Share & tools
lore
#0 lore raw

https://bugs.dpdk.org/show_bug.cgi?id=1587

Bug ID: 1587
Summary: lpm: undefined right shift
Product: DPDK
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: other
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---

Both rte_lpm.c and rte_lpm6.c are using >> operator on a negative integer. According to the C standard the result of that is implementation defined (ie not portable).

Reported by PVS studio as warning:
https://pvs-studio.com/en/docs/warnings/v610/

static uint32_t __rte_pure
depth_to_mask(uint8_t depth)

{
        VERIFY_DEPTH(depth);

        /* To calculate a mask start with a 1 on the left hand side and right
         * shift while populating the left hand side with 1's
         */
        return (int)0x80000000 >> (depth - 1);
}

and

static uint8_t __rte_pure
depth_to_mask_1b(uint8_t depth)

{
        /* To calculate a mask start with a 1 on the left hand side and right
         * shift while populating the left hand side with 1's
         */
        return (signed char)0x80 >> (depth - 1);
}
Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.