#
1.8 |
|
22-Jul-2020 |
tobhe |
Add missing CVS tags.
ok patrick@
|
#
1.7 |
|
24-Jun-2020 |
cheloha |
kernel: use gettime(9)/getuptime(9) in lieu of time_second(9)/time_uptime(9)
time_second(9) and time_uptime(9) are widely used in the kernel to quickly get the system UTC or system uptime as a time_t. However, time_t is 64-bit everywhere, so it is not generally safe to use them on 32-bit platforms: you have a split-read problem if your hardware cannot perform atomic 64-bit reads.
This patch replaces time_second(9) with gettime(9), a safer successor interface, throughout the kernel. Similarly, time_uptime(9) is replaced with getuptime(9).
There is a performance cost on 32-bit platforms in exchange for eliminating the split-read problem: instead of two register reads you now have a lockless read loop to pull the values from the timehands. This is really not *too* bad in the grand scheme of things, but compared to what we were doing before it is several times slower.
There is no performance cost on 64-bit (__LP64__) platforms.
With input from visa@, dlg@, and tedu@.
Several bugs squashed by visa@.
ok kettenis@
|
Revision tags: OPENBSD_6_7_BASE
|
#
1.6 |
|
15-Apr-2020 |
cheloha |
idgen32(9): use time_uptime(9) for rekey timestamps, not time_second(9)
Timestamp contexts with a monotonic clock. time_second(9) can jump, stretching or truncating our rekey interval. time_uptime(9) will not jump around.
ok djm@
|
Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.5 |
|
14-Mar-2015 |
jsg |
Remove some includes include-what-you-use claims don't have any direct symbols used. Tested for indirect use by compiling amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
|
#
1.4 |
|
05-Jun-2013 |
djm |
fix a bug that caused time-based rekeys to happen too frequently.
rename the structure internals to id32_* in anticipation of an idgen16() that might come in the future.
|
Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.3 |
|
17-Aug-2009 |
miod |
sizeof(ptr) -> sizeof(*ptr) as intended; ok djm@ millert@
|
Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
|
#
1.2 |
|
25-Jun-2008 |
djm |
implement automatic time-based rekeying (every 10 minutes); ok deraadt@
|
#
1.1 |
|
09-Jun-2008 |
djm |
Introduce a facility to generate unpredictable 32 bit numbers with near maximal (2^32) cycle times. These are useful for network IDs in cases where there are negative consequences to ID prediction and/or reuse.
Use the idgen32() functions to generate IPv6 IDs and NFS client/server XIDs.
Pseudorandom permutation code in crypto/idgen.c based on public domain skip32.c from Greg Rose.
feedback & ok thib@ deraadt@
|
#
1.7 |
|
24-Jun-2020 |
cheloha |
kernel: use gettime(9)/getuptime(9) in lieu of time_second(9)/time_uptime(9)
time_second(9) and time_uptime(9) are widely used in the kernel to quickly get the system UTC or system uptime as a time_t. However, time_t is 64-bit everywhere, so it is not generally safe to use them on 32-bit platforms: you have a split-read problem if your hardware cannot perform atomic 64-bit reads.
This patch replaces time_second(9) with gettime(9), a safer successor interface, throughout the kernel. Similarly, time_uptime(9) is replaced with getuptime(9).
There is a performance cost on 32-bit platforms in exchange for eliminating the split-read problem: instead of two register reads you now have a lockless read loop to pull the values from the timehands. This is really not *too* bad in the grand scheme of things, but compared to what we were doing before it is several times slower.
There is no performance cost on 64-bit (__LP64__) platforms.
With input from visa@, dlg@, and tedu@.
Several bugs squashed by visa@.
ok kettenis@
|
Revision tags: OPENBSD_6_7_BASE
|
#
1.6 |
|
15-Apr-2020 |
cheloha |
idgen32(9): use time_uptime(9) for rekey timestamps, not time_second(9)
Timestamp contexts with a monotonic clock. time_second(9) can jump, stretching or truncating our rekey interval. time_uptime(9) will not jump around.
ok djm@
|
Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.5 |
|
14-Mar-2015 |
jsg |
Remove some includes include-what-you-use claims don't have any direct symbols used. Tested for indirect use by compiling amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
|
#
1.4 |
|
05-Jun-2013 |
djm |
fix a bug that caused time-based rekeys to happen too frequently.
rename the structure internals to id32_* in anticipation of an idgen16() that might come in the future.
|
Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.3 |
|
17-Aug-2009 |
miod |
sizeof(ptr) -> sizeof(*ptr) as intended; ok djm@ millert@
|
Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
|
#
1.2 |
|
25-Jun-2008 |
djm |
implement automatic time-based rekeying (every 10 minutes); ok deraadt@
|
#
1.1 |
|
09-Jun-2008 |
djm |
Introduce a facility to generate unpredictable 32 bit numbers with near maximal (2^32) cycle times. These are useful for network IDs in cases where there are negative consequences to ID prediction and/or reuse.
Use the idgen32() functions to generate IPv6 IDs and NFS client/server XIDs.
Pseudorandom permutation code in crypto/idgen.c based on public domain skip32.c from Greg Rose.
feedback & ok thib@ deraadt@
|
#
1.6 |
|
15-Apr-2020 |
cheloha |
idgen32(9): use time_uptime(9) for rekey timestamps, not time_second(9)
Timestamp contexts with a monotonic clock. time_second(9) can jump, stretching or truncating our rekey interval. time_uptime(9) will not jump around.
ok djm@
|
Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE
|
#
1.5 |
|
14-Mar-2015 |
jsg |
Remove some includes include-what-you-use claims don't have any direct symbols used. Tested for indirect use by compiling amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
|
#
1.4 |
|
05-Jun-2013 |
djm |
fix a bug that caused time-based rekeys to happen too frequently.
rename the structure internals to id32_* in anticipation of an idgen16() that might come in the future.
|
Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.3 |
|
17-Aug-2009 |
miod |
sizeof(ptr) -> sizeof(*ptr) as intended; ok djm@ millert@
|
Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
|
#
1.2 |
|
25-Jun-2008 |
djm |
implement automatic time-based rekeying (every 10 minutes); ok deraadt@
|
#
1.1 |
|
09-Jun-2008 |
djm |
Introduce a facility to generate unpredictable 32 bit numbers with near maximal (2^32) cycle times. These are useful for network IDs in cases where there are negative consequences to ID prediction and/or reuse.
Use the idgen32() functions to generate IPv6 IDs and NFS client/server XIDs.
Pseudorandom permutation code in crypto/idgen.c based on public domain skip32.c from Greg Rose.
feedback & ok thib@ deraadt@
|
Revision tags: OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
|
#
1.5 |
|
14-Mar-2015 |
jsg |
Remove some includes include-what-you-use claims don't have any direct symbols used. Tested for indirect use by compiling amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
|
#
1.4 |
|
05-Jun-2013 |
djm |
fix a bug that caused time-based rekeys to happen too frequently.
rename the structure internals to id32_* in anticipation of an idgen16() that might come in the future.
|
Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE
|
#
1.3 |
|
17-Aug-2009 |
miod |
sizeof(ptr) -> sizeof(*ptr) as intended; ok djm@ millert@
|
Revision tags: OPENBSD_4_4_BASE OPENBSD_4_5_BASE OPENBSD_4_6_BASE
|
#
1.2 |
|
25-Jun-2008 |
djm |
implement automatic time-based rekeying (every 10 minutes); ok deraadt@
|
#
1.1 |
|
09-Jun-2008 |
djm |
Introduce a facility to generate unpredictable 32 bit numbers with near maximal (2^32) cycle times. These are useful for network IDs in cases where there are negative consequences to ID prediction and/or reuse.
Use the idgen32() functions to generate IPv6 IDs and NFS client/server XIDs.
Pseudorandom permutation code in crypto/idgen.c based on public domain skip32.c from Greg Rose.
feedback & ok thib@ deraadt@
|