All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/7] key: Consistently return errno from syscall wrappers
@ 2016-07-29 18:11 Mat Martineau
  2016-07-29 18:11 ` [PATCH v2 2/7] checksum: Add L_CHECKSUM_NONE, needed for key crypto Mat Martineau
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Mat Martineau @ 2016-07-29 18:11 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 2730 bytes --]

---
 ell/key.c | 44 +++++++++++++++++++++++++++++++++++++-------
 1 file changed, 37 insertions(+), 7 deletions(-)

diff --git a/ell/key.c b/ell/key.c
index 6117e31..a8d011a 100644
--- a/ell/key.c
+++ b/ell/key.c
@@ -29,6 +29,7 @@
 #include <stdint.h>
 #include <sys/syscall.h>
 #include <linux/keyctl.h>
+#include <errno.h>
 
 #include "private.h"
 #include "util.h"
@@ -64,43 +65,72 @@ static const char * const key_type_names[] = {
 static long kernel_add_key(const char *type, const char *description,
 				const void *payload, size_t len, int32_t keyring)
 {
-	return syscall(__NR_add_key, type, description, payload, len, keyring);
+	long result;
+
+	result = syscall(__NR_add_key, type, description, payload, len,
+				keyring);
+
+	return result >= 0 ? result : -errno;
 }
 
 static long kernel_read_key(int32_t serial, const void *payload, size_t len)
 {
-	return syscall(__NR_keyctl, KEYCTL_READ, serial, payload, len);
+	long result;
+
+	result = syscall(__NR_keyctl, KEYCTL_READ, serial, payload, len);
+
+	return result >= 0 ? result : -errno;
 }
 
 static long kernel_update_key(int32_t serial, const void *payload, size_t len)
 {
-	return syscall(__NR_keyctl, KEYCTL_UPDATE, serial, payload, len);
+	long result;
+
+	result = syscall(__NR_keyctl, KEYCTL_UPDATE, serial, payload, len);
+
+	return result >= 0 ? result : -errno;
 }
 
 static long kernel_revoke_key(int32_t serial)
 {
-	return syscall(__NR_keyctl, KEYCTL_REVOKE, serial);
+	long result;
+
+	result = syscall(__NR_keyctl, KEYCTL_REVOKE, serial);
+
+	return result >= 0 ? result : -errno;
 }
 
 static long kernel_link_key(int32_t key_serial, int32_t ring_serial)
 {
-	return syscall(__NR_keyctl, KEYCTL_LINK, key_serial, ring_serial);
+	long result;
+
+	result = syscall(__NR_keyctl, KEYCTL_LINK, key_serial, ring_serial);
+
+	return result >= 0 ? result : -errno;
 }
 
 static long kernel_unlink_key(int32_t key_serial, int32_t ring_serial)
 {
-	return syscall(__NR_keyctl, KEYCTL_UNLINK, key_serial, ring_serial);
+	long result;
+
+	result = syscall(__NR_keyctl, KEYCTL_UNLINK, key_serial, ring_serial);
+
+	return result >= 0 ? result : -errno;
 }
 
 static long kernel_dh_compute(int32_t private, int32_t prime, int32_t base,
 			      void *payload, size_t len)
 {
+	long result;
+
 	struct keyctl_dh_params params = { .private = private,
 					   .prime = prime,
 					   .base = base };
 
-	return syscall(__NR_keyctl, KEYCTL_DH_COMPUTE, &params, payload, len,
+	result = syscall(__NR_keyctl, KEYCTL_DH_COMPUTE, &params, payload, len,
 			NULL);
+
+	return result >= 0 ? result : -errno;
 }
 
 static bool setup_internal_keyring(void)
-- 
2.9.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-08-01 21:16 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-29 18:11 [PATCH v2 1/7] key: Consistently return errno from syscall wrappers Mat Martineau
2016-07-29 18:11 ` [PATCH v2 2/7] checksum: Add L_CHECKSUM_NONE, needed for key crypto Mat Martineau
2016-07-29 18:11 ` [PATCH v2 3/7] key: Rename l_key_get_payload_size to clarify its purpose Mat Martineau
2016-08-01 21:15   ` Denis Kenzior
2016-07-29 18:11 ` [PATCH v2 4/7] unit: Adjust for renamed l_key_get_payload_size function Mat Martineau
2016-07-29 18:11 ` [PATCH v2 5/7] key: Rename asymmetric key type to L_KEY_RSA Mat Martineau
2016-07-29 18:12 ` [PATCH v2 6/7] key: Add key-based asymmetric crypto operations Mat Martineau
2016-07-29 18:12 ` [PATCH v2 7/7] unit: Add tests for key-based asymmetric crypto Mat Martineau
2016-08-01 21:16 ` [PATCH v2 1/7] key: Consistently return errno from syscall wrappers Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.