KEYS: Merge the type-specific data with the payload data
Merge the type-specific data with the payload data into one four-word chunk as it seems pointless to keep them separate. Use user_key_payload() for accessing the payloads of overloaded user-defined keys. Signed-off-by: David Howells <dhowells@redhat.com> cc: linux-cifs@vger.kernel.org cc: ecryptfs@vger.kernel.org cc: linux-ext4@vger.kernel.org cc: linux-f2fs-devel@lists.sourceforge.net cc: linux-nfs@vger.kernel.org cc: ceph-devel@vger.kernel.org cc: linux-ima-devel@lists.sourceforge.net
This commit is contained in:
@@ -122,7 +122,7 @@ dns_resolver_preparse(struct key_preparsed_payload *prep)
|
||||
goto bad_option_value;
|
||||
|
||||
kdebug("dns error no. = %lu", derrno);
|
||||
prep->type_data[0] = ERR_PTR(-derrno);
|
||||
prep->payload.data[dns_key_error] = ERR_PTR(-derrno);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -137,8 +137,8 @@ dns_resolver_preparse(struct key_preparsed_payload *prep)
|
||||
|
||||
/* don't cache the result if we're caching an error saying there's no
|
||||
* result */
|
||||
if (prep->type_data[0]) {
|
||||
kleave(" = 0 [h_error %ld]", PTR_ERR(prep->type_data[0]));
|
||||
if (prep->payload.data[dns_key_error]) {
|
||||
kleave(" = 0 [h_error %ld]", PTR_ERR(prep->payload.data[dns_key_error]));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ dns_resolver_preparse(struct key_preparsed_payload *prep)
|
||||
memcpy(upayload->data, data, result_len);
|
||||
upayload->data[result_len] = '\0';
|
||||
|
||||
prep->payload[0] = upayload;
|
||||
prep->payload.data[dns_key_data] = upayload;
|
||||
kleave(" = 0");
|
||||
return 0;
|
||||
}
|
||||
@@ -167,7 +167,7 @@ static void dns_resolver_free_preparse(struct key_preparsed_payload *prep)
|
||||
{
|
||||
pr_devel("==>%s()\n", __func__);
|
||||
|
||||
kfree(prep->payload[0]);
|
||||
kfree(prep->payload.data[dns_key_data]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -223,10 +223,10 @@ static int dns_resolver_match_preparse(struct key_match_data *match_data)
|
||||
*/
|
||||
static void dns_resolver_describe(const struct key *key, struct seq_file *m)
|
||||
{
|
||||
int err = key->type_data.x[0];
|
||||
|
||||
seq_puts(m, key->description);
|
||||
if (key_is_instantiated(key)) {
|
||||
int err = PTR_ERR(key->payload.data[dns_key_error]);
|
||||
|
||||
if (err)
|
||||
seq_printf(m, ": %d", err);
|
||||
else
|
||||
@@ -241,8 +241,10 @@ static void dns_resolver_describe(const struct key *key, struct seq_file *m)
|
||||
static long dns_resolver_read(const struct key *key,
|
||||
char __user *buffer, size_t buflen)
|
||||
{
|
||||
if (key->type_data.x[0])
|
||||
return key->type_data.x[0];
|
||||
int err = PTR_ERR(key->payload.data[dns_key_error]);
|
||||
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return user_read(key, buffer, buflen);
|
||||
}
|
||||
|
Reference in New Issue
Block a user