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

            Bug ID: 2037
           Summary: net/intel/ice: parse_bool clobbers adjacent devargs
                    fields
           Product: DPDK
           Version: 26.11
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: ethdev
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

drivers/net/intel/ice/ice_ethdev.c:2144, ice_ethdev.h:624

parse_bool() stores an int:

        static int
        parse_bool(const char *key, const char *value, void *args)
        {
                int *i = args;
                ...
                *i = (value[0] == '1');

Three of its five callers pass the address of a uint8_t in struct
ice_devargs:

        struct ice_devargs {
                int rx_low_latency;
                int safe_mode_support;
                uint8_t proto_xtr_dflt;
                uint8_t default_mac_disable;    <- 4 byte store
                uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
                uint8_t pin_idx;
                uint8_t pps_out_ena;
                uint8_t ddp_load_sched;         <- 4 byte store
                uint8_t tm_exposed_levels;
                uint8_t source_prune;           <- 4 byte store
                uint32_t rl_burst_size;
                ...

"default-mac-disable" is the notable one: the three bytes past it land in
proto_xtr[], which ice_parse_devargs() has just memset to PROTO_XTR_NONE a
few lines earlier, so the protocol extraction configuration is silently
altered. ddp_load_sched overruns into tm_exposed_levels/source_prune, and
source_prune into rl_burst_size.

Fixes: 66214b547c65 ("net/ice: add option to disable default MAC")

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to