HomeFreeBSD

Plug a memory leak and potential NULL-pointer dereference introduced in r331214.

Description

Plug a memory leak and potential NULL-pointer dereference introduced in r331214.

Each TCP connection that uses the system default cc_newreno(4) congestion
control algorithm module leaks a "struct newreno" (8 bytes of memory) at
connection initialisation time. The NULL-pointer dereference is only germane
when using the ABE feature, which is disabled by default.

While at it:

  • Defer the allocation of memory until it is actually needed given that ABE is optional and disabled by default.
  • Document the ENOMEM errno in getsockopt(2)/setsockopt(2).
  • Document ENOMEM and ENOBUFS in tcp(4) as being synonymous given that they are used interchangeably throughout the code.
  • Fix a few other nits also accidentally omitted from the original patch.

Reported by: Harsh Jain on freebsd-net@
Tested by: tjh@
Differential Revision: https://reviews.freebsd.org/D15358

Details