theoretical rpcsec_gss deadlock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The rpcsec_gss code used for NFS currently does basically the
following to create a checksum for each rpc:

  crypto_alloc_hash()
  crypto_hash_init()
  crypto_hash_update() ...
  crypto_hash_final()
  crypto_free_hash()

The crypto_alloc_hash() poses a possible deadlock situation.
(Although it hasn't been a problem so far in practice.)  It would be
preferable to allocate the transform once in a context (shared by
multiple tasks).  However, doing so seems to cause problems with bad
checksums.  We'd rather not have to add a spinlock to serialize its
use.  Is there a way to allocate state information on the stack (or
elsewhere) such that the transform can be shared simultaneously?

Herbert, Bruce Fields says you suggested a while back that an
interface was already there, or was being planned?  Can you give me
any details?  Could we possibly help?

Another question:  The current checksum code deals only with "md5".
Support for newer Kerberos encryption types uses keyed hashes.  In an
extreme case, support for the rc4-hmac Kerberos encryption type
requires a new hash key be derived for each rpc.  Would this interface
be able to deal with changing keys as well?  In that same case, the
"rc4" cipher key changes with each rpc as well.

Thanks,
K.C.
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux