X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=libcfs%2Flibcfs%2Fprng.c;h=03931745c9003b2e04bb9b66bb14c0adb001755b;hp=765d411fbbf3dd1d0b5754f95a0efb36878ec1de;hb=fb9a8a991f5c9e8649053e86b3147a99aaee9f84;hpb=8c47378b057e72d6125f4baffe8721e0734d0d3f diff --git a/libcfs/libcfs/prng.c b/libcfs/libcfs/prng.c index 765d411..0393174 100644 --- a/libcfs/libcfs/prng.c +++ b/libcfs/libcfs/prng.c @@ -15,11 +15,7 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -39,6 +35,7 @@ * algorithm recommended by Marsaglia */ +#include #include /* @@ -109,31 +106,31 @@ EXPORT_SYMBOL(cfs_srand); */ void cfs_get_random_bytes(void *buf, int size) { - int *p = buf; - int rem, tmp; + int *p = buf; + int rem, tmp; - LASSERT(size >= 0); + LASSERT(size >= 0); - rem = min((int)((unsigned long)buf & (sizeof(int) - 1)), size); - if (rem) { - cfs_get_random_bytes_prim(&tmp, sizeof(tmp)); - tmp ^= cfs_rand(); - memcpy(buf, &tmp, rem); - p = buf + rem; - size -= rem; - } + rem = min((int)((unsigned long)buf & (sizeof(int) - 1)), size); + if (rem) { + get_random_bytes(&tmp, sizeof(tmp)); + tmp ^= cfs_rand(); + memcpy(buf, &tmp, rem); + p = buf + rem; + size -= rem; + } - while (size >= sizeof(int)) { - cfs_get_random_bytes_prim(&tmp, sizeof(tmp)); - *p = cfs_rand() ^ tmp; - size -= sizeof(int); - p++; - } - buf = p; - if (size) { - cfs_get_random_bytes_prim(&tmp, sizeof(tmp)); - tmp ^= cfs_rand(); - memcpy(buf, &tmp, size); - } + while (size >= sizeof(int)) { + get_random_bytes(&tmp, sizeof(tmp)); + *p = cfs_rand() ^ tmp; + size -= sizeof(int); + p++; + } + buf = p; + if (size) { + get_random_bytes(&tmp, sizeof(tmp)); + tmp ^= cfs_rand(); + memcpy(buf, &tmp, size); + } } EXPORT_SYMBOL(cfs_get_random_bytes);