When the use of the TCP Hostcache facility is disabled (not the default),
a code path exists where an uninitialized struct hc_metrics_lite is
presenting some small MSS value, which can end up being used; Note that
in the majority of cases, the expectation would be for the uninitialized
values to hold larger MSS values, which are clamped down to the MTU of
the interface.
The probability to hit this is therefore only 1 / (uint32/(1500-576)) or 2.1E-7
The offending branch is line 440/441 in tcp_hostcache:
void tcp_hc_get(struct in_conninfo *inc, struct hc_metrics_lite *hc_metrics_lite) { struct hc_metrics *hc_entry; if (!V_tcp_use_hostcache) return;
while other branches all return or zero the struct.
However, initializing the struct in tcp_mss_update also a addresses a
compiler warning.