[PATCH net-next] net/dns_resolver: use kasprintf + kmemdup_nul to simplify dns_query
From: Thorsten Blum
Date: Thu May 28 2026 - 18:21:15 EST
Use kasprintf() for descriptions with a query type and kmemdup_nul()
otherwise to simplify dns_query().
Signed-off-by: Thorsten Blum <thorsten.blum@xxxxxxxxx>
---
net/dns_resolver/dns_query.c | 31 +++++++------------------------
1 file changed, 7 insertions(+), 24 deletions(-)
diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c
index c250d82cad96..40c9acdb26cd 100644
--- a/net/dns_resolver/dns_query.c
+++ b/net/dns_resolver/dns_query.c
@@ -66,8 +66,7 @@ int dns_query(struct net *net,
{
struct key *rkey;
struct user_key_payload *upayload;
- size_t typelen, desclen;
- char *desc, *cp;
+ char *desc;
int ret, len;
kenter("%s,%*.*s,%zu,%s",
@@ -75,33 +74,17 @@ int dns_query(struct net *net,
if (!name || namelen < 3 || namelen > 255)
return -EINVAL;
+ if (type && *type == '\0')
+ return -EINVAL;
/* construct the query key description as "[<type>:]<name>" */
- typelen = 0;
- desclen = 0;
- if (type) {
- typelen = strlen(type);
- if (typelen < 1)
- return -EINVAL;
- desclen += typelen + 1;
- }
-
- desclen += namelen + 1;
-
- desc = kmalloc(desclen, GFP_KERNEL);
+ if (type)
+ desc = kasprintf(GFP_KERNEL, "%s:%.*s", type, (int)namelen, name);
+ else
+ desc = kmemdup_nul(name, namelen, GFP_KERNEL);
if (!desc)
return -ENOMEM;
- cp = desc;
- if (type) {
- memcpy(cp, type, typelen);
- cp += typelen;
- *cp++ = ':';
- }
- memcpy(cp, name, namelen);
- cp += namelen;
- *cp = '\0';
-
if (!options)
options = "";
kdebug("call request_key(,%s,%s)", desc, options);