Page MenuHomeFreeBSD

netmap: silence -Wdefault-const-init-field-unsafe warning
ClosedPublic

Authored by arichardson on Sep 16 2025, 5:32 AM.
Tags
None
Referenced Files
F142982751: D52568.id162132.diff
Sun, Jan 25, 2:11 AM
F142936158: D52568.id168225.diff
Sat, Jan 24, 7:43 PM
Unknown Object (File)
Wed, Jan 21, 10:13 AM
Unknown Object (File)
Wed, Jan 21, 3:17 AM
Unknown Object (File)
Sun, Dec 28, 6:37 PM
Unknown Object (File)
Dec 10 2025, 4:59 AM
Unknown Object (File)
Dec 3 2025, 4:18 PM
Unknown Object (File)
Nov 30 2025, 6:29 PM
Subscribers

Details

Summary

The netmap_ring struct starts with various const members and rencent
clang warns about leaving them uninitialized. Having them const in the
first place is highly suspicious since they are updated with various
macros but using hand-coded __DECONST(). But fixing that is a more
invasive change that I am unable to test.

.../freebsd/sys/dev/netmap/netmap_kloop.c:320:21: error: default initialization of an object of type 'struct netmap_ring' with const member leaves the object uninitialized [-Werror,-Wdefault-const-init-field-unsafe]
  320 |         struct netmap_ring shadow_ring; /* shadow copy of the netmap_ring */
      |                            ^
.../freebsd/sys/net/netmap.h:290:16: note: member 'buf_ofs' declared 'const' here
  290 |         const int64_t   buf_ofs;
      |                         ^
Test Plan

Compiles

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Thanks.

The fields are const because we want to prevent changes after they are initialized. Of course you need to drop the const to initialize them.
They are not meant to be updated.

This revision is now accepted and ready to land.Sep 17 2025, 9:57 PM