[PATCH v2 00/16] slab: Introduce kmalloc_size_roundup()

Kees Cook
2022-09-23T20:33:06Z

Hi,

The main details on this series are in patch #2's commit log. It's long,
so I won't repeat it again here for the v2. As before, I've tried to
trim the CC list.

v2:
- _keep_ ksize(), but remove instrumentation (makes patch series smaller)
- reorganized skbuff logic to avoid yet more copy/paste code
- added a WARN to a separate skbuff ksize usage
- add new refactorings: bpf, openvswitch, devres, mempool, kasan
- dropped "independent" patches: iwlwifi, x86/microcode/AMD (sent separately)
v1: https://lore.kernel.org/lkml/20220922031013.2150682-1-keescook@chromium.org

Notes:

Originally when I was going to entirely remove ksize(), there were a
handful for refactorings that just needed to do ksize -> __ksize. In
the end, it was cleaner to actually leave ksize() as a real function,
just without the kasan instrumentation. I wonder, however, if it should
be converted into a static inline now?

I dropped Jakub's Ack because I refactored that code a bunch more.

The 2 patches that didn't need to call kmalloc_size_roundup() don't need
to be part of this series. (One is already in -next, actually.)

I'd like to land at least the first two patches in the coming v6.1 merge
window so that the per-subsystem patches can be sent to their various
subsystems directly. Vlastimil, what you think?

Thanks!

-Kees

Kees Cook (16):
slab: Remove __malloc attribute from realloc functions
slab: Introduce kmalloc_size_roundup()
skbuff: Proactively round up to kmalloc bucket size
skbuff: Phase out ksize() fallback for frag_size
net: ipa: Proactively round up to kmalloc bucket size
igb: Proactively round up to kmalloc bucket size
btrfs: send: Proactively round up to kmalloc bucket size
dma-buf: Proactively round up to kmalloc bucket size
coredump: Proactively round up to kmalloc bucket size
openvswitch: Use kmalloc_size_roundup() to match ksize() usage
bpf: Use kmalloc_size_roundup() to match ksize() usage
devres: Use kmalloc_size_roundup() to match ksize() usage
mempool: Use kmalloc_size_roundup() to match ksize() usage
kasan: Remove ksize()-related tests
mm: Make ksize() a reporting-only function
slab: Restore __alloc_size attribute to __kmalloc_track_caller

drivers/base/devres.c | 3 +
drivers/dma-buf/dma-resv.c | 9 ++-
drivers/net/ethernet/intel/igb/igb_main.c | 5 +-
drivers/net/ipa/gsi_trans.c | 7 +-
fs/btrfs/send.c | 11 +--
fs/coredump.c | 7 +-
include/linux/compiler_types.h | 13 ++--
include/linux/skbuff.h | 5 +-
include/linux/slab.h | 46 +++++++++++--
kernel/bpf/verifier.c | 49 +++++++++-----
lib/test_kasan.c | 42 ------------
mm/kasan/shadow.c | 4 +-
mm/mempool.c | 2 +-
mm/slab.c | 9 ++-
mm/slab_common.c | 62 ++++++++++-------
net/core/skbuff.c | 82 ++++++++++++-----------
net/openvswitch/flow_netlink.c | 2 +-
17 files changed, 192 insertions(+), 166 deletions(-)

--
2.34.1