From: Matt Mackall <mpm@selenic.com>
To: Christophe Saout <christophe@saout.de>
Cc: Jean-Luc Cooke <jlcooke@certainkey.com>,
Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org,
James Morris <jmorris@intercode.com.au>
Subject: Re: [PATCH/proposal] dm-crypt: add digest-based iv generation mode
Date: Tue, 24 Feb 2004 14:38:25 -0600 [thread overview]
Message-ID: <20040224203825.GV3883@waste.org> (raw)
In-Reply-To: <1077651839.11170.4.camel@leto.cs.pocnet.net>
On Tue, Feb 24, 2004 at 08:43:59PM +0100, Christophe Saout wrote:
>
> BTW: I think there's a bug in the ipv6 code, it uses spin_lock to
> protect itself, this will cause a sleep-inside-spinlock warning. (found
> while grepping through the source for other cryptoapi users)
Yep, I sent this to James several months ago but it appears we've both
forgotten about it:
diff -urN -X dontdiff orig/crypto/api.c work/crypto/api.c
--- orig/crypto/api.c 2003-07-13 22:38:38.000000000 -0500
+++ work/crypto/api.c 2003-08-14 01:53:07.000000000 -0500
@@ -53,7 +53,8 @@
static int crypto_init_flags(struct crypto_tfm *tfm, u32 flags)
{
- tfm->crt_flags = 0;
+ tfm->crt_flags = flags & CRYPTO_TFM_API_MASK;
+ flags &= ~CRYPTO_TFM_API_MASK;
switch (crypto_tfm_alg_type(tfm)) {
case CRYPTO_ALG_TYPE_CIPHER:
diff -urN -X dontdiff orig/crypto/internal.h work/crypto/internal.h
--- orig/crypto/internal.h 2003-07-13 22:29:11.000000000 -0500
+++ work/crypto/internal.h 2003-08-14 01:53:28.000000000 -0500
@@ -37,7 +37,7 @@
static inline void crypto_yield(struct crypto_tfm *tfm)
{
- if (!in_softirq())
+ if (tfm->crt_flags & CRYPTO_TFM_API_YIELD)
cond_resched();
}
diff -urN -X dontdiff orig/include/linux/crypto.h work/include/linux/crypto.h
--- orig/include/linux/crypto.h 2003-07-13 22:32:32.000000000 -0500
+++ work/include/linux/crypto.h 2003-08-14 01:53:07.000000000 -0500
@@ -36,7 +36,8 @@
*/
#define CRYPTO_TFM_MODE_MASK 0x000000ff
#define CRYPTO_TFM_REQ_MASK 0x000fff00
-#define CRYPTO_TFM_RES_MASK 0xfff00000
+#define CRYPTO_TFM_RES_MASK 0x7ff00000
+#define CRYPTO_TFM_API_MASK 0x80000000
#define CRYPTO_TFM_MODE_ECB 0x00000001
#define CRYPTO_TFM_MODE_CBC 0x00000002
@@ -50,6 +51,9 @@
#define CRYPTO_TFM_RES_BAD_BLOCK_LEN 0x00800000
#define CRYPTO_TFM_RES_BAD_FLAGS 0x01000000
+/* Allow for rescheduling after processing each sg element */
+#define CRYPTO_TFM_API_YIELD 0x80000000
+
/*
* Miscellaneous stuff.
*/
diff -urN -X dontdiff orig/include/linux/sched.h work/include/linux/sched.h
--- orig/include/linux/sched.h 2003-08-14 01:53:04.000000000 -0500
+++ work/include/linux/sched.h 2003-08-14 01:53:07.000000000 -0500
@@ -824,6 +824,7 @@
extern void __cond_resched(void);
static inline void cond_resched(void)
{
+ might_sleep();
if (need_resched())
__cond_resched();
}
> > Something like:
> >
> > /* calculate the size of a tfm so that users can manage their own
> > copies */
> >
> > int crypto_alg_size(const char *name);
>
> crypto_tfm_size?
Sure.
> > /* copy a TFM to a user-managed buffer, possibly on stack, with proper
> > internal reference counting and any other necessary magic, size checks
> > against boneheaded buffer sizing */
> >
> > crypto_copy_tfm(char *dst, const struct crypto_tfm *src, int size);
> >
> > /* do all the necessary bookkeeping to release a user-managed TFM, use
> > char pointer to avoid alloc/free mismatch */
> >
> > crypto_copy_cleanup_tfm(char *usertfm);
>
> Yes, I thought of something like this.
Ok, I might get to this by this afternoon.
--
Matt Mackall : http://www.selenic.com : Linux development and consulting
next prev parent reply other threads:[~2004-02-24 20:41 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-19 17:02 [PATCH/proposal] dm-crypt: add digest-based iv generation mode Christophe Saout
2004-02-19 19:18 ` Andrew Morton
2004-02-20 17:14 ` Jean-Luc Cooke
2004-02-20 18:53 ` Christophe Saout
2004-02-20 19:09 ` Jean-Luc Cooke
2004-02-20 19:23 ` Christophe Saout
2004-02-20 21:23 ` James Morris
2004-02-20 22:40 ` Christophe Saout
2004-02-21 0:07 ` James Morris
2004-02-21 2:17 ` Christophe Saout
2004-02-24 19:11 ` Matt Mackall
2004-02-24 19:43 ` Christophe Saout
2004-02-24 20:38 ` Matt Mackall [this message]
2004-02-25 21:43 ` Matt Mackall
2004-02-26 19:35 ` Christophe Saout
2004-02-26 20:02 ` Matt Mackall
2004-02-27 16:05 ` Christophe Saout
2004-02-27 18:37 ` Christophe Saout
2004-02-27 20:02 ` Matt Mackall
2004-02-27 20:13 ` Christophe Saout
2004-02-27 20:55 ` Matt Mackall
2004-02-27 21:16 ` Christophe Saout
2004-02-28 0:39 ` Matt Mackall
2004-02-28 13:02 ` Christophe Saout
2004-02-24 22:26 ` James Morris
2004-02-24 22:31 ` Christophe Saout
2004-02-24 22:45 ` James Morris
2004-02-24 20:01 ` James Morris
2004-02-24 20:24 ` Matt Mackall
2004-02-25 2:25 ` Christophe Saout
2004-02-25 3:05 ` Jean-Luc Cooke
2004-02-23 0:35 ` Fruhwirth Clemens
2004-02-23 13:44 ` Jean-Luc Cooke
2004-02-23 15:36 ` James Morris
[not found] <20040223214738.GD24799@certainkey.com>
[not found] ` <Xine.LNX.4.44.0402231710390.21142-100000@thoron.boston.redhat.com>
2004-02-24 20:22 ` Jean-Luc Cooke
2004-02-24 22:17 ` James Morris
2004-02-24 22:44 ` Jean-Luc Cooke
2004-02-25 13:52 ` James Morris
2004-02-25 15:11 ` Jean-Luc Cooke
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=20040224203825.GV3883@waste.org \
--to=mpm@selenic.com \
--cc=akpm@osdl.org \
--cc=christophe@saout.de \
--cc=jlcooke@certainkey.com \
--cc=jmorris@intercode.com.au \
--cc=linux-kernel@vger.kernel.org \
/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.