K 10 svn:author V 3 pjd K 8 svn:date V 27 2006-05-22T07:48:45.000000Z K 7 svn:log V 590 We must synchronize access to cc_qblocked, because there could be a race where crypto_invoke() returns ERESTART and before we set cc_qblocked to 1, crypto_unblock() is called and sets it to 0. This way we mark device as blocked forever. Fix it by not setting cc_qblocked in the fast path and by protecting crypto_invoke() in the crypto_proc thread with CRYPTO_Q_LOCK(). This won't slow things down, because there is no contention - we have only one crypto thread. Actually it can be slightly faster, because we save two atomic ops per crypto request. The fast code path remains lock-less. END