[CRYPTO] cryptd: Fix problem with cryptd and the freezer
Rafael J. Wysocki [Thu, 31 May 2007 08:10:22 +0000 (18:10 +1000)]
Make sure that cryptd is marked as nonfreezable and does not hold up the
freezer.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

crypto/cryptd.c

index 3ff4e1f..ac6dce2 100644 (file)
@@ -298,7 +298,7 @@ static inline int cryptd_create_thread(struct cryptd_state *state,
        mutex_init(&state->mutex);
        crypto_init_queue(&state->queue, CRYPTD_MAX_QLEN);
 
-       state->task = kthread_create(fn, state, name);
+       state->task = kthread_run(fn, state, name);
        if (IS_ERR(state->task))
                return PTR_ERR(state->task);
 
@@ -316,6 +316,8 @@ static int cryptd_thread(void *data)
        struct cryptd_state *state = data;
        int stop;
 
+       current->flags |= PF_NOFREEZE;
+
        do {
                struct crypto_async_request *req, *backlog;