HomeFreeBSD

Merge r331871:

Description

Merge r331871:

Handle a special case when a slab can fit only one allocation,
and zone has a large alignment. With alignment taken into
account uk_rsize will be greater than space in a slab. However,
since we have only one item per slab, it is always naturally
aligned.

Code that will panic before this change with 4k page:

      z = uma_zcreate("test", 3984, NULL, NULL, NULL, NULL, 31, 0);
      uma_zalloc(z, M_WAITOK);

A practical scenario to hit the panic is a machine with 56 CPUs
and 2 NUMA domains, which yields in zone size of 3984 (on head).

PR: 227116

Details