random.c (a126f7c41d80322b42ae0383ed3dcb17ee0296fc) | random.c (16c7fa05829e8b91db48e3539c5d6ff3c2b18a23) |
---|---|
1/* 2 * random.c -- A strong random number generator 3 * 4 * Copyright Matt Mackall <mpm@selenic.com>, 2003, 2004, 2005 5 * 6 * Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All 7 * rights reserved. 8 * --- 1471 unchanged lines hidden (view full) --- 1480 1481 hash[0] += current->pid + jiffies + get_cycles(); 1482 md5_transform(hash, random_int_secret); 1483 ret = hash[0]; 1484 put_cpu_var(get_random_int_hash); 1485 1486 return ret; 1487} | 1/* 2 * random.c -- A strong random number generator 3 * 4 * Copyright Matt Mackall <mpm@selenic.com>, 2003, 2004, 2005 5 * 6 * Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All 7 * rights reserved. 8 * --- 1471 unchanged lines hidden (view full) --- 1480 1481 hash[0] += current->pid + jiffies + get_cycles(); 1482 md5_transform(hash, random_int_secret); 1483 ret = hash[0]; 1484 put_cpu_var(get_random_int_hash); 1485 1486 return ret; 1487} |
1488EXPORT_SYMBOL(get_random_int); |
|
1488 1489/* 1490 * randomize_range() returns a start address such that 1491 * 1492 * [...... <range> .....] 1493 * start end 1494 * 1495 * a <range> with size "len" starting at the return value is inside in the 1496 * area defined by [start, end], but is otherwise randomized. 1497 */ 1498unsigned long 1499randomize_range(unsigned long start, unsigned long end, unsigned long len) 1500{ 1501 unsigned long range = end - len - start; 1502 1503 if (end <= start + len) 1504 return 0; 1505 return PAGE_ALIGN(get_random_int() % range + start); 1506} | 1489 1490/* 1491 * randomize_range() returns a start address such that 1492 * 1493 * [...... <range> .....] 1494 * start end 1495 * 1496 * a <range> with size "len" starting at the return value is inside in the 1497 * area defined by [start, end], but is otherwise randomized. 1498 */ 1499unsigned long 1500randomize_range(unsigned long start, unsigned long end, unsigned long len) 1501{ 1502 unsigned long range = end - len - start; 1503 1504 if (end <= start + len) 1505 return 0; 1506 return PAGE_ALIGN(get_random_int() % range + start); 1507} |