--- x/fs/kernfs/file.c +++ y/fs/kernfs/file.c @@ -756,6 +756,7 @@ static void kernfs_release_file(struct k lockdep_assert_held(kernfs_open_file_mutex_ptr(kn)); if (!of->released) { + mutex_lock(&of->mutex); /* * A file is never detached without being released and we * need to be able to release files which are deactivated @@ -764,6 +765,7 @@ static void kernfs_release_file(struct k kn->attr.ops->release(of); of->released = true; of_on(of)->nr_to_release--; + mutex_unlock(&of->mutex); } }