SWAP_KEY_PUT calls swap_key_delete, while SWAP_KEY_GET inlines its
work.

this shuffles it so the work is in uvm_swap_encrypt.c, and lets us
reduce the scope of some of the globals in uvm_swap_encrypt.c.

ok?

Index: uvm_swap_encrypt.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_swap_encrypt.c,v
retrieving revision 1.21
diff -u -p -r1.21 uvm_swap_encrypt.c
--- uvm_swap_encrypt.c  4 May 2015 10:21:15 -0000       1.21
+++ uvm_swap_encrypt.c  4 May 2015 23:27:51 -0000
@@ -88,6 +88,13 @@ swap_encrypt_ctl(int *name, u_int namele
 }
 
 void
+swap_key_create(struct swap_key *key)
+{
+       arc4random_buf(key->key, sizeof(key->key));
+       uvm_swpkeyscreated++;
+}
+
+void
 swap_key_delete(struct swap_key *key)
 {
        /* Make sure that this key gets removed if we just used it */
Index: uvm_swap_encrypt.h
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_swap_encrypt.h,v
retrieving revision 1.9
diff -u -p -r1.9 uvm_swap_encrypt.h
--- uvm_swap_encrypt.h  23 Mar 2009 22:10:04 -0000      1.9
+++ uvm_swap_encrypt.h  4 May 2015 23:27:51 -0000
@@ -61,13 +61,9 @@ void swap_decrypt(struct swap_key *,cadd
 void swap_key_cleanup(struct swap_key *);
 void swap_key_prepare(struct swap_key *, int);
 
-extern u_int uvm_swpkeyscreated;
-
 #define SWAP_KEY_GET(s,x)      do {                                    \
                                        if ((x)->refcount == 0) {       \
-                                               arc4random_buf((x)->key,\
-                                                   sizeof((x)->key));  \
-                                               uvm_swpkeyscreated++;   \
+                                               swap_key_create(x);     \
                                        }                               \
                                        (x)->refcount++;                \
                                } while(0);
@@ -79,6 +75,7 @@ extern u_int uvm_swpkeyscreated;
                                        }                               \
                                } while(0);
 
+void swap_key_create(struct swap_key *);
 void swap_key_delete(struct swap_key *);
 
 extern int uvm_doswapencrypt;          /* swapencrypt enabled/disabled */

Reply via email to