diff options
author | Seth Jennings <sjenning@linux.vnet.ibm.com> | 2011-08-22 19:30:38 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-23 21:49:33 (GMT) |
commit | dbe82eb1170c0095e0ce89676235e0b27d7040d1 (patch) | |
tree | efe3e871d6c9efd22f0484745a3dbab344231baa /drivers/staging/zcache | |
parent | 58af58007e7bf61ba21133fa42ad2106f72a03a1 (diff) | |
download | linux-dbe82eb1170c0095e0ce89676235e0b27d7040d1.tar.xz |
staging: zcache: fix possible sleep under lock
zcache_new_pool() calls kmalloc() with GFP_KERNEL which has
__GFP_WAIT set. However, zcache_new_pool() gets called on
a stack that holds the swap_lock spinlock, leading to a
possible sleep-with-lock situation. The lock is obtained
in enable_swap_info().
The patch replaces GFP_KERNEL with GFP_ATOMIC.
v2: replace with GFP_ATOMIC, not GFP_IOFS
Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com>
Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/zcache')
-rw-r--r-- | drivers/staging/zcache/zcache-main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c index 855a5bb..cdf0128 100644 --- a/drivers/staging/zcache/zcache-main.c +++ b/drivers/staging/zcache/zcache-main.c @@ -1668,7 +1668,7 @@ static int zcache_new_pool(uint16_t cli_id, uint32_t flags) if (cli == NULL) goto out; atomic_inc(&cli->refcount); - pool = kmalloc(sizeof(struct tmem_pool), GFP_KERNEL); + pool = kmalloc(sizeof(struct tmem_pool), GFP_ATOMIC); if (pool == NULL) { pr_info("zcache: pool creation failed: out of memory\n"); goto out; |