[CRYPTO] all: Check for usage in hard IRQ context
[linux-3.10.git] / crypto / blkcipher.c
index 6e93004f2181ccb3f265994cf9806db528641796..cbb4c4e5c229ca2ecd52b4ebdebb9027e4b42503 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <linux/crypto.h>
 #include <linux/errno.h>
+#include <linux/hardirq.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/scatterlist.h>
@@ -313,6 +314,9 @@ static int blkcipher_walk_first(struct blkcipher_desc *desc,
        struct crypto_blkcipher *tfm = desc->tfm;
        unsigned int alignmask = crypto_blkcipher_alignmask(tfm);
 
+       if (WARN_ON_ONCE(in_irq()))
+               return -EDEADLK;
+
        walk->nbytes = walk->total;
        if (unlikely(!walk->total))
                return 0;