Files
Al Viro e036efbe58 add a string-to-qstr constructor
[ Upstream commit c1feab95e0b2e9fce7e4f4b2739baf40d84543af ]

Quite a few places want to build a struct qstr by given string;
it would be convenient to have a primitive doing that, rather
than open-coding it via QSTR_INIT().

The closest approximation was in bcachefs, but that expands to
initializer list - {.len = strlen(string), .name = string}.
It would be more useful to have it as compound literal -
(struct qstr){.len = strlen(string), .name = string}.

Unlike initializer list it's a valid expression.  What's more,
it's a valid lvalue - it's an equivalent of anonymous local
variable with such initializer, so the things like
	path->dentry = d_alloc_pseudo(mnt->mnt_sb, &QSTR(name));
are valid.  It can also be used as initializer, with identical
effect -
	struct qstr x = (struct qstr){.name = s, .len = strlen(s)};
is equivalent to
	struct qstr anon_variable = {.name = s, .len = strlen(s)};
	struct qstr x = anon_variable;
	// anon_variable is never used after that point
and any even remotely sane compiler will manage to collapse that
into
	struct qstr x = {.name = s, .len = strlen(s)};

What compound literals can't be used for is initialization of
global variables, but those are covered by QSTR_INIT().

This commit lifts definition(s) of QSTR() into linux/dcache.h,
converts it to compound literal (all bcachefs users are fine
with that) and converts assorted open-coded instances to using
that.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Stable-dep-of: cbe4134ea4bc ("fs: export anon_inode_make_secure_inode() and fix secretmem LSM bypass")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-07-10 16:05:08 +02:00
..
2024-08-08 15:14:02 -04:00
2024-03-13 21:22:26 -04:00
2024-09-09 09:41:49 -04:00
2024-07-14 19:00:15 -04:00
2024-03-13 18:39:12 -04:00
2024-01-21 13:27:10 -05:00
2024-09-21 11:39:48 -04:00
2024-09-21 11:39:48 -04:00
2024-01-21 13:27:11 -05:00
2024-03-13 18:39:12 -04:00
2024-07-14 19:00:12 -04:00
2025-07-10 16:05:08 +02:00
2024-09-09 09:41:48 -04:00
2024-07-14 19:00:16 -04:00
2024-09-09 09:41:47 -04:00
2024-01-21 13:27:10 -05:00
2025-07-10 16:05:08 +02:00
2024-01-21 13:27:11 -05:00
2024-09-27 21:46:35 -04:00
2024-05-08 17:29:19 -04:00
2024-09-21 11:39:48 -04:00
2024-06-23 00:57:21 -04:00
2024-01-01 11:47:40 -05:00
2024-01-21 13:27:10 -05:00
2024-05-08 17:29:19 -04:00
2024-09-21 11:39:48 -04:00
2024-09-09 09:41:49 -04:00
2024-09-09 09:41:49 -04:00
2024-09-09 09:41:48 -04:00
2025-07-10 16:05:08 +02:00