Add support for allocating and freeing buffers used for encryption.
Signed-off-by: Nigel Cunningham <[email protected]>
kernel/power/encryption.c | 51 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/kernel/power/encryption.c b/kernel/power/encryption.c
index a90d3ca..45d325d 100644
--- a/kernel/power/encryption.c
+++ b/kernel/power/encryption.c
@@ -45,3 +45,54 @@ static unsigned int bufofs;
static struct scatterlist suspend_crypt_sg[PAGE_SIZE/8];
+/* ---- Local buffer management ---- */
+
+/* allocate_local_buffer
+ *
+ * Description: Allocates a page of memory for buffering output.
+ * Returns: Int: Zero if successful, -ENONEM otherwise.
+ */
+static int allocate_local_buffer(void)
+{
+ if (!page_buffer) {
+ int i, remainder;
+
+ page_buffer = (char *) get_zeroed_page(GFP_ATOMIC);
+
+ if (!page_buffer) {
+ printk(KERN_ERR
+ "Failed to allocate the page buffer for "
+ "suspend2 encryption driver.\n");
+ return -ENOMEM;
+ }
+
+ for (i=0; i < (PAGE_SIZE / suspend_key_len); i++) {
+ suspend_crypt_sg[i].page = virt_to_page(page_buffer);
+ suspend_crypt_sg[i].offset = suspend_key_len * i;
+ suspend_crypt_sg[i].length = suspend_key_len;
+ }
+
+ remainder = PAGE_SIZE % suspend_key_len;
+
+ if (remainder) {
+ suspend_crypt_sg[i].page = virt_to_page(page_buffer);
+ suspend_crypt_sg[i].offset = suspend_key_len * i;
+ suspend_crypt_sg[i].length = remainder;
+ }
+ }
+
+ return 0;
+}
+
+/* free_local_buffer
+ *
+ * Description: Frees memory allocated for buffering output.
+ */
+static void free_local_buffer(void)
+{
+ if (page_buffer)
+ free_page((unsigned long) page_buffer);
+
+ page_buffer = NULL;
+}
+
--
Nigel Cunningham nigel at suspend2 dot net
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]