#
1.125 |
|
10-Sep-2022 |
rillig |
fix misspellings of 'available' and nearby typos
|
#
1.124 |
|
22-May-2022 |
riastradh |
opencrypto: Prune dead code now that crypto_dispatch never fails.
|
#
1.123 |
|
22-May-2022 |
riastradh |
opencrypto: crypto_dispatch never fails now. Make it return void.
Same with crypto_kdispatch.
|
#
1.122 |
|
22-May-2022 |
riastradh |
opencrypto: Rip out EAGAIN logic when unregistering crypto drivers.
I'm pretty sure this never worked reliably based on code inspection, and it's unlikely to have ever been tested because it only applies when unregistering a driver -- but we have no crypto drivers for removable devices, so it would only apply if we went out of our way to trigger detach with drvctl.
Instead, just make the operation fail with ENODEV, and remove all the callback logic to resubmit the request on EAGAIN. (Maybe this should be ENXIO, but crypto_kdispatch already does ENODEV.)
|
#
1.121 |
|
22-May-2022 |
riastradh |
crypto(4): Nix dead code now that crypto_freesession never fails.
|
#
1.120 |
|
22-May-2022 |
riastradh |
opencrypto: Make crypto_freesession return void.
No callers use the return value. It is not sensible to allow this to fail.
|
#
1.119 |
|
22-May-2022 |
riastradh |
crypto(4): crypto_freesession should never fail here.
It can only fail if we pass it an invalid sid, which the logic to maintain the user sessions should not do. So kassert error=0 here.
|
#
1.118 |
|
22-May-2022 |
riastradh |
crypto(4): Refuse crypto operations with nothing in them earlier.
This way we avoid passing 0 to crypto_getreq -- makes it easier to reason about everything downstream.
|
#
1.117 |
|
22-May-2022 |
riastradh |
opencrypto: Make crp_callback, krp_callback return void.
Nothing uses the return values inside opencrypto, so let's stop making users return them.
|
#
1.116 |
|
22-May-2022 |
riastradh |
crypto(4): Fix possible use-after-free in race around detach.
This is extremely unlikely because I don't think we have any drivers for removable crypto decelerators^Waccelerators...but if we were to sprout one, and someone ran crypto_dispatch concurrently with crypto_unregister, cryptodev_cb/mcb would enter with crp->crp_etype = EAGAIN and with CRYPTO_F_DONE set in crp->crp_flags. In this case, cryptodev_cb/mcb would issue crypto_dispatch but -- since nothing clears CRYPTO_F_DONE -- it would _also_ consider the request done and notify the ioctl thread of that.
With this change, we return early if crypto_dispatch succeeds. No need to consult CRYPTO_F_DONE: if the callback is invoked it's done, and if we try to redispatch it on EAGAIN but crypto_dispatch fails, it's done. (Soon we'll get rid of the possibility of crypto_dispatch failing synchronously, but not just yet.)
XXX This path could really use some testing!
|
#
1.115 |
|
21-May-2022 |
riastradh |
crypto(4): Fix set-but-unused variable warning.
This deliberately ignores the error code returned by crypto_dispatch, but that error code is fundamentally incoherent and the issue will be mooted by subsequent changes to make it return void and always pass the error through the callback, as well as subsequent changes to rip out the EAGAIN logic anyway.
|
#
1.114 |
|
21-May-2022 |
riastradh |
crypto(4): Don't signal the condvar for multi-operation completion.
The condvar may be destroyed by the time we got here, and nothing waits on it anyway -- instead the caller is expected to select/poll for completion in userland.
The bug was already here, but the recent change to eliminate CRYPTO_F_CBIMM made it happen more often by causing the callback to _always_ be run asynchronously instead of sometimes being run synchronously.
|
#
1.113 |
|
19-May-2022 |
riastradh |
opencrypto: Nix CRYPTO_F_USER, CRYPTO_F_CBIMM, CRYPTO_F_CBIFSYNC.
CRYPTO_F_USER is no longer needed. It was introduced in 2008 by darran@ in crypto.c 1.30, cryptodev.c 1.45 in an attempt to avoid double-free between the issuing thread and asynchronous callback. But the `fix' didn't work. In 2017, knakahara@ fixed it properly in cryptodev.c 1.87 by distinguishing `the crypto operation has completed' (CRYPTO_F_DONE) from `the callback is done touching the crp object' (CRYPTO_F_DQRETQ, now renamed to CRYPTODEV_F_RET).
CRYPTO_F_CBIMM formerly served to invoke the callback synchronously from the driver's interrupt completion routine, to reduce contention on what was once a single cryptoret thread. Now, there is a per-CPU queue and softint for much cheaper processing, so there is less motivation for this in the first place. So let's remove the complicated logic. This means the callbacks never run in hard interrupt context, which means we don't need to worry about recursion into crypto_dispatch in hard interrupt context.
|
#
1.112 |
|
18-May-2022 |
riastradh |
crypto(4): Simplify error test in cryptodev_op.
No functional change intended.
|
#
1.111 |
|
18-May-2022 |
riastradh |
crypto(4): Narrow scope of cryptodev_mtx to cover wait.
No functional change intended -- this only removes an unnecessary lock/unlock cycle in the error case.
|
#
1.110 |
|
18-May-2022 |
riastradh |
crypto(4): Nix long-dead code and comments.
|
#
1.109 |
|
18-May-2022 |
riastradh |
crypto(4): Use IPL_NONE, not IPL_NET, for /dev/crypto pools.
These are used (pool_get/put) only from thread context, never from interrupt or even soft interrupt context.
|
#
1.108 |
|
17-May-2022 |
riastradh |
opencrypto(9): Omit needless casts around callbacks.
Just declare the right types to begin with. No functional change intended.
|
#
1.107 |
|
31-Mar-2022 |
pgoyette |
For device modules that provide both auto-config and /dev/xxx interfaces, make sure that initialization and destruction follow the proper sequence. This is triggered by the recent changes to the devsw stuff; per riastradh@ the required call sequence is:
devsw_attach() config_init_component() or config_cf*_attach() ... config_fini_component() or config_cf*_detach() devsw_detach()
While here, add a few missing calls to some of the detach routines.
Testing of these changes has been limited to: 1. compile without build break 2. no related test failures from atf 3. modload/modunload work as well as before.
No functional device testing done, since I don't have any of these devices. Let me know of any damage I might cause here!
XXX Some of the modules affected by this commit are already XXX broken; see kern/56772. This commit does not break any additional modules (as far as I know).
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
#
1.106 |
|
30-Jun-2020 |
riastradh |
Rename enc_xform_rijndael128 -> enc_xform_aes.
Update netipsec dependency.
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
#
1.105 |
|
13-Apr-2020 |
chs |
slightly change and fix the semantics of pool_set*wat(), pool_sethardlimit() and pool_prime() (and their pool_cache_* counterparts):
- the pool_set*wat() APIs are supposed to specify thresholds for the count of free items in the pool before pool pages are automatically allocated or freed during pool_get() / pool_put(), whereas pool_sethardlimit() and pool_prime() are supposed to specify minimum and maximum numbers of total items in the pool (both free and allocated). these were somewhat conflated in the existing code, so separate them as they were intended.
- change pool_prime() to take an absolute number of items to preallocate rather than an increment over whatever was done before, and wait for any memory allocations to succeed. since pool_prime() can no longer fail after this, change its return value to void and adjust all callers.
- pool_setlowat() is documented as not immediately attempting to allocate any memory, but it was changed some time ago to immediately try to allocate up to the lowat level, so just fix the manpage to describe the current behaviour.
- add a pool_cache_prime() to complete the API set.
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.104 |
|
27-Jan-2020 |
pgoyette |
branches: 1.104.4; If we get an error from devsw_attach(), don't destroy the error value, since we need to return it to our caller. While we're here, improve the value of the debug message by actually printing the error value.
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
branches: 1.102.2; crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.124 |
|
22-May-2022 |
riastradh |
opencrypto: Prune dead code now that crypto_dispatch never fails.
|
#
1.123 |
|
22-May-2022 |
riastradh |
opencrypto: crypto_dispatch never fails now. Make it return void.
Same with crypto_kdispatch.
|
#
1.122 |
|
22-May-2022 |
riastradh |
opencrypto: Rip out EAGAIN logic when unregistering crypto drivers.
I'm pretty sure this never worked reliably based on code inspection, and it's unlikely to have ever been tested because it only applies when unregistering a driver -- but we have no crypto drivers for removable devices, so it would only apply if we went out of our way to trigger detach with drvctl.
Instead, just make the operation fail with ENODEV, and remove all the callback logic to resubmit the request on EAGAIN. (Maybe this should be ENXIO, but crypto_kdispatch already does ENODEV.)
|
#
1.121 |
|
22-May-2022 |
riastradh |
crypto(4): Nix dead code now that crypto_freesession never fails.
|
#
1.120 |
|
22-May-2022 |
riastradh |
opencrypto: Make crypto_freesession return void.
No callers use the return value. It is not sensible to allow this to fail.
|
#
1.119 |
|
22-May-2022 |
riastradh |
crypto(4): crypto_freesession should never fail here.
It can only fail if we pass it an invalid sid, which the logic to maintain the user sessions should not do. So kassert error=0 here.
|
#
1.118 |
|
22-May-2022 |
riastradh |
crypto(4): Refuse crypto operations with nothing in them earlier.
This way we avoid passing 0 to crypto_getreq -- makes it easier to reason about everything downstream.
|
#
1.117 |
|
22-May-2022 |
riastradh |
opencrypto: Make crp_callback, krp_callback return void.
Nothing uses the return values inside opencrypto, so let's stop making users return them.
|
#
1.116 |
|
22-May-2022 |
riastradh |
crypto(4): Fix possible use-after-free in race around detach.
This is extremely unlikely because I don't think we have any drivers for removable crypto decelerators^Waccelerators...but if we were to sprout one, and someone ran crypto_dispatch concurrently with crypto_unregister, cryptodev_cb/mcb would enter with crp->crp_etype = EAGAIN and with CRYPTO_F_DONE set in crp->crp_flags. In this case, cryptodev_cb/mcb would issue crypto_dispatch but -- since nothing clears CRYPTO_F_DONE -- it would _also_ consider the request done and notify the ioctl thread of that.
With this change, we return early if crypto_dispatch succeeds. No need to consult CRYPTO_F_DONE: if the callback is invoked it's done, and if we try to redispatch it on EAGAIN but crypto_dispatch fails, it's done. (Soon we'll get rid of the possibility of crypto_dispatch failing synchronously, but not just yet.)
XXX This path could really use some testing!
|
#
1.115 |
|
21-May-2022 |
riastradh |
crypto(4): Fix set-but-unused variable warning.
This deliberately ignores the error code returned by crypto_dispatch, but that error code is fundamentally incoherent and the issue will be mooted by subsequent changes to make it return void and always pass the error through the callback, as well as subsequent changes to rip out the EAGAIN logic anyway.
|
#
1.114 |
|
21-May-2022 |
riastradh |
crypto(4): Don't signal the condvar for multi-operation completion.
The condvar may be destroyed by the time we got here, and nothing waits on it anyway -- instead the caller is expected to select/poll for completion in userland.
The bug was already here, but the recent change to eliminate CRYPTO_F_CBIMM made it happen more often by causing the callback to _always_ be run asynchronously instead of sometimes being run synchronously.
|
#
1.113 |
|
19-May-2022 |
riastradh |
opencrypto: Nix CRYPTO_F_USER, CRYPTO_F_CBIMM, CRYPTO_F_CBIFSYNC.
CRYPTO_F_USER is no longer needed. It was introduced in 2008 by darran@ in crypto.c 1.30, cryptodev.c 1.45 in an attempt to avoid double-free between the issuing thread and asynchronous callback. But the `fix' didn't work. In 2017, knakahara@ fixed it properly in cryptodev.c 1.87 by distinguishing `the crypto operation has completed' (CRYPTO_F_DONE) from `the callback is done touching the crp object' (CRYPTO_F_DQRETQ, now renamed to CRYPTODEV_F_RET).
CRYPTO_F_CBIMM formerly served to invoke the callback synchronously from the driver's interrupt completion routine, to reduce contention on what was once a single cryptoret thread. Now, there is a per-CPU queue and softint for much cheaper processing, so there is less motivation for this in the first place. So let's remove the complicated logic. This means the callbacks never run in hard interrupt context, which means we don't need to worry about recursion into crypto_dispatch in hard interrupt context.
|
#
1.112 |
|
18-May-2022 |
riastradh |
crypto(4): Simplify error test in cryptodev_op.
No functional change intended.
|
#
1.111 |
|
18-May-2022 |
riastradh |
crypto(4): Narrow scope of cryptodev_mtx to cover wait.
No functional change intended -- this only removes an unnecessary lock/unlock cycle in the error case.
|
#
1.110 |
|
18-May-2022 |
riastradh |
crypto(4): Nix long-dead code and comments.
|
#
1.109 |
|
18-May-2022 |
riastradh |
crypto(4): Use IPL_NONE, not IPL_NET, for /dev/crypto pools.
These are used (pool_get/put) only from thread context, never from interrupt or even soft interrupt context.
|
#
1.108 |
|
17-May-2022 |
riastradh |
opencrypto(9): Omit needless casts around callbacks.
Just declare the right types to begin with. No functional change intended.
|
#
1.107 |
|
31-Mar-2022 |
pgoyette |
For device modules that provide both auto-config and /dev/xxx interfaces, make sure that initialization and destruction follow the proper sequence. This is triggered by the recent changes to the devsw stuff; per riastradh@ the required call sequence is:
devsw_attach() config_init_component() or config_cf*_attach() ... config_fini_component() or config_cf*_detach() devsw_detach()
While here, add a few missing calls to some of the detach routines.
Testing of these changes has been limited to: 1. compile without build break 2. no related test failures from atf 3. modload/modunload work as well as before.
No functional device testing done, since I don't have any of these devices. Let me know of any damage I might cause here!
XXX Some of the modules affected by this commit are already XXX broken; see kern/56772. This commit does not break any additional modules (as far as I know).
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
#
1.106 |
|
30-Jun-2020 |
riastradh |
Rename enc_xform_rijndael128 -> enc_xform_aes.
Update netipsec dependency.
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
#
1.105 |
|
13-Apr-2020 |
chs |
slightly change and fix the semantics of pool_set*wat(), pool_sethardlimit() and pool_prime() (and their pool_cache_* counterparts):
- the pool_set*wat() APIs are supposed to specify thresholds for the count of free items in the pool before pool pages are automatically allocated or freed during pool_get() / pool_put(), whereas pool_sethardlimit() and pool_prime() are supposed to specify minimum and maximum numbers of total items in the pool (both free and allocated). these were somewhat conflated in the existing code, so separate them as they were intended.
- change pool_prime() to take an absolute number of items to preallocate rather than an increment over whatever was done before, and wait for any memory allocations to succeed. since pool_prime() can no longer fail after this, change its return value to void and adjust all callers.
- pool_setlowat() is documented as not immediately attempting to allocate any memory, but it was changed some time ago to immediately try to allocate up to the lowat level, so just fix the manpage to describe the current behaviour.
- add a pool_cache_prime() to complete the API set.
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.104 |
|
27-Jan-2020 |
pgoyette |
branches: 1.104.4; If we get an error from devsw_attach(), don't destroy the error value, since we need to return it to our caller. While we're here, improve the value of the debug message by actually printing the error value.
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
branches: 1.102.2; crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.107 |
|
31-Mar-2022 |
pgoyette |
For device modules that provide both auto-config and /dev/xxx interfaces, make sure that initialization and destruction follow the proper sequence. This is triggered by the recent changes to the devsw stuff; per riastradh@ the required call sequence is:
devsw_attach() config_init_component() or config_cf*_attach() ... config_fini_component() or config_cf*_detach() devsw_detach()
While here, add a few missing calls to some of the detach routines.
Testing of these changes has been limited to: 1. compile without build break 2. no related test failures from atf 3. modload/modunload work as well as before.
No functional device testing done, since I don't have any of these devices. Let me know of any damage I might cause here!
XXX Some of the modules affected by this commit are already XXX broken; see kern/56772. This commit does not break any additional modules (as far as I know).
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
#
1.106 |
|
30-Jun-2020 |
riastradh |
Rename enc_xform_rijndael128 -> enc_xform_aes.
Update netipsec dependency.
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
#
1.105 |
|
13-Apr-2020 |
chs |
slightly change and fix the semantics of pool_set*wat(), pool_sethardlimit() and pool_prime() (and their pool_cache_* counterparts):
- the pool_set*wat() APIs are supposed to specify thresholds for the count of free items in the pool before pool pages are automatically allocated or freed during pool_get() / pool_put(), whereas pool_sethardlimit() and pool_prime() are supposed to specify minimum and maximum numbers of total items in the pool (both free and allocated). these were somewhat conflated in the existing code, so separate them as they were intended.
- change pool_prime() to take an absolute number of items to preallocate rather than an increment over whatever was done before, and wait for any memory allocations to succeed. since pool_prime() can no longer fail after this, change its return value to void and adjust all callers.
- pool_setlowat() is documented as not immediately attempting to allocate any memory, but it was changed some time ago to immediately try to allocate up to the lowat level, so just fix the manpage to describe the current behaviour.
- add a pool_cache_prime() to complete the API set.
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.104 |
|
27-Jan-2020 |
pgoyette |
branches: 1.104.4; If we get an error from devsw_attach(), don't destroy the error value, since we need to return it to our caller. While we're here, improve the value of the debug message by actually printing the error value.
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
branches: 1.102.2; crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.106 |
|
30-Jun-2020 |
riastradh |
Rename enc_xform_rijndael128 -> enc_xform_aes.
Update netipsec dependency.
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
#
1.105 |
|
13-Apr-2020 |
chs |
slightly change and fix the semantics of pool_set*wat(), pool_sethardlimit() and pool_prime() (and their pool_cache_* counterparts):
- the pool_set*wat() APIs are supposed to specify thresholds for the count of free items in the pool before pool pages are automatically allocated or freed during pool_get() / pool_put(), whereas pool_sethardlimit() and pool_prime() are supposed to specify minimum and maximum numbers of total items in the pool (both free and allocated). these were somewhat conflated in the existing code, so separate them as they were intended.
- change pool_prime() to take an absolute number of items to preallocate rather than an increment over whatever was done before, and wait for any memory allocations to succeed. since pool_prime() can no longer fail after this, change its return value to void and adjust all callers.
- pool_setlowat() is documented as not immediately attempting to allocate any memory, but it was changed some time ago to immediately try to allocate up to the lowat level, so just fix the manpage to describe the current behaviour.
- add a pool_cache_prime() to complete the API set.
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.104 |
|
27-Jan-2020 |
pgoyette |
branches: 1.104.4; If we get an error from devsw_attach(), don't destroy the error value, since we need to return it to our caller. While we're here, improve the value of the debug message by actually printing the error value.
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
branches: 1.102.2; crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.105 |
|
13-Apr-2020 |
chs |
slightly change and fix the semantics of pool_set*wat(), pool_sethardlimit() and pool_prime() (and their pool_cache_* counterparts):
- the pool_set*wat() APIs are supposed to specify thresholds for the count of free items in the pool before pool pages are automatically allocated or freed during pool_get() / pool_put(), whereas pool_sethardlimit() and pool_prime() are supposed to specify minimum and maximum numbers of total items in the pool (both free and allocated). these were somewhat conflated in the existing code, so separate them as they were intended.
- change pool_prime() to take an absolute number of items to preallocate rather than an increment over whatever was done before, and wait for any memory allocations to succeed. since pool_prime() can no longer fail after this, change its return value to void and adjust all callers.
- pool_setlowat() is documented as not immediately attempting to allocate any memory, but it was changed some time ago to immediately try to allocate up to the lowat level, so just fix the manpage to describe the current behaviour.
- add a pool_cache_prime() to complete the API set.
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
#
1.104 |
|
27-Jan-2020 |
pgoyette |
If we get an error from devsw_attach(), don't destroy the error value, since we need to return it to our caller. While we're here, improve the value of the debug message by actually printing the error value.
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
branches: 1.102.2; crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.104 |
|
27-Jan-2020 |
pgoyette |
If we get an error from devsw_attach(), don't destroy the error value, since we need to return it to our caller. While we're here, improve the value of the debug message by actually printing the error value.
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
branches: 1.102.2; crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.103 |
|
16-Jan-2020 |
christos |
Initialize the session variable to an impossible session to prevent compiler warnings.
|
Revision tags: ad-namecache-base
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.102 |
|
29-Nov-2019 |
hikaru |
crypto(4): accept CRYPTO_SHA2_384_HMAC and CRYPTO_SHA2_512_HMAC.
|
Revision tags: netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.101 |
|
13-Jun-2019 |
christos |
don't always panic when modunload crypto (int the pool destroy code, because the pools are busy). XXX: this is still racy; we need to prevent creating more sessions while destroying.
|
Revision tags: phil-wifi-20190609 isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; 1.98.4; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
Revision tags: isaki-audio2-base
|
#
1.100 |
|
01-Mar-2019 |
pgoyette |
Rename the MODULE_*_HOOK() macros to MODULE_HOOK_*() as briefly discussed on irc.
NFCI intended.
Ride the earlier kernel bump - it;s getting crowded.
|
#
1.99 |
|
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
#
1.98 |
|
08-Feb-2018 |
dholland |
branches: 1.98.2; Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.98 |
|
08-Feb-2018 |
dholland |
Typos.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
Revision tags: tls-maxphys-base-20171202
|
#
1.97 |
|
30-Nov-2017 |
christos |
add fo_name so we can identify the fileops in a simple way.
|
#
1.96 |
|
14-Nov-2017 |
christos |
check results of pool_prime.
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
branches: 1.92.2; rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.95 |
|
15-Jun-2017 |
knakahara |
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only. It should be divided to other member.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.94 |
|
08-Jun-2017 |
knakahara |
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
|
#
1.93 |
|
08-Jun-2017 |
knakahara |
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
|
Revision tags: netbsd-8-base
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.92 |
|
02-Jun-2017 |
knakahara |
rename crypto_mtx to cryptodev_mtx
It is used by cryptodev.c and ocryptodev.c only.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.91 |
|
25-May-2017 |
knakahara |
add cryptkop alloc/free KPI instead of manipulating cryptkop_pool directly.
|
Revision tags: prg-localcount2-base3
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
#
1.90 |
|
17-May-2017 |
knakahara |
opencrypto: cleanup debug messages.
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
Revision tags: prg-localcount2-base pgoyette-localcount-20170426
|
#
1.89 |
|
24-Apr-2017 |
knakahara |
branches: 1.89.2; separate crypto_drv_mtx from crypto_mtx.
crypto_mtx is used only for cryptodev.c and ocryptodev.c now.
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base
|
#
1.88 |
|
07-Apr-2017 |
knakahara |
the processing said "ghastly hacks" is unnecessary now.
|
#
1.87 |
|
07-Apr-2017 |
knakahara |
fix race among crypto_done(), cryptoret(), and {cryptodev_op(), cryptodev_key()}.
crypto_op() waited to be set CRYPTO_F_DONE with crp->crp_cv. However, there is context switch chances between being set CRYPTO_F_DONE in crypto_done() and done cv_signal(crp->crp_cv) in cryptodev_cb(), that is, cryptodev_op() thread can run to cv_destroy(crp->crp_cv) before cryptoret() thread is waken up. As a result, cryptodev_cb() can call invalid(destroyed) cv_signal(crp->crp_cv).
Furthermore, below two implementations cause other races. - waiting CRYPTO_F_DONE with crp->crp_cv - context witch chances between set CRYPTO_F_DONE and cv_signal(crp->crp_cv)
So, use other flag(CRYPTO_F_DQRETQ) for cryptodev_op() and cryptodev_key(), and then call cv_signal(crp->crp_cv) immediately after set CRYPTO_F_DQRETQ.
Tested concurrent over 20 processes with software and hardware drivers.
|
#
1.86 |
|
05-Apr-2017 |
knakahara |
fix processes accessing /dev/crypto stall when over three processes run with a hardware encryption driver
The process has stalled at cv_wait(&crp->crp_cv) because cryptodev_cb() is not called as cryptoret() kthread keep waiting at cv_wait(&cryptoret_cv). Previous opencrypto implementation assumes the thread from cryptodev.c does all processing in the same context, so skips enqueueing and sending cryptoret_cv. However, the context can be switched, e.g. when we use a hardware encryption driver.
And add debug messages.
|
Revision tags: pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; 1.85.4; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.85 |
|
07-Jul-2016 |
msaitoh |
branches: 1.85.2; KNF. Remove extra spaces. No functional change.
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
#
1.84 |
|
20-Aug-2015 |
christos |
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
#
1.83 |
|
26-Mar-2015 |
prlw1 |
Trivial printf format changes and typo fix
|
Revision tags: nick-nhusb-base
|
#
1.82 |
|
27-Nov-2014 |
christos |
branches: 1.82.2; Return ENOSPC instead of ENOMEM when there is no room in the buffer to store results. ENOMEM in this subsystem means we cannot allocate more requests or internal buffers for xforms.
|
#
1.81 |
|
05-Sep-2014 |
matt |
Try not to use f_data, use f_fcrypt to get a correctly typed pointer.
|
Revision tags: netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
#
1.80 |
|
04-Aug-2014 |
skrll |
At least crypto_mtx needs initialisation here. Spotted during PR/49065 investigation.
|
#
1.79 |
|
25-Jul-2014 |
dholland |
Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
#
1.78 |
|
16-Mar-2014 |
dholland |
branches: 1.78.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
#
1.77 |
|
03-Feb-2014 |
pgoyette |
Undo previous - it still needs a lot more work.
For now, we'll use the hand-crafted cf* structures and directly call all the config routines.
|
#
1.76 |
|
31-Jan-2014 |
pgoyette |
Replace home-grown config with standardized calls to config_{init,fini}_component()
|
#
1.75 |
|
24-Jan-2014 |
pgoyette |
As requested by mrg@, since there is still a small window during which the in-module ref-counting can fail, completely disable auto-unload.
|
#
1.74 |
|
21-Jan-2014 |
pgoyette |
Implement in-module ref-counting, and do not allow auto-unload if there are existing references.
Note that manual unloading is not prevented.
OK christos@
XXX Also note that there is still a small window where the ref-count can XXX be decremented, and then the process/thread preempted. If auto-unload XXX happens before that thread can return from the module's code, bad XXX things (tm) could happen.
|
#
1.73 |
|
21-Jan-2014 |
pgoyette |
knf: Blank line even if no variable declarations.
|
#
1.72 |
|
19-Jan-2014 |
christos |
bail out unloading for now
|
#
1.71 |
|
04-Jan-2014 |
pgoyette |
When crypto(4) is built-in, crypto_modcmd() doesn't need to handle all the auto-config stuff.
While here, ensure that we depend on opencrypto.
|
#
1.70 |
|
01-Jan-2014 |
pgoyette |
Modularize the opencrypto components and link to the build
|
#
1.69 |
|
12-Sep-2013 |
martin |
Fix return value of cryptodev_msessionfin.
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
#
1.68 |
|
04-Jul-2011 |
joerg |
branches: 1.68.2; 1.68.12; 1.68.16; Fix memset usage.
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
#
1.67 |
|
09-Jun-2011 |
drochner |
-if an opencrypto(9) session is allocated, the driver is refcounted and can not disappear -- no need to hold crypto_mtx to check the driver list (the whole check is questionable) -crp->crp_cv (the condition variable) is used by userland cryptodev exclusively -- move its initialization there, no need to waste cycles of in-kernel callers -add a comment which members of "struct cryptop" are used by opencrypto(9) and which by crypto(4) (this should be split, no need to waste memory for in-kernel callers)
|
Revision tags: cherry-xenmp-base
|
#
1.66 |
|
27-May-2011 |
drochner |
branches: 1.66.2; allow testing of GCM/GMAC code from userland
|
#
1.65 |
|
26-May-2011 |
drochner |
fix building of a linked list if multiple algorithms are requested in a session -- this just didn't work
|
#
1.64 |
|
24-May-2011 |
drochner |
catch some corner cases of user input
|
#
1.63 |
|
24-May-2011 |
drochner |
copy AES-XCBC-MAC support from KAME IPSEC to FAST_IPSEC For this to fit, an API change in cryptosoft was adopted from OpenBSD (addition of a "Setkey" method to hashes) which was done for GCM/GMAC support there, so it might be useful in the future anyway. tested against KAME IPSEC AFAICT, FAST_IPSEC now supports as much as KAME.
|
#
1.62 |
|
23-May-2011 |
drochner |
-remove references to crypto/arc4/arc4.* -- the code isn't used anywhere afaics (The confusion comes probably from use of arc4random() at various places, but this lives in libkern and doesn't share code with the former.) -g/c non-implementation of arc4 encryption in swcrypto(4) -remove special casing of ARC4 in crypto(4) -- the point is that it doesn't use an IV, and this fact is made explicit by the new "ivsize" property of xforms
|
#
1.61 |
|
23-May-2011 |
drochner |
If symmetric encryption is done from userland crypto(4) and no IV is specified, the kernel gets one from the random generator. Make sure it is copied out to the user, otherwise the result is quite useless.
|
#
1.60 |
|
23-May-2011 |
drochner |
being here, export camellia-cbc through crypto(4) to allow userland tests
|
#
1.59 |
|
23-May-2011 |
drochner |
add an AES-CTR xform, from OpenBSD
|
#
1.58 |
|
23-May-2011 |
drochner |
-in the descriptor for encryption xforms, split the "blocksize" field into "blocksize" and "IV size" -add an "reinit" function pointer which, if set, means that the xform does its IV handling itself and doesn't want the default CBC handling by the framework (poor name, but left that way to avoid unecessary differences) This syncs with Open/FreeBSD, purpose is to allow non-CBC transforms. Refer to ivsize instead of blocksize where appropriate. (At this point, blocksize and ivsize are identical.)
|
#
1.57 |
|
16-May-2011 |
drochner |
split the "crypto_mtx" spinlock into 3: one spinlock each for the incoming and outgoing request queues (which can be dealt with by hardware accelerators) and an adaptive lock for "all the rest" (mostly driver configuration, but also some unrelated stuff in cryptodev.c which should be revisited) The latter one seems to be uneeded at many places, but for now I've done simple replacements only, except minor fixes (where softint_schedule() was called without the lock held)
|
#
1.56 |
|
06-May-2011 |
drochner |
As a first step towards more fine-grained locking, don't require crypto_{new.free}session() to be called with the "crypto_mtx" spinlock held. This doesn't change much for now because these functions acquire the said mutex first on entry now, but at least it keeps the nasty locks local to the opencrypto core.
|
Revision tags: bouyer-quota2-nbase
|
#
1.55 |
|
19-Feb-2011 |
drochner |
make the compatibility code conditional on COMPAT_50
|
#
1.54 |
|
18-Feb-2011 |
drochner |
more "const"
|
Revision tags: bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
#
1.53 |
|
02-Aug-2010 |
jakllsch |
branches: 1.53.2; 1.53.4; Consistently use a single CRYPTO_SESID2HID-like macro. Improve CRYPTO_DEBUG printing a bit: print pointers with %p print unsigned with %u rather than %d use CRYPTO_SESID2LID instead of just casting to uint32_t
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
#
1.52 |
|
31-Jan-2010 |
hubertf |
branches: 1.52.2; 1.52.4; Add missing "break" for CRYPTO_CAST_CBC, and some assorted comment fixes. openssl(1) checks for CAST (and others) on ~every startup.
|
#
1.51 |
|
20-Dec-2009 |
dsl |
If a multithreaded app closes an fd while another thread is blocked in read/write/accept, then the expectation is that the blocked thread will exit and the close complete. Since only one fd is affected, but many fd can refer to the same file, the close code can only request the fs code unblock with ERESTART. Fixed for pipes and sockets, ERESTART will only be generated after such a close - so there should be no change for other programs. Also rename fo_abort() to fo_restart() (this used to be fo_drain()). Fixes PR/26567
|
Revision tags: matt-premerge-20091211
|
#
1.50 |
|
09-Dec-2009 |
dsl |
Rename fo_drain() to fo_abort(), 'drain' is used to mean 'wait for output do drain' in many places, whereas fo_drain() was called in order to force blocking read()/write() etc calls to return to userspace so that a close() call from a different thread can complete. In the sockets code comment out the broken code in the inner function, it was being called from compat code.
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
#
1.49 |
|
11-Apr-2009 |
christos |
Fix locking as Andy explained. Also fill in uid and gid like sys_pipe did.
|
#
1.48 |
|
11-Apr-2009 |
christos |
Fix PR/37878 and PR/37550: Provide stat(2) for all devices and don't use fbadop_stat.
|
#
1.47 |
|
04-Apr-2009 |
ad |
Add fileops::fo_drain(), to be called from fd_close() when there is more than one active reference to a file descriptor. It should dislodge threads sleeping while holding a reference to the descriptor. Implemented only for sockets but should be extended to pipes, fifos, etc.
Fixes the case of a multithreaded process doing something like the following, which would have hung until the process got a signal.
thr0 accept(fd, ...) thr1 close(fd)
|
#
1.46 |
|
25-Mar-2009 |
darran |
Fixes PR kern/41069 and PR kern/41070.
Extends the Opencrypto API to allow the destination buffer size to be specified when its not the same size as the input buffer (i.e. for operations like compress and decompress). The crypto_op and crypt_n_op structures gain a u_int dst_len field. The session_op structure gains a comp_alg field to specify a compression algorithm. Moved four ioctls to new ids; CIOCGSESSION, CIOCNGSESSION, CIOCCRYPT, and CIOCNCRYPTM. Added four backward compatible ioctls; OCIOCGSESSION, OCIOCNGSESSION, OCIOCCRYPT, and OCIOCNCRYPTM.
Backward compatibility is maintained in ocryptodev.h and ocryptodev.c which implement the original ioctls and set dst_len and comp_alg to 0.
Adds user-space access to compression features.
Adds software gzip support (CRYPTO_GZIP_COMP).
Adds the fast version of crc32 from zlib to libkern. This should be generally useful and provide a place to start normalizing the various crc32 routines in the kernel. The crc32 routine is used in this patch to support GZIP.
With input and support from tls@NetBSD.org.
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.45 |
|
18-Nov-2008 |
darran |
branches: 1.45.4; Fix a race condition in opencrypto where the crypto request could be completed by the crypto device, queued on the retq, but freed by the ioctl lwp. The problem manifests as various panics relating to the condvar inside the request. The problem can occur whenever the crypto device completes the request immediately and the ioctl skips the cv_wait().
The problem can be reproduced by enabling cryptosoft and running an openssl speed test. E.g. sysctl -w kern.cryptodevallowsoft=-1 openssl speed -engine cryptodev -evp des-ede3-cbc -multi 64
Add a macro for TAILQ_FOREACH_REVERSE_SAFE() to queue.h, since this was missing and the opencrypto code removes requests from a list while iterating with TAILQ_FOREACH_REVERSE().
Add missing cv_destroy() calls for the key request cleanup.
Reviewed by Thor Lancelot Simon.
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
#
1.44 |
|
24-May-2008 |
christos |
branches: 1.44.4; 1.44.6; 1.44.8; Coverity CID 5021: Check pointers before using.
|
#
1.43 |
|
24-May-2008 |
christos |
Coverity CID 5027: Remove impossible test.
|
#
1.42 |
|
24-May-2008 |
christos |
KNF, whitespace, b* -> mem*. No functional change.
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
#
1.41 |
|
30-Apr-2008 |
ad |
branches: 1.41.2; Make various bits of debug code compile again.
|
#
1.40 |
|
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-nfs-mp-base
|
#
1.39 |
|
21-Apr-2008 |
tls |
branches: 1.39.2; As suggested by rmind, do not check return status of KM_SLEEP/PR_WAITOK allocations. A little hair-raising but it does make the code easier to read.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.38 |
|
11-Apr-2008 |
rmind |
branches: 1.38.2; Protect selrecord/selnotify calls with crypto_mtx; few misc changes.
|
#
1.37 |
|
11-Apr-2008 |
dogcow |
fix 64-bit b0rkenness.
|
#
1.36 |
|
10-Apr-2008 |
tls |
Extend crypto.4 interface:
* Asynchronous operation with result retrieval via select/poll * Mutliple-request submit/retrieve ioctls * Mutliple-session create-destroy ioctls
Revise/rewrite crypto.4 manual page. It should now be much easier to write new applications to this API.
Measured performance for trivial requests: 84,000 very short modular math operations/sec, 120,000 very short md5 hashes per sec (with a hardware accellerator of moderate performance but very low latency, whose driver will be contributed at a later date).
Contributed to TNF by Coyote Point Systems, Inc.
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.35 |
|
21-Mar-2008 |
ad |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.34 |
|
04-Feb-2008 |
tls |
branches: 1.34.6; Some locking fixes (double-release mutex in softintr wakeup case, which I hadn't tested) and an uninitialized field in cse which Darran Hunt found. Some more debugging printfs.
Turn on MPSAFE for the kthread. We're not sure it's safe for the softint yet. Gives a little performance kick for swcrypto with many requests on MP systems.
|
#
1.33 |
|
04-Feb-2008 |
tls |
Rework opencrypto to use a spin mutex (crypto_mtx) instead of "splcrypto" (actually splnet) and condvars instead of tsleep/wakeup. Fix a few miscellaneous problems and add some debugging printfs while there.
Restore set of CRYPTO_F_DONE in crypto_done() which was lost at some point after this code came from FreeBSD -- it made it impossible to wait properly for a condition.
Add flags analogous to the "crp" flags to the key operation's krp struct. Add a new flag, CRYPTO_F_ONRETQ which tells us a request finished before the kthread had a chance to dequeue it and call its callback -- this was letting requests stick on the queues before even though done and copied out.
Callers of crypto_newsession() or crypto_freesession() must now take the mutex. Change netipsec to do so. Dispatch takes the mutex itself as needed.
This was tested fairly extensively with the cryptosoft backend and lightly with a new hardware driver. It has not been tested with FAST_IPSEC; I am unable to ascertain whether FAST_IPSEC currently works at all in our tree.
pjd@FreeBSD.ORG, ad@NetBSD.ORG, and darran@snark.us pointed me in the right direction several times in the course of this. Remaining bugs are mine alone.
|
#
1.32 |
|
02-Feb-2008 |
tls |
From Darran Hunt at Coyote Point: don't truncate HMAC to 96 bits unless actually asked to.
Fixed in FreeBSD a while ago, discussed on tech-kern and tech-crypto.
|
#
1.31 |
|
01-Feb-2008 |
tls |
This code never worked on a released version of FreeBSD in the form it's been in in our tree, and certainly does not work on any version of FreeBSD now. Run through unifdef -D__NetBSD__ -U__FreeBSD__ yielding a small reduction of size and a dramatic improvement in readability.
No, this does not yield any meaningful decrease in patchability (unlike mechanical changes that touch live source lines) -- try it and see.
|
#
1.30 |
|
29-Jan-2008 |
tls |
Fix accidental checkin inverting the sense of cryptodev_allowsoft, which is crazy but has always documented.
|
#
1.29 |
|
26-Jan-2008 |
tls |
Make /dev/crypto properly cloning. Leave CRIOGET in place but note that it is deprecated, no longer required, and will be removed in a future release of NetBSD.
Dramatically reduce the size of the session structure by removing an IOV_MAX array of iovecs where only the first was use. Saves an 8k bzero on each session creation.
Convert fixed-size allocations in cryptodev.c to pools.
|
#
1.28 |
|
25-Jan-2008 |
tls |
Some minor opencrypto fixes, one with a major performance impact for OpenSSL:
1) Fix extremely misleading text in crypto.4 manual page so it does not appear to claim that a new cloned file descriptor is required for every session.
2) Fix severe performance problem (and fd leak!) in openssl cryptodev engine resulting from misunderstanding probably caused by said manual page text.
3) Check for session-ID wraparound in kernel cryptodev provider. Also, start allocating sessions at 1, not 0 -- this will be necessary when we add ioctls for the creation of multiple sessions at once, so we can tell which if any creations failed.
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.27 |
|
19-Jan-2008 |
tls |
Add constants for modular arithmetic operations other than exponentiation -- there's hardware out there which can do them.
|
Revision tags: nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.26 |
|
04-Mar-2007 |
christos |
branches: 1.26.16; 1.26.22; 1.26.28; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.25 |
|
16-Nov-2006 |
christos |
branches: 1.25.4; __unused removal on arguments; approved by core.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.24 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
#
1.23 |
|
29-Aug-2006 |
christos |
branches: 1.23.2; 1.23.4; fix incomplete initializer
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
#
1.22 |
|
23-Jul-2006 |
ad |
Use the LWP cached credentials where sane.
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
#
1.21 |
|
14-May-2006 |
elad |
integrate kauth.
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
#
1.20 |
|
04-Apr-2006 |
christos |
Coverity CID 1083: Avoid possible NULL pointer deref.
|
Revision tags: yamt-pdpolicy-base3
|
#
1.19 |
|
17-Mar-2006 |
christos |
don't use MALLOC with a non-constant size; use malloc instead.
|
Revision tags: peter-altq-base yamt-pdpolicy-base2
|
#
1.18 |
|
06-Mar-2006 |
christos |
branches: 1.18.2; 1.18.4; sprinkle DPRINTF()...
|
Revision tags: yamt-pdpolicy-base
|
#
1.17 |
|
01-Mar-2006 |
yamt |
branches: 1.17.2; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
Revision tags: yamt-uio_vmspace-base5
|
#
1.16 |
|
11-Dec-2005 |
christos |
branches: 1.16.2; 1.16.4; 1.16.6; merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
#
1.15 |
|
25-Nov-2005 |
thorpej |
- De-couple the software crypto implementation from the rest of the framework. There is no need to waste the space if you are only using algoritms provided by hardware accelerators. To get the software implementations, add "pseudo-device swcr" to your kernel config. - Lazily initialize the opencrypto framework when crypto drivers (either hardware or swcr) register themselves with the framework.
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.14 |
|
22-Aug-2005 |
jonathan |
branches: 1.14.6; No change. Forced commit to record commit message for previous revision, viz:
Fix vulnerability to a denial-of-service attack which passes a length-0 crypto op. Check for zero length and return EINVAL, taken from:
http://cvsweb.FreeBSD.org/src/sys/opencrypto/cryptodev.c.diff?r1=1.25&r2=1.26
Original FreeBSD log mesage:
Modified files: sys/opencrypto cryptodev.c Log: Fix bogus check. It was possible to panic the kernel by giving 0 length. This is actually a local DoS, as every user can use /dev/crypto if there is crypto hardware in the system and cryptodev.ko is loaded (or compiled into the kernel).
Reported by: Mike Tancsa <mike@sentex.net>
thanks to Sam Leffler for passing on a heads-up about this issue.
|
#
1.13 |
|
22-Aug-2005 |
jonathan |
*** empty log message ***
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
#
1.12 |
|
30-Nov-2004 |
christos |
branches: 1.12.12; Cloning cleanup: 1. make fileops const 2. add 2 new negative errno's to `officially' support the cloning hack: - EDUPFD (used to overload ENODEV) - EMOVEFD (used to overload ENXIO) 3. Created an fdclone() function to encapsulate the operations needed for EMOVEFD, and made all cloners use it. 4. Centralize the local noop/badop fileops functions to: fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
|
#
1.11 |
|
17-Sep-2004 |
skrll |
There's no need to pass a proc value when using UIO_SYSSPACE with vn_rdwr(9) and uiomove(9).
OK'd by Jason Thorpe
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
#
1.10 |
|
19-Nov-2003 |
jonathan |
branches: 1.10.4; Wrap noisy pointless message about denied userspace requests with `#ifdef CRYPTO_DEBUG', per Jason Thorpe's suggestion.
|
#
1.9 |
|
19-Nov-2003 |
jonathan |
Clean up userlevel access to software kernel transforms, in preparation for using /dev/crypto for OpenSSL:
1. Add comments explaining crypto_devallowsoft, explaining the OpenBSD-style three-way logic actully implemented in crypto_newsession().
2. Pass crypto_devallowsoft as the final argument to crypto_newsession(), instead of a constant 0 value.
3. Set the default value of crypto_devallowsoft to 1, to allow /dev/crypto access only for hardware-supported transforms.
Items 1-3 may be revised to match the FreeBSD two-way logic, if the consensus is that there's no point to forcing software transforms. But as a first step, let the description match what the code actually does.
GC unused variables usercrypto, userasmcrypto, cryptodevallowsoft from cryptodev.c, in favour of variables crypto_usercrypto, crypto_userasmcrypto, crypto_devallowsoft, which are used as well as defined in crypto.c.
|
#
1.8 |
|
16-Nov-2003 |
jonathan |
Remove '#ifdef notdef' around userspace ioctl() requests for pure (non-HMAC) MD5 and SHA1.
|
#
1.7 |
|
26-Aug-2003 |
thorpej |
Remove a bunch of unnecessary includes.
|
#
1.6 |
|
25-Aug-2003 |
thorpej |
It's bad form to use the <opencrypto/rmd160.h> header file while using the crypto/ripemd160/rmd160.c implementation. Remove the opencrypto-local copies of these files entirely.
|
#
1.5 |
|
22-Aug-2003 |
itojun |
on netbsd, major # for /dev/crypto depends on arch
|
#
1.4 |
|
21-Aug-2003 |
jonathan |
Pull up `done' flag for crypto operations from FreeBSD. FreeBSD deltas: cryptodev.c: 1.4.2.3 -> 1.4.2.4 cryptodev.h: 1.4.2.4 -> 1.4.2.5
|
#
1.3 |
|
30-Jul-2003 |
jonathan |
Garbage-collect references to OpenBSD-only <dev/rndvar.h>.
|
#
1.2 |
|
28-Jul-2003 |
jonathan |
Remove vestiges of OpenBSD <sys/md5k.h> header.
|
#
1.1 |
|
25-Jul-2003 |
jonathan |
Commit initial NetBSD port of the OpenCrypto Framework (OCF). This code is derived from Sam Leffler's FreeBSD port of OCF, which is in turn a port of Angelos Keromytis's OpenBSD work. Credit to Sam and Angelos, any blame for the NetBSD port to me.
|