From b5c80285c9456b60ad5bbe8c1ddc987b2178b5f9 Mon Sep 17 00:00:00 2001 From: Neil Horman Date: Fri, 9 Mar 2012 14:50:19 -0800 Subject: [PATCH] --- yaml --- r: 298279 b: refs/heads/master c: dd060e74fb4c2513420d8af7371cda2f3eea4fa9 h: refs/heads/master i: 298277: 3f62b3e0370ac99410269ec2b0c5fd0a91c6e4dd 298275: 60dcedf9d72f23aa9a4ea1db0e17ec7bae56c50c 298271: 3e8db688eb1232da785c28ce7cde682af891a2ca v: v3 --- [refs] | 2 +- trunk/drivers/scsi/fcoe/fcoe.c | 22 +++------------------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index aac4f8a47ee1..1756c36ee443 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fc05ab74b78a9e16b0faa9f0dc3c87f3f30d3231 +refs/heads/master: dd060e74fb4c2513420d8af7371cda2f3eea4fa9 diff --git a/trunk/drivers/scsi/fcoe/fcoe.c b/trunk/drivers/scsi/fcoe/fcoe.c index 961bf364429a..d86ca37b3787 100644 --- a/trunk/drivers/scsi/fcoe/fcoe.c +++ b/trunk/drivers/scsi/fcoe/fcoe.c @@ -2254,31 +2254,14 @@ static int fcoe_link_ok(struct fc_lport *lport) static void fcoe_percpu_clean(struct fc_lport *lport) { struct fcoe_percpu_s *pp; - struct fcoe_rcv_info *fr; - struct sk_buff_head *list; - struct sk_buff *skb, *next; - struct sk_buff *head; + struct sk_buff *skb; unsigned int cpu; for_each_possible_cpu(cpu) { pp = &per_cpu(fcoe_percpu, cpu); - spin_lock_bh(&pp->fcoe_rx_list.lock); - list = &pp->fcoe_rx_list; - head = list->next; - for (skb = head; skb != (struct sk_buff *)list; - skb = next) { - next = skb->next; - fr = fcoe_dev_from_skb(skb); - if (fr->fr_dev == lport) { - __skb_unlink(skb, list); - kfree_skb(skb); - } - } - if (!pp->thread || !cpu_online(cpu)) { - spin_unlock_bh(&pp->fcoe_rx_list.lock); + if (!pp->thread || !cpu_online(cpu)) continue; - } skb = dev_alloc_skb(0); if (!skb) { @@ -2287,6 +2270,7 @@ static void fcoe_percpu_clean(struct fc_lport *lport) } skb->destructor = fcoe_percpu_flush_done; + spin_lock_bh(&pp->fcoe_rx_list.lock); __skb_queue_tail(&pp->fcoe_rx_list, skb); if (pp->fcoe_rx_list.qlen == 1) wake_up_process(pp->thread);