All of lore.kernel.org
 help / color / mirror / Atom feed
From: Theodore Ts'o <tytso@mit.edu>
To: Stephan Mueller <smueller@chronox.de>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
	pebolle@tiscali.nl, andreas.steffen@strongswan.org,
	sandyinchina@gmail.com, linux-kernel@vger.kernel.org,
	linux-crypto@vger.kernel.org
Subject: Re: [PATCH v6 1/5] random: Blocking API for accessing nonblocking_pool
Date: Mon, 18 May 2015 11:02:34 -0400	[thread overview]
Message-ID: <20150518150234.GA4180@thunk.org> (raw)
In-Reply-To: <2931045.EGfWxfUOa7@tauon>

On Mon, May 18, 2015 at 03:26:13PM +0200, Stephan Mueller wrote:
> 
> I am just running into an interesting problem with a missing cancel operation: 
> a caller instantiates a DRBG handle and invokes the seeding operation. The 
> nonblocking_pool is not initialized. Therefore, the callback is put onto the 
> list for being processed later.
> 
> Now, the caller releases the DRBG handle *before* the callback is triggered.
> 
> The callback is triggered with a pointer that is invalid, but the pointer is 
> non-NULL. Therefore, I am not sure how to validate the pointer in the callback 
> function.

The simplest thing to do is to put a refcount on inside the DRBG
handle structure.  The caller instantiates the DRBG handle, and
invokes the the DRBG.  The DRBG, since it is kicking off an
asynchronous operation, increments the refcount.

Both the caller and the callback function, before they exit, drop the
refcount, and if they see the refcount is zero, they free the DRBG
handle and the memory where the random seed is to be (or has been)
deposited.

This is the same pattern that the block I/O layer uses with a bio
struct.  In the BIO case, it's important since the callback function
could have been called and returned before the caller gets control
back from the bio_submit() call.  Or the struct bio may contain an
EOPNOTSUPP error, in which case there will be no callback function
dispatched.  So long as everyone handles the refcount rules, it all
works out.

Regards,

					- Ted

  reply	other threads:[~2015-05-18 15:02 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-13 19:54 [PATCH v6 0/5] Seeding DRBG with more entropy Stephan Mueller
2015-05-13 19:54 ` [PATCH v6 1/5] random: Blocking API for accessing nonblocking_pool Stephan Mueller
2015-05-15  6:46   ` Herbert Xu
2015-05-18  5:32     ` Stephan Mueller
2015-05-18  9:21       ` Herbert Xu
2015-05-18 13:07         ` Stephan Mueller
2015-05-18 13:26           ` Stephan Mueller
2015-05-18 15:02             ` Theodore Ts'o [this message]
2015-05-19  5:58               ` Stephan Mueller
2015-05-19  7:22                 ` Herbert Xu
2015-05-19  7:35                   ` Stephan Mueller
2015-05-19  7:51                     ` Herbert Xu
2015-05-19  7:56                       ` Stephan Mueller
2015-05-19 13:50                       ` Theodore Ts'o
2015-05-19 14:18                         ` Herbert Xu
2015-05-19 14:27                           ` Stephan Mueller
2015-05-19 14:30                             ` Herbert Xu
2015-05-19 14:36                               ` Stephan Mueller
2015-05-19 22:55                                 ` Herbert Xu
2015-05-20  6:13                                   ` Stephan Mueller
2015-06-05  5:28                           ` Herbert Xu
2015-06-05  9:50                             ` Stephan Mueller
2015-05-13 19:55 ` [PATCH v6 2/5] crypto: drbg - prepare for async seeding Stephan Mueller
2015-05-13 19:55 ` [PATCH v6 3/5] crypto: drbg - add async seeding operation Stephan Mueller
2015-05-13 19:56 ` [PATCH v6 4/5] crypto: drbg - use Jitter RNG to obtain seed Stephan Mueller
2015-05-13 19:56 ` [PATCH v6 5/5] crypto: add jitterentropy RNG Stephan Mueller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150518150234.GA4180@thunk.org \
    --to=tytso@mit.edu \
    --cc=andreas.steffen@strongswan.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pebolle@tiscali.nl \
    --cc=sandyinchina@gmail.com \
    --cc=smueller@chronox.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.