summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Blum <thorsten.blum@linux.dev>2026-06-02 10:13:41 +0300
committerJakub Kicinski <kuba@kernel.org>2026-06-05 04:39:29 +0300
commit6ce66868d1a62cacecfec7ce628df3227c1808c2 (patch)
tree87f184166efae75cdbfa347ef319a035d80ae9b6
parent0416f7b354587520e687d4359e7cfbf7656966b1 (diff)
downloadlinux-6ce66868d1a62cacecfec7ce628df3227c1808c2.tar.xz
net/dns_resolver: use kasprintf + kmemdup_nul to simplify dns_query
Use kasprintf() for descriptions with a query type and kmemdup_nul() otherwise to simplify dns_query(). Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20260602071343.962830-2-thorsten.blum@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--net/dns_resolver/dns_query.c33
1 files changed, 8 insertions, 25 deletions
diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c
index c250d82cad96..14bee83cbe22 100644
--- a/net/dns_resolver/dns_query.c
+++ b/net/dns_resolver/dns_query.c
@@ -64,44 +64,27 @@ int dns_query(struct net *net,
const char *options, char **_result, time64_t *_expiry,
bool invalidate)
{
- struct key *rkey;
struct user_key_payload *upayload;
- size_t typelen, desclen;
- char *desc, *cp;
+ struct key *rkey;
int ret, len;
+ char *desc;
kenter("%s,%*.*s,%zu,%s",
type, (int)namelen, (int)namelen, name, namelen, options);
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);