lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Fri, 26 Feb 2016 21:57:17 +0100 (CET)
From:	Julia Lawall <julia.lawall@...6.fr>
To:	Javier González <javier@...igon.com>
cc:	Matias Bjorling <mb@...htnvm.io>, linux-block@...r.kernel.org,
	linux-kernel@...r.kernel.org, kbuild-all@...org
Subject: [PATCH] pblk: fix call_kern.cocci warnings

Convert GFP_KERNEL to GFP_ATOMIC in a function that may be called with 
locks held.

See the call site on line 751, and the call to spin_lock on line 744.

Generated by: scripts/coccinelle/locks/call_kern.cocci

Signed-off-by: Fengguang Wu <fengguang.wu@...el.com>
Signed-off-by: Julia Lawall <julia.lawall@...6.fr>
---

Perhaps there is a way to reorganize the code such that pblk_get_blk is 
not called under the lock.

tree:   https://github.com/OpenChannelSSD/linux.git pblk
head:   01eab75e8310ada5c5d387ee0d77c9051f2ba238
commit: 8e755964c7e8b0266a95fb90557823dacf9da12f [11/21] pblk: do not use 
mempool for write buffer allocation

 pblk.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/lightnvm/pblk.c
+++ b/drivers/lightnvm/pblk.c
@@ -282,14 +282,14 @@ static struct pblk_block *pblk_get_blk(s
 	void *data;
 	int nentries = dev->sec_per_blk;
 
-	data = kmalloc(dev->sec_per_blk * dev->sec_size, GFP_KERNEL);
+	data = kmalloc(dev->sec_per_blk * dev->sec_size, GFP_ATOMIC);
 	if (!data) {
 		pr_err("nvm: pblk: cannot allocate write buffer for block\n");
 		return NULL;
 	}
 
 	entries = kmalloc(dev->sec_per_blk * sizeof(struct buf_entry),
-								GFP_KERNEL);
+								GFP_ATOMIC);
 	if (!entries) {
 		pr_err("nvm: pblk: cannot allocate write buffer for block\n");
 		kfree(data);
@@ -297,7 +297,7 @@ static struct pblk_block *pblk_get_blk(s
 	}
 
 	sync_bitmap = kmalloc(BITS_TO_LONGS(nentries) * sizeof(unsigned long),
-								GFP_KERNEL);
+								GFP_ATOMIC);
 	if (!sync_bitmap) {
 		kfree(data);
 		kfree(entries);

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ