From: Mikulas Patocka Date: Fri, 13 Feb 2015 13:24:41 +0000 (-0500) Subject: dm crypt: avoid deadlock in mempools X-Git-Tag: omap-for-v4.1/prcm-dts-mfd-syscon-fix~12^2~6 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7145c241a1bf2841952c3e297c4080b357b3e52d;p=pandora-kernel.git dm crypt: avoid deadlock in mempools Fix a theoretical deadlock introduced in the previous commit ("dm crypt: don't allocate pages for a partial request"). The function crypt_alloc_buffer may be called concurrently. If we allocate from the mempool concurrently, there is a possibility of deadlock. For example, if we have mempool of 256 pages, two processes, each wanting 256, pages allocate from the mempool concurrently, it may deadlock in a situation where both processes have allocated 128 pages and the mempool is exhausted. To avoid such a scenario we allocate the pages under a mutex. In order to not degrade performance with excessive locking, we try non-blocking allocations without a mutex first and if that fails, we fallback to a blocking allocations with a mutex. Signed-off-by: Mikulas Patocka Signed-off-by: Mike Snitzer --- Reading git-diff-tree failed