From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Eric Biggers <ebiggers@kernel.org>
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-api@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-mmc@vger.kernel.org, Bart Van Assche <bvanassche@acm.org>
Subject: Re: [PATCH v2 2/3] block: don't delete queue kobject before its children
Date: Tue, 30 Nov 2021 08:09:45 +0100 [thread overview]
Message-ID: <YaXOOcoMZb0fymVX@kroah.com> (raw)
In-Reply-To: <20211130040306.148925-3-ebiggers@kernel.org>
On Mon, Nov 29, 2021 at 08:03:05PM -0800, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
>
> kobjects aren't supposed to be deleted before their child kobjects are
> deleted. Apparently this is usually benign; however, a WARN will be
> triggered if one of the child kobjects has a named attribute group:
>
> sysfs group 'modes' not found for kobject 'crypto'
> WARNING: CPU: 0 PID: 1 at fs/sysfs/group.c:278 sysfs_remove_group+0x72/0x80
> ...
> Call Trace:
> sysfs_remove_groups+0x29/0x40 fs/sysfs/group.c:312
> __kobject_del+0x20/0x80 lib/kobject.c:611
> kobject_cleanup+0xa4/0x140 lib/kobject.c:696
> kobject_release lib/kobject.c:736 [inline]
> kref_put include/linux/kref.h:65 [inline]
> kobject_put+0x53/0x70 lib/kobject.c:753
> blk_crypto_sysfs_unregister+0x10/0x20 block/blk-crypto-sysfs.c:159
> blk_unregister_queue+0xb0/0x110 block/blk-sysfs.c:962
> del_gendisk+0x117/0x250 block/genhd.c:610
>
> Fix this by moving the kobject_del() and the corresponding
> kobject_uevent() to the correct place.
>
> Fixes: 2c2086afc2b8 ("block: Protect less code with sysfs_lock in blk_{un,}register_queue()")
> Signed-off-by: Eric Biggers <ebiggers@google.com>
> ---
> block/blk-sysfs.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
> index 91d3805a6ec6b..1368dfe3ee500 100644
> --- a/block/blk-sysfs.c
> +++ b/block/blk-sysfs.c
> @@ -951,15 +951,17 @@ void blk_unregister_queue(struct gendisk *disk)
> */
> if (queue_is_mq(q))
> blk_mq_unregister_dev(disk_to_dev(disk), q);
> -
> - kobject_uevent(&q->kobj, KOBJ_REMOVE);
> - kobject_del(&q->kobj);
> blk_trace_remove_sysfs(disk_to_dev(disk));
>
> mutex_lock(&q->sysfs_lock);
> elv_unregister_queue(q);
> disk_unregister_independent_access_ranges(disk);
> mutex_unlock(&q->sysfs_lock);
> +
> + /* Now that all child objects were deleted, the queue can be deleted. */
> + kobject_uevent(&q->kobj, KOBJ_REMOVE);
> + kobject_del(&q->kobj);
> +
> mutex_unlock(&q->sysfs_dir_lock);
>
> kobject_put(&disk_to_dev(disk)->kobj);
> --
> 2.34.1
>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
next prev parent reply other threads:[~2021-11-30 7:09 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-30 4:03 [PATCH v2 0/3] block: show crypto capabilities in sysfs Eric Biggers
2021-11-30 4:03 ` [PATCH v2 1/3] block: simplify calling convention of elv_unregister_queue() Eric Biggers
2021-11-30 6:44 ` Hannes Reinecke
2021-11-30 4:03 ` [PATCH v2 2/3] block: don't delete queue kobject before its children Eric Biggers
2021-11-30 6:45 ` Hannes Reinecke
2021-11-30 7:09 ` Greg Kroah-Hartman [this message]
2021-11-30 4:03 ` [PATCH v2 3/3] blk-crypto: show crypto capabilities in sysfs Eric Biggers
2021-11-30 6:49 ` Hannes Reinecke
2021-11-30 7:40 ` Eric Biggers
2021-12-01 6:45 ` Hannes Reinecke
2021-11-30 7:13 ` Greg Kroah-Hartman
2021-11-30 7:31 ` Eric Biggers
2021-11-30 7:49 ` Greg Kroah-Hartman
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=YaXOOcoMZb0fymVX@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=bvanassche@acm.org \
--cc=ebiggers@kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-scsi@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.