aboutsummaryrefslogtreecommitdiffstats
path: root/net/dns_resolver
diff options
context:
space:
mode:
Diffstat (limited to 'net/dns_resolver')
-rw-r--r--net/dns_resolver/Makefile2
-rw-r--r--net/dns_resolver/dns_key.c30
2 files changed, 24 insertions, 8 deletions
diff --git a/net/dns_resolver/Makefile b/net/dns_resolver/Makefile
index c0ef4e71dc49..d5c13c2eb36d 100644
--- a/net/dns_resolver/Makefile
+++ b/net/dns_resolver/Makefile
@@ -4,4 +4,4 @@
4 4
5obj-$(CONFIG_DNS_RESOLVER) += dns_resolver.o 5obj-$(CONFIG_DNS_RESOLVER) += dns_resolver.o
6 6
7dns_resolver-objs := dns_key.o dns_query.o 7dns_resolver-y := dns_key.o dns_query.o
diff --git a/net/dns_resolver/dns_key.c b/net/dns_resolver/dns_key.c
index 739435a6af39..fa000d26dc60 100644
--- a/net/dns_resolver/dns_key.c
+++ b/net/dns_resolver/dns_key.c
@@ -67,8 +67,9 @@ dns_resolver_instantiate(struct key *key, const void *_data, size_t datalen)
67 size_t result_len = 0; 67 size_t result_len = 0;
68 const char *data = _data, *end, *opt; 68 const char *data = _data, *end, *opt;
69 69
70 kenter("%%%d,%s,'%s',%zu", 70 kenter("%%%d,%s,'%*.*s',%zu",
71 key->serial, key->description, data, datalen); 71 key->serial, key->description,
72 (int)datalen, (int)datalen, data, datalen);
72 73
73 if (datalen <= 1 || !data || data[datalen - 1] != '\0') 74 if (datalen <= 1 || !data || data[datalen - 1] != '\0')
74 return -EINVAL; 75 return -EINVAL;
@@ -211,10 +212,25 @@ static void dns_resolver_describe(const struct key *key, struct seq_file *m)
211 int err = key->type_data.x[0]; 212 int err = key->type_data.x[0];
212 213
213 seq_puts(m, key->description); 214 seq_puts(m, key->description);
214 if (err) 215 if (key_is_instantiated(key)) {
215 seq_printf(m, ": %d", err); 216 if (err)
216 else 217 seq_printf(m, ": %d", err);
217 seq_printf(m, ": %u", key->datalen); 218 else
219 seq_printf(m, ": %u", key->datalen);
220 }
221}
222
223/*
224 * read the DNS data
225 * - the key's semaphore is read-locked
226 */
227static long dns_resolver_read(const struct key *key,
228 char __user *buffer, size_t buflen)
229{
230 if (key->type_data.x[0])
231 return key->type_data.x[0];
232
233 return user_read(key, buffer, buflen);
218} 234}
219 235
220struct key_type key_type_dns_resolver = { 236struct key_type key_type_dns_resolver = {
@@ -224,7 +240,7 @@ struct key_type key_type_dns_resolver = {
224 .revoke = user_revoke, 240 .revoke = user_revoke,
225 .destroy = user_destroy, 241 .destroy = user_destroy,
226 .describe = dns_resolver_describe, 242 .describe = dns_resolver_describe,
227 .read = user_read, 243 .read = dns_resolver_read,
228}; 244};
229 245
230static int __init init_dns_resolver(void) 246static int __init init_dns_resolver(void)