Linux filesystem development
 help / color / mirror / Atom feed
From: David Howells <dhowells@redhat.com>
To: Christian Brauner <christian@brauner.io>
Cc: David Howells <dhowells@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>,
	linux-afs@lists.infradead.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org, Thomas Gleixner <tglx@kernel.org>
Subject: [PATCH v2 10/17] afs: Fix reinitialisation of the inode, in particular ->lock_work
Date: Thu, 18 Jun 2026 08:48:53 +0100	[thread overview]
Message-ID: <20260618074903.2374756-11-dhowells@redhat.com> (raw)
In-Reply-To: <20260618074903.2374756-1-dhowells@redhat.com>

It seems that initalising afs_vnode::lock_work a single time in the slab's
init function isn't sufficient for work_structs.  This results in the
DEBUG_OBJECTS debugging stuff producing a warning occasionally when running
the generic/131 xfstest:

 ODEBUG: activate not available (active state 0) object: 0000000016d8760f object type: work_struct hint: afs_lock_work+0x0/0x220
 WARNING: lib/debugobjects.c:629 at debug_print_object+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:debug_print_object+0x65/0x90
 ...
 Call Trace:
  <TASK>
  ? __pfx_afs_lock_work+0x10/0x10
  debug_object_activate+0x122/0x170
  insert_work+0x25/0x60
  __queue_work+0x2e0/0x340
  queue_delayed_work_on+0x48/0x70
  afs_fl_release_private+0x57/0x70
  locks_release_private+0x5c/0xa0
  locks_free_lock+0xe/0x20
  posix_lock_inode+0x55f/0x5b0
  locks_lock_inode_wait+0x81/0x140
  ? file_write_and_wait_range+0x50/0x70
  afs_lock+0xcd/0x110
  fcntl_setlk+0x10d/0x260
  do_fcntl+0x24e/0x5b0
  __do_sys_fcntl+0x6a/0x90
  do_syscall_64+0x11e/0x310
  entry_SYSCALL_64_after_hwframe+0x71/0x79

Fix this by reinitialising ->lock_work after allocating an inode.

Fixes: e8d6c554126b ("AFS: implement file locking")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Thomas Gleixner <tglx@kernel.org>
cc: linux-afs@lists.infradead.org
---
 fs/afs/super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/afs/super.c b/fs/afs/super.c
index dec091e569c4..82bb713825a0 100644
--- a/fs/afs/super.c
+++ b/fs/afs/super.c
@@ -660,7 +660,6 @@ static void afs_i_init_once(void *_vnode)
 	INIT_LIST_HEAD(&vnode->wb_keys);
 	INIT_LIST_HEAD(&vnode->pending_locks);
 	INIT_LIST_HEAD(&vnode->granted_locks);
-	INIT_DELAYED_WORK(&vnode->lock_work, afs_lock_work);
 	INIT_LIST_HEAD(&vnode->cb_mmap_link);
 	seqlock_init(&vnode->cb_lock);
 }
@@ -694,6 +693,7 @@ static struct inode *afs_alloc_inode(struct super_block *sb)
 
 	init_rwsem(&vnode->rmdir_lock);
 	INIT_WORK(&vnode->cb_work, afs_invalidate_mmap_work);
+	INIT_DELAYED_WORK(&vnode->lock_work, afs_lock_work);
 
 	_leave(" = %p", &vnode->netfs.inode);
 	return &vnode->netfs.inode;


  parent reply	other threads:[~2026-06-18  7:49 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-18  7:48 [PATCH v2 00/17] afs: Miscellaneous fixes David Howells
2026-06-18  7:48 ` [PATCH v2 01/17] afs: handle CB.InitCallBackState3 requests without a server record David Howells
2026-06-18  7:48 ` [PATCH v2 02/17] afs: Fix error code in afs_extract_vl_addrs() David Howells
2026-06-18  7:48 ` [PATCH v2 03/17] afs: fix NULL pointer dereference in afs_get_tree() David Howells
2026-06-18  7:48 ` [PATCH v2 04/17] afs: Remove setting of AS_RELEASE_ALWAYS for symlinks and mountpoints David Howells
2026-06-18  7:48 ` [PATCH v2 05/17] afs: use kvfree() to free memory allocated by kvcalloc() David Howells
2026-06-18  7:48 ` [PATCH v2 06/17] afs: Remove erroneous seq |= 1 in volume lookup loop David Howells
2026-06-18  7:48 ` [PATCH v2 07/17] afs: check for duplicate servers in VL server list David Howells
2026-06-18  7:48 ` [PATCH v2 08/17] afs: Fix bulk lookup malfunction due to change in dir_emit() API David Howells
2026-06-18  7:48 ` [PATCH v2 09/17] afs: Fix misplaced inc of net->cells_outstanding David Howells
2026-06-18  7:48 ` David Howells [this message]
2026-06-18  7:48 ` [PATCH v2 11/17] afs: Fix callback service message parsers to pass through -EAGAIN David Howells
2026-06-18  7:48 ` [PATCH v2 12/17] afs: Fix double netfs initialisation in afs_root_iget() David Howells
2026-06-18  7:48 ` [PATCH v2 13/17] afs: Don't use AS_RELEASE_ALWAYS for dir/symlinks part 2 David Howells
2026-06-18  7:48 ` [PATCH v2 14/17] afs: Remove erroneous seq |= 1 in volume lookup loop David Howells
2026-06-18  8:25   ` Oleg Nesterov
2026-06-18 11:59     ` David Howells
2026-06-18 13:53     ` David Howells
2026-06-18 15:08       ` Oleg Nesterov
2026-06-18  8:43   ` 答复: [????] " Li,Rongqing
2026-06-18  7:48 ` [PATCH v2 15/17] afs: Fix leak of ungot volume David Howells
2026-06-18  7:48 ` [PATCH v2 16/17] afs: Fix missing NULL pointer check in afs_break_some_callbacks() David Howells
2026-06-18  7:49 ` [PATCH v2 17/17] afs: Fix vllist leak David Howells

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260618074903.2374756-11-dhowells@redhat.com \
    --to=dhowells@redhat.com \
    --cc=christian@brauner.io \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.dionne@auristor.com \
    --cc=tglx@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox