Re: [8/many] acrypto: crypto_dev.c

Evgeniy Polyakov
2005-03-07T23:27:04Z

On Mon, 7 Mar 2005 14:40:52 -0800
Nish Aravamudan <nish.aravamudan@gmail.com> wrote:

> On Mon, 7 Mar 2005 23:37:34 +0300, Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> > --- /tmp/empty/crypto_dev.c 1970-01-01 03:00:00.000000000 +0300
> > +++ ./acrypto/crypto_dev.c 2005-03-07 20:35:36.000000000 +0300
> > @@ -0,0 +1,421 @@
> > +/*
> > + * crypto_dev.c
>
> <snip>
>
> > + while (atomic_read(&__dev->refcnt)) {
> > +
> > + dprintk(KERN_INFO "Waiting for %s to become free: refcnt=%d.\n",
> > + __dev->name, atomic_read(&dev->refcnt));
> > +
> > + /*
> > + * Hack zone: you need to write good ->data_ready()
> > + * and crypto device driver itself.
> > + *
> > + * Driver shoud not buzz if it has pending sessions
> > + * in it's queue and it was removed from global device list.
> > + *
> > + * Although I can workaround it here, for example by
> > + * flushing the whole queue and drop all pending sessions.
> > + */
> > +
> > + __dev->data_ready(__dev);
> > + set_current_state(TASK_UNINTERRUPTIBLE);
> > + schedule_timeout(HZ);
>
> I don't see any wait-queues in the immediate area of this code. Can
> this be an ssleep(1)?

Yes, you are right, this loop just spins until all pending sessions
are removed from given crypto device, so it can just ssleep(1) here.

> Thanks,
> Nish

Evgeniy Polyakov

Only failure makes us experts. -- Theo de Raadt