CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's NFS server (nfsd), specifically in the handling of delegation recalls, where a failure to queue a recall results in a persistent state that prevents subsequent delegation breaks. This can lead to conflicts where open or lock operations stall indefinitely due to the delegation not being properly managed. Administrators of systems utilizing NFS should prioritize addressing this issue to ensure proper delegation handling and avoid potential deadlocks in their environments.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: nfsd: clear CALLBACK_RUNNING on failed delegation recall queue nfsd_break_one_deleg() sets NFSD4_CALLBACK_RUNNING via test_and_set_bit at entry to serialize recall work, then calls nfsd4_run_cb() to queue the recall. When the queue attempt fails the refcount bump is undone, but the RUNNING bit is left set. The only site that clears the bit is nfsd41_destroy_cb() (fs/nfsd/nfs4callback.c), which runs from the workqueue and is therefore unreachable when nothing was queued. The bit becomes a permanent latch on dp->dl_recall.cb_flags: every subsequent break_lease() on the same delegation hits the early-return guard in nfsd_break_one_deleg() and silently skips the recall, so the delegation is never broken and the conflicting open or lock stalls. Fix by clearing NFSD4_CALLBACK_RUNNING on the !queued branch alongside the refcount_dec.