From nobody Tue Apr 7 01:19:01 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9959A334685; Mon, 16 Mar 2026 22:44:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701043; cv=none; b=CiaMTEClsFu0gmsiZAPDyxXeNqT1JeX14ZF4Bm40kxL38gojCXPX5qbYa3iGwf/p162lpZN5k0lmSQAQ/lhu8mNL1/lrOW/pt+btSXrf/FiReioDUVy4ymB4IhtZZBVaEMyu96ihpz47UGJvyrneUb0V8yspLjgS6tirzQjHKdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701043; c=relaxed/simple; bh=rK99xjO97vLlnrpiCCJhU6xQmBcRpnOCdghKR35r3nE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Md78TLOGDKFxNnVQL6oI+Suh8KcOorjCBJoMAUBnpcLxI/BY8+qX3974cv15ntYzE1AoOIKtAHeAWYorHkCu46V/j+nNFWCIBPSdiPhqIcC/cFocjWdfxJfz2vMWnj8YzwVkP/2qIo+dEsNq0qJnVbVHpbeQrvTO8fecr8fTj2Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=jeCWjYeP; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="jeCWjYeP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1773701039; bh=rK99xjO97vLlnrpiCCJhU6xQmBcRpnOCdghKR35r3nE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jeCWjYePIETn8H4N0kboCT+HaNDfp0+pbwyJN3lQhOr2wWtB0G3c/V0XAxFWBw/Yj IwzG+VKLQ4mpBk0RHCFDWfwcuAS9UkC9GBzaAZeSS0wy+N1dxdlkzDCqkACnB6gkg6 cZDsNv4pZ9sFMyfYoZViWwnuAA30cZe+nDQkTIco= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Mon, 16 Mar 2026 23:43:51 +0100 Subject: [PATCH 1/4] block: make queue_sysfs_entry instances const Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-b4-sysfs-const-attr-block-v1-1-a35d73b986b0@weissschuh.net> References: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> In-Reply-To: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773701039; l=4661; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=rK99xjO97vLlnrpiCCJhU6xQmBcRpnOCdghKR35r3nE=; b=xqBiSVWU++aCYkyesbQyB4lWAycwnX/oKIU6sueT5af+NBFBl7bGXDn6b2yH9kLM2x6AkIiFQ nqF0E/EvJumD0ERSxNg/ZSgioAtu0NZ9AHTFD7kWfXCPzqmmC44iAZY X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= The queue_sysfs_entry structures are never modified, mark them as const. Signed-off-by: Thomas Wei=C3=9Fschuh Reviewed-by: John Garry --- block/blk-sysfs.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 878b8a4b55bb..f22c1f253eb3 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -581,27 +581,27 @@ static int queue_wc_store(struct gendisk *disk, const= char *page, return 0; } =20 -#define QUEUE_RO_ENTRY(_prefix, _name) \ -static struct queue_sysfs_entry _prefix##_entry =3D { \ - .attr =3D { .name =3D _name, .mode =3D 0444 }, \ - .show =3D _prefix##_show, \ +#define QUEUE_RO_ENTRY(_prefix, _name) \ +static const struct queue_sysfs_entry _prefix##_entry =3D { \ + .attr =3D { .name =3D _name, .mode =3D 0444 }, \ + .show =3D _prefix##_show, \ }; =20 -#define QUEUE_RW_ENTRY(_prefix, _name) \ -static struct queue_sysfs_entry _prefix##_entry =3D { \ - .attr =3D { .name =3D _name, .mode =3D 0644 }, \ - .show =3D _prefix##_show, \ - .store =3D _prefix##_store, \ +#define QUEUE_RW_ENTRY(_prefix, _name) \ +static const struct queue_sysfs_entry _prefix##_entry =3D { \ + .attr =3D { .name =3D _name, .mode =3D 0644 }, \ + .show =3D _prefix##_show, \ + .store =3D _prefix##_store, \ }; =20 #define QUEUE_LIM_RO_ENTRY(_prefix, _name) \ -static struct queue_sysfs_entry _prefix##_entry =3D { \ +static const struct queue_sysfs_entry _prefix##_entry =3D { \ .attr =3D { .name =3D _name, .mode =3D 0444 }, \ .show_limit =3D _prefix##_show, \ } =20 #define QUEUE_LIM_RW_ENTRY(_prefix, _name) \ -static struct queue_sysfs_entry _prefix##_entry =3D { \ +static const struct queue_sysfs_entry _prefix##_entry =3D { \ .attr =3D { .name =3D _name, .mode =3D 0644 }, \ .show_limit =3D _prefix##_show, \ .store_limit =3D _prefix##_store, \ @@ -665,7 +665,7 @@ QUEUE_LIM_RO_ENTRY(queue_virt_boundary_mask, "virt_boun= dary_mask"); QUEUE_LIM_RO_ENTRY(queue_dma_alignment, "dma_alignment"); =20 /* legacy alias for logical_block_size: */ -static struct queue_sysfs_entry queue_hw_sector_size_entry =3D { +static const struct queue_sysfs_entry queue_hw_sector_size_entry =3D { .attr =3D {.name =3D "hw_sector_size", .mode =3D 0444 }, .show_limit =3D queue_logical_block_size_show, }; @@ -731,7 +731,7 @@ QUEUE_RW_ENTRY(queue_wb_lat, "wbt_lat_usec"); #endif =20 /* Common attributes for bio-based and request-based queues. */ -static struct attribute *queue_attrs[] =3D { +static const struct attribute *const queue_attrs[] =3D { /* * Attributes which are protected with q->limits_lock. */ @@ -791,7 +791,7 @@ static struct attribute *queue_attrs[] =3D { }; =20 /* Request-based queue attributes that are not relevant for bio-based queu= es. */ -static struct attribute *blk_mq_queue_attrs[] =3D { +static const struct attribute *const blk_mq_queue_attrs[] =3D { /* * Attributes which require some form of locking other than * q->sysfs_lock. @@ -811,7 +811,7 @@ static struct attribute *blk_mq_queue_attrs[] =3D { NULL, }; =20 -static umode_t queue_attr_visible(struct kobject *kobj, struct attribute *= attr, +static umode_t queue_attr_visible(struct kobject *kobj, const struct attri= bute *attr, int n) { struct gendisk *disk =3D container_of(kobj, struct gendisk, queue_kobj); @@ -827,7 +827,7 @@ static umode_t queue_attr_visible(struct kobject *kobj,= struct attribute *attr, } =20 static umode_t blk_mq_queue_attr_visible(struct kobject *kobj, - struct attribute *attr, int n) + const struct attribute *attr, int n) { struct gendisk *disk =3D container_of(kobj, struct gendisk, queue_kobj); struct request_queue *q =3D disk->queue; @@ -841,17 +841,17 @@ static umode_t blk_mq_queue_attr_visible(struct kobje= ct *kobj, return attr->mode; } =20 -static struct attribute_group queue_attr_group =3D { - .attrs =3D queue_attrs, - .is_visible =3D queue_attr_visible, +static const struct attribute_group queue_attr_group =3D { + .attrs_const =3D queue_attrs, + .is_visible_const =3D queue_attr_visible, }; =20 -static struct attribute_group blk_mq_queue_attr_group =3D { - .attrs =3D blk_mq_queue_attrs, - .is_visible =3D blk_mq_queue_attr_visible, +static const struct attribute_group blk_mq_queue_attr_group =3D { + .attrs_const =3D blk_mq_queue_attrs, + .is_visible_const =3D blk_mq_queue_attr_visible, }; =20 -#define to_queue(atr) container_of((atr), struct queue_sysfs_entry, attr) +#define to_queue(atr) container_of_const((atr), struct queue_sysfs_entry, = attr) =20 static ssize_t queue_attr_show(struct kobject *kobj, struct attribute *attr, char *page) --=20 2.53.0 From nobody Tue Apr 7 01:19:01 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 995032874FA; Mon, 16 Mar 2026 22:44:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701042; cv=none; b=WAHTfh3jLCN6xYS/pHW8zUNyYKRlvB4j/RowBhy0qIc2SkDvvve8RAYU/Nz8UmjfGpv0PDJEkg7M4Nd/9gub9hZtyI1Gnm3mWvT9g4a/VX92MjoDux4JdFlfIEXrE/Q6JSYSu0TfaqZuFx3i+JYadeTDO0G0gkZg6ga5CG14244= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701042; c=relaxed/simple; bh=YQU1ECK7cC/rI7Us3XGfwIRmQYUOjZYw/POtMje1mDs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YDSYwFRyz9qJObE7ObxnQNBYIA1s1AQnHjeh5/qJ5LhMKr1vPIFKIdTU11UQlrOphKOe14UpOXKwYD9Ib5lCOe0pLe+gkpevsyzVfq3gTFEa5y5Hz5pgl07052/wX2QgWwOeyywep1+MyrbiEF0AKSrQdhodMEzfL3ks7Ljdf/A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=VxPhT3Qw; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="VxPhT3Qw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1773701039; bh=YQU1ECK7cC/rI7Us3XGfwIRmQYUOjZYw/POtMje1mDs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VxPhT3Qw2h/WiZLYVmznwLk9BCiXgsLuHa6z58ie4Fr5T4IMy0nahEXqLesc0+x0s 7UvDIHsk/JSEBXdtqF4drMd7aLX9GYUICfsk38UzleucTusXbcmSMRx/CfarX/RDVB aAv2e6n8sTDjggrehxYAD4YCAgOkPNHBxuZJCGBE= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Mon, 16 Mar 2026 23:43:52 +0100 Subject: [PATCH 2/4] block: ia-ranges: make blk_ia_range_sysfs_entry instances const Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-b4-sysfs-const-attr-block-v1-2-a35d73b986b0@weissschuh.net> References: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> In-Reply-To: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773701039; l=1240; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=YQU1ECK7cC/rI7Us3XGfwIRmQYUOjZYw/POtMje1mDs=; b=cqgpvIf+I+/qOmtUAml0035t431AOBy8i3si3RvDNxXZpWz5HL6yZrcs2tTiFmo+sggkcSWmS Arf8ab8Kpc4BcWlrOHNkUFeYsAAydjC8xr6riskpnmDY6aGCY/hq9mt X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= The blk_ia_range_sysfs_entry structures are never modified, mark them as const. Signed-off-by: Thomas Wei=C3=9Fschuh Reviewed-by: John Garry --- block/blk-ia-ranges.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/block/blk-ia-ranges.c b/block/blk-ia-ranges.c index d479f5481b66..7be8b58893c9 100644 --- a/block/blk-ia-ranges.c +++ b/block/blk-ia-ranges.c @@ -30,17 +30,17 @@ struct blk_ia_range_sysfs_entry { ssize_t (*show)(struct blk_independent_access_range *iar, char *buf); }; =20 -static struct blk_ia_range_sysfs_entry blk_ia_range_sector_entry =3D { +static const struct blk_ia_range_sysfs_entry blk_ia_range_sector_entry =3D= { .attr =3D { .name =3D "sector", .mode =3D 0444 }, .show =3D blk_ia_range_sector_show, }; =20 -static struct blk_ia_range_sysfs_entry blk_ia_range_nr_sectors_entry =3D { +static const struct blk_ia_range_sysfs_entry blk_ia_range_nr_sectors_entry= =3D { .attr =3D { .name =3D "nr_sectors", .mode =3D 0444 }, .show =3D blk_ia_range_nr_sectors_show, }; =20 -static struct attribute *blk_ia_range_attrs[] =3D { +static const struct attribute *const blk_ia_range_attrs[] =3D { &blk_ia_range_sector_entry.attr, &blk_ia_range_nr_sectors_entry.attr, NULL, --=20 2.53.0 From nobody Tue Apr 7 01:19:01 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2306369974; Mon, 16 Mar 2026 22:44:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701043; cv=none; b=ACpOhhtSTT+hs2Lvt81i0SCCtU1E7zVYrSqbIeQt+VfWMNX3UBeFwpcYiHC75Nl7/d7zz8TqeAEZR9e7tc3eRl48ch7GGlzJBPhRfmtVWjOYFWZbMnf4ESs7CsDPwTd9clW0cXHtGMtHBlAAKiG7Qpmr7ICoNk+2mCKAGAKiIW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701043; c=relaxed/simple; bh=o4M9xO7cBkHyf5v4N4x3te1GCWb5dWMJ3kwvnEezD1A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p9RoJP0g1Z4ovvCYQBhr2H5Sm8EXZLS6vWWX4pvUwk+dd7aTYjFnaU15UIqHCXBcqeWuf/hjM5TdqkyIF+qYX810PnuZJjaWRHgUP7PLq1mEMx6qUhwuoJb0+iJj2U54GoWuXpYNc2IJluQ3tcbjE2LIvufcu9asXJtsjV84QYo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=VR5mMNxU; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="VR5mMNxU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1773701039; bh=o4M9xO7cBkHyf5v4N4x3te1GCWb5dWMJ3kwvnEezD1A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VR5mMNxU+nLxNb99nIgaB8JHhNpb81aLssiPIjfjom/m0uikWC4HpN1e/xXBA2ryT fxVwpV3D0L48qiTyKNkwKhNgCkSvV43Pn2lsWTGdWFC6EsHVoBvzbuLaerGjDxy/zu rXjeqb6R9i/Uv+NBxCPnO1atLhyJlWZJztJIk5Hg= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Mon, 16 Mar 2026 23:43:53 +0100 Subject: [PATCH 3/4] blk-crypto: make blk_crypto_attr instances const Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-b4-sysfs-const-attr-block-v1-3-a35d73b986b0@weissschuh.net> References: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> In-Reply-To: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773701039; l=5779; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=o4M9xO7cBkHyf5v4N4x3te1GCWb5dWMJ3kwvnEezD1A=; b=TspxzsaFQQ0opLhmofh7vV2DScE5xs9TZz2jADAR97nMw8aYr6PlM33eFoOUg0L1COQ/y9lsN dcqzdwgisxXC9qkinAA1G4Vb2Yb9Ma+3vmHCE2YOY+1XcRvnuTMjCrK X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= The blk_crypto_attrs structures are never modified, mark them as const. Signed-off-by: Thomas Wei=C3=9Fschuh Reviewed-by: John Garry > --- block/blk-crypto-sysfs.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/block/blk-crypto-sysfs.c b/block/blk-crypto-sysfs.c index ea7a0b85a46f..b069c418b6cc 100644 --- a/block/blk-crypto-sysfs.c +++ b/block/blk-crypto-sysfs.c @@ -18,7 +18,7 @@ struct blk_crypto_kobj { struct blk_crypto_attr { struct attribute attr; ssize_t (*show)(struct blk_crypto_profile *profile, - struct blk_crypto_attr *attr, char *page); + const struct blk_crypto_attr *attr, char *page); }; =20 static struct blk_crypto_profile *kobj_to_crypto_profile(struct kobject *k= obj) @@ -26,39 +26,39 @@ static struct blk_crypto_profile *kobj_to_crypto_profil= e(struct kobject *kobj) return container_of(kobj, struct blk_crypto_kobj, kobj)->profile; } =20 -static struct blk_crypto_attr *attr_to_crypto_attr(struct attribute *attr) +static const struct blk_crypto_attr *attr_to_crypto_attr(const struct attr= ibute *attr) { - return container_of(attr, struct blk_crypto_attr, attr); + return container_of_const(attr, struct blk_crypto_attr, attr); } =20 static ssize_t hw_wrapped_keys_show(struct blk_crypto_profile *profile, - struct blk_crypto_attr *attr, char *page) + const struct blk_crypto_attr *attr, char *page) { /* Always show supported, since the file doesn't exist otherwise. */ return sysfs_emit(page, "supported\n"); } =20 static ssize_t max_dun_bits_show(struct blk_crypto_profile *profile, - struct blk_crypto_attr *attr, char *page) + const struct blk_crypto_attr *attr, char *page) { return sysfs_emit(page, "%u\n", 8 * profile->max_dun_bytes_supported); } =20 static ssize_t num_keyslots_show(struct blk_crypto_profile *profile, - struct blk_crypto_attr *attr, char *page) + const struct blk_crypto_attr *attr, char *page) { return sysfs_emit(page, "%u\n", profile->num_slots); } =20 static ssize_t raw_keys_show(struct blk_crypto_profile *profile, - struct blk_crypto_attr *attr, char *page) + const struct blk_crypto_attr *attr, char *page) { /* Always show supported, since the file doesn't exist otherwise. */ return sysfs_emit(page, "supported\n"); } =20 #define BLK_CRYPTO_RO_ATTR(_name) \ - static struct blk_crypto_attr _name##_attr =3D __ATTR_RO(_name) + static const struct blk_crypto_attr _name##_attr =3D __ATTR_RO(_name) =20 BLK_CRYPTO_RO_ATTR(hw_wrapped_keys); BLK_CRYPTO_RO_ATTR(max_dun_bits); @@ -66,10 +66,10 @@ BLK_CRYPTO_RO_ATTR(num_keyslots); BLK_CRYPTO_RO_ATTR(raw_keys); =20 static umode_t blk_crypto_is_visible(struct kobject *kobj, - struct attribute *attr, int n) + const struct attribute *attr, int n) { struct blk_crypto_profile *profile =3D kobj_to_crypto_profile(kobj); - struct blk_crypto_attr *a =3D attr_to_crypto_attr(attr); + const struct blk_crypto_attr *a =3D attr_to_crypto_attr(attr); =20 if (a =3D=3D &hw_wrapped_keys_attr && !(profile->key_types_supported & BLK_CRYPTO_KEY_TYPE_HW_WRAPPED)) @@ -81,7 +81,7 @@ static umode_t blk_crypto_is_visible(struct kobject *kobj, return 0444; } =20 -static struct attribute *blk_crypto_attrs[] =3D { +static const struct attribute *const blk_crypto_attrs[] =3D { &hw_wrapped_keys_attr.attr, &max_dun_bits_attr.attr, &num_keyslots_attr.attr, @@ -90,8 +90,8 @@ static struct attribute *blk_crypto_attrs[] =3D { }; =20 static const struct attribute_group blk_crypto_attr_group =3D { - .attrs =3D blk_crypto_attrs, - .is_visible =3D blk_crypto_is_visible, + .attrs_const =3D blk_crypto_attrs, + .is_visible_const =3D blk_crypto_is_visible, }; =20 /* @@ -99,13 +99,13 @@ static const struct attribute_group blk_crypto_attr_gro= up =3D { * modes, these are initialized at boot time by blk_crypto_sysfs_init(). */ static struct blk_crypto_attr __blk_crypto_mode_attrs[BLK_ENCRYPTION_MODE_= MAX]; -static struct attribute *blk_crypto_mode_attrs[BLK_ENCRYPTION_MODE_MAX + 1= ]; +static const struct attribute *blk_crypto_mode_attrs[BLK_ENCRYPTION_MODE_M= AX + 1]; =20 static umode_t blk_crypto_mode_is_visible(struct kobject *kobj, - struct attribute *attr, int n) + const struct attribute *attr, int n) { struct blk_crypto_profile *profile =3D kobj_to_crypto_profile(kobj); - struct blk_crypto_attr *a =3D attr_to_crypto_attr(attr); + const struct blk_crypto_attr *a =3D attr_to_crypto_attr(attr); int mode_num =3D a - __blk_crypto_mode_attrs; =20 if (profile->modes_supported[mode_num]) @@ -114,7 +114,7 @@ static umode_t blk_crypto_mode_is_visible(struct kobjec= t *kobj, } =20 static ssize_t blk_crypto_mode_show(struct blk_crypto_profile *profile, - struct blk_crypto_attr *attr, char *page) + const struct blk_crypto_attr *attr, char *page) { int mode_num =3D attr - __blk_crypto_mode_attrs; =20 @@ -123,8 +123,8 @@ static ssize_t blk_crypto_mode_show(struct blk_crypto_p= rofile *profile, =20 static const struct attribute_group blk_crypto_modes_attr_group =3D { .name =3D "modes", - .attrs =3D blk_crypto_mode_attrs, - .is_visible =3D blk_crypto_mode_is_visible, + .attrs_const =3D blk_crypto_mode_attrs, + .is_visible_const =3D blk_crypto_mode_is_visible, }; =20 static const struct attribute_group *blk_crypto_attr_groups[] =3D { @@ -137,7 +137,7 @@ static ssize_t blk_crypto_attr_show(struct kobject *kob= j, struct attribute *attr, char *page) { struct blk_crypto_profile *profile =3D kobj_to_crypto_profile(kobj); - struct blk_crypto_attr *a =3D attr_to_crypto_attr(attr); + const struct blk_crypto_attr *a =3D attr_to_crypto_attr(attr); =20 return a->show(profile, a, page); } --=20 2.53.0 From nobody Tue Apr 7 01:19:01 2026 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1F70370D65; Mon, 16 Mar 2026 22:44:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701043; cv=none; b=T2KFW9MXT/JUQS1n60Ev3PfIjMvU/Ukgp7L7a47iP2Ydzs22QyMrzEPkO0LNGqCNpZQO0fXDmNHB8HgqQWO9GIcg+/aU2qaXDrnyjYEHb+luFfjfo5kDOK9qnmhoN9DPPw5/g960ypj/3TeqgSxZ1QtFG0YrsCbnqIjerYkqEcw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773701043; c=relaxed/simple; bh=j43NpdFFoV5b7UfTX0D30Ii6QNhkybdddNhDpCfWyus=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=imeg/qmUnrXWINhB4acnowPPTHtojnysuJ1VEKi9BcWbFuy4rX9Eo/ZnpxpIcZZYDtlvNrwW//MNk+y/rzuvvQO35HNOQnq8/ipoB668w3G+B23SY/ZqytP9jpsku14jGcL34+L9r14ciZMRDVTvLV/bInWkr7h+uulHoJ7IvWk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net; spf=pass smtp.mailfrom=weissschuh.net; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b=QnICkvO0; arc=none smtp.client-ip=159.69.126.157 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=weissschuh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=weissschuh.net header.i=@weissschuh.net header.b="QnICkvO0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1773701039; bh=j43NpdFFoV5b7UfTX0D30Ii6QNhkybdddNhDpCfWyus=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QnICkvO0HgLCAGROOf0KNebIR+/uNw2AyjQ9hc5szrX6nXcKfogrbK7xBA3ucFwt7 vf16sunXp0Jc5e+QtvBavg0W4/4ZPYWDKU2mkgPKzhKVON42wEGisSijXNPQ4+yYGn qMc8zGfoAJO4iZTGnISBceVUKh/rvRI52PqC2D4M= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Mon, 16 Mar 2026 23:43:54 +0100 Subject: [PATCH 4/4] blk-mq: make blk_mq_hw_ctx_sysfs_entry instances const Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260316-b4-sysfs-const-attr-block-v1-4-a35d73b986b0@weissschuh.net> References: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> In-Reply-To: <20260316-b4-sysfs-const-attr-block-v1-0-a35d73b986b0@weissschuh.net> To: Jens Axboe Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773701039; l=1869; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=j43NpdFFoV5b7UfTX0D30Ii6QNhkybdddNhDpCfWyus=; b=hhfbuWifdtgtiuZzwcP1exhd0XBCkiH89balOlvdDXjRB+JPEt4mJ296/EnoqZC2gsP9ZhiSE R4x7JRjxvkcCK4C/jNZQ/Ml0LDxHyS8WeM5+bhONsZ9NjcI6hsp9y3V X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= The blk_mq_hw_ctx_sysfs_entry structures are never modified, mark them as const. Signed-off-by: Thomas Wei=C3=9Fschuh Reviewed-by: John Garry --- block/blk-mq-sysfs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/block/blk-mq-sysfs.c b/block/blk-mq-sysfs.c index 58ec293373c6..895397831ecc 100644 --- a/block/blk-mq-sysfs.c +++ b/block/blk-mq-sysfs.c @@ -53,7 +53,7 @@ static ssize_t blk_mq_hw_sysfs_show(struct kobject *kobj, struct request_queue *q; ssize_t res; =20 - entry =3D container_of(attr, struct blk_mq_hw_ctx_sysfs_entry, attr); + entry =3D container_of_const(attr, struct blk_mq_hw_ctx_sysfs_entry, attr= ); hctx =3D container_of(kobj, struct blk_mq_hw_ctx, kobj); q =3D hctx->queue; =20 @@ -101,20 +101,20 @@ static ssize_t blk_mq_hw_sysfs_cpus_show(struct blk_m= q_hw_ctx *hctx, char *page) return pos + ret; } =20 -static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_nr_tags =3D { +static const struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_nr_tags =3D { .attr =3D {.name =3D "nr_tags", .mode =3D 0444 }, .show =3D blk_mq_hw_sysfs_nr_tags_show, }; -static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_nr_reserved_tags = =3D { +static const struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_nr_reserved_= tags =3D { .attr =3D {.name =3D "nr_reserved_tags", .mode =3D 0444 }, .show =3D blk_mq_hw_sysfs_nr_reserved_tags_show, }; -static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_cpus =3D { +static const struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_cpus =3D { .attr =3D {.name =3D "cpu_list", .mode =3D 0444 }, .show =3D blk_mq_hw_sysfs_cpus_show, }; =20 -static struct attribute *default_hw_ctx_attrs[] =3D { +static const struct attribute *const default_hw_ctx_attrs[] =3D { &blk_mq_hw_sysfs_nr_tags.attr, &blk_mq_hw_sysfs_nr_reserved_tags.attr, &blk_mq_hw_sysfs_cpus.attr, --=20 2.53.0