aboutsummaryrefslogtreecommitdiffstats
path: root/net/rose/rose_route.c
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2010-07-30 19:56:39 -0400
committerDavid S. Miller <davem@davemloft.net>2010-08-01 03:32:12 -0400
commite2e0c7c9ddbe6b79fe647aca5eea3a405d38ada4 (patch)
tree2caf75dd8e741a2df698a1491d15414e11598960 /net/rose/rose_route.c
parent0fc48c37ff3969dde71a43fa7c8f176d4bd90a3e (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>
Diffstat (limited to 'net/rose/rose_route.c')
-rw-r--r--net/rose/rose_route.c4
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;