diff options
author | Julia Lawall <julia@diku.dk> | 2010-07-30 19:56:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-08-01 03:32:12 -0400 |
commit | e2e0c7c9ddbe6b79fe647aca5eea3a405d38ada4 (patch) | |
tree | 2caf75dd8e741a2df698a1491d15414e11598960 | |
parent | 0fc48c37ff3969dde71a43fa7c8f176d4bd90a3e (diff) |
net/rose: Use GFP_ATOMIC
The other calls to kmalloc in the same function use GFP_ATOMIC, and indeed
two locks are held within the body of the function.
The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@@ identifier f; @@
*f(...,GFP_ATOMIC,...)
... when != spin_unlock(...)
when != read_unlock(...)
when != write_unlock(...)
when != read_unlock_irq(...)
when != write_unlock_irq(...)
when != read_unlock_irqrestore(...)
when != write_unlock_irqrestore(...)
when != spin_unlock_irq(...)
when != spin_unlock_irqrestore(...)
*f(...,GFP_KERNEL,...)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/rose/rose_route.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c index cbc244a128bd..b4fdaac233f7 100644 --- a/net/rose/rose_route.c +++ b/net/rose/rose_route.c | |||
@@ -109,7 +109,9 @@ static int __must_check rose_add_node(struct rose_route_struct *rose_route, | |||
109 | init_timer(&rose_neigh->t0timer); | 109 | init_timer(&rose_neigh->t0timer); |
110 | 110 | ||
111 | if (rose_route->ndigis != 0) { | 111 | if (rose_route->ndigis != 0) { |
112 | if ((rose_neigh->digipeat = kmalloc(sizeof(ax25_digi), GFP_KERNEL)) == NULL) { | 112 | rose_neigh->digipeat = |
113 | kmalloc(sizeof(ax25_digi), GFP_ATOMIC); | ||
114 | if (rose_neigh->digipeat == NULL) { | ||
113 | kfree(rose_neigh); | 115 | kfree(rose_neigh); |
114 | res = -ENOMEM; | 116 | res = -ENOMEM; |
115 | goto out; | 117 | goto out; |