CVE-2026-72375: afs: Fix reinitialisation of the inode, in particular ->lock_work
In the Linux kernel, the following vulnerability has been resolved:
afs: Fix reinitialisation of the inode, in particular ->lockwork
It seems that initalising afsvnode::lockwork a single time in the slab's init function isn't sufficient for workstructs. This results in the DEBUGOBJECTS debugging stuff producing a warning occasionally when running the generic/131 xfstest:
ODEBUG: activate not available (active state 0) object: 0000000016d8760f object type: workstruct hint: afslockwork+0x0/0x220 WARNING: lib/debugobjects.c:629 at debugprintobject+0x4b/0x90, CPU#3: locktest/7695 ... CPU: 3 UID: 0 PID: 7695 Comm: locktest Tainted: G S 7.1.0-build3+ #2771 PREEMPT ... RIP: 0010:debugprintobject+0x65/0x90 ... Call Trace: <TASK> ? pfxafslockwork+0x10/0x10 debugobjectactivate+0x122/0x170 insertwork+0x25/0x60 queuework+0x2e0/0x340 queuedelayedworkon+0x48/0x70 afsflreleaseprivate+0x57/0x70 locksreleaseprivate+0x5c/0xa0 locksfreelock+0xe/0x20 posixlockinode+0x55f/0x5b0 lockslockinodewait+0x81/0x140 ? filewriteandwaitrange+0x50/0x70 afslock+0xcd/0x110 fcntlsetlk+0x10d/0x260 dofcntl+0x24e/0x5b0 dosysfcntl+0x6a/0x90 dosyscall64+0x11e/0x310 entrySYSCALL64afterhwframe+0x71/0x79
Fix this by reinitialising ->lockwork after allocating an inode.
Also, flush ->lockwork when the inode is being evicted to make sure it's not still running.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Apply the kernel fix so that afs_vnode::lock_work is reinitialised when the inode is allocated, and specifically reinitialise ->lock_work after allocating an inode (the text notes init function for work_structs is not sufficient).
Linux kernel (AFS client) afs_vnode::lock_work initialization/reinitialization = Reinitialize afs_vnode::lock_work after allocating an inode (not only once at slab/object init) - Compensating control
As described in the report, flush/ensure ->lock_work when the inode is being evicted to avoid reusing an improperly initialised work_struct (i.e., make sure it's flushed during inode eviction).