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
| ||
|
Date: Sun, 23 Jun 2013 19:13:24 +0530 From: "Srivatsa S. Bhat" <srivatsa.bhat@...ux.vnet.ibm.com> To: tglx@...utronix.de, peterz@...radead.org, tj@...nel.org, oleg@...hat.com, paulmck@...ux.vnet.ibm.com, rusty@...tcorp.com.au, mingo@...nel.org, akpm@...ux-foundation.org, namhyung@...nel.org, walken@...gle.com, vincent.guittot@...aro.org, laijs@...fujitsu.com Cc: rostedt@...dmis.org, wangyun@...ux.vnet.ibm.com, xiaoguangrong@...ux.vnet.ibm.com, sbw@....edu, fweisbec@...il.com, zhong@...ux.vnet.ibm.com, nikunj@...ux.vnet.ibm.com, srivatsa.bhat@...ux.vnet.ibm.com, linux-pm@...r.kernel.org, linux-arch@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org, netdev@...r.kernel.org, linux-kernel@...r.kernel.org, Robert Love <robert.w.love@...el.com>, "James E.J. Bottomley" <JBottomley@...allels.com>, devel@...n-fcoe.org, linux-scsi@...r.kernel.org Subject: [PATCH 24/45] [SCSI] fcoe: Use get/put_online_cpus_atomic() to prevent CPU offline Once stop_machine() is gone from the CPU offline path, we won't be able to depend on disabling preemption to prevent CPUs from going offline from under us. Use the get/put_online_cpus_atomic() APIs to prevent CPUs from going offline, while invoking from atomic context. Cc: Robert Love <robert.w.love@...el.com> Cc: "James E.J. Bottomley" <JBottomley@...allels.com> Cc: devel@...n-fcoe.org Cc: linux-scsi@...r.kernel.org Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@...ux.vnet.ibm.com> --- drivers/scsi/fcoe/fcoe.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 292b24f..a107d3c 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -1484,6 +1484,7 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, * was originated, otherwise select cpu using rx exchange id * or fcoe_select_cpu(). */ + get_online_cpus_atomic(); if (ntoh24(fh->fh_f_ctl) & FC_FC_EX_CTX) cpu = ntohs(fh->fh_ox_id) & fc_cpu_mask; else { @@ -1493,8 +1494,10 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, cpu = ntohs(fh->fh_rx_id) & fc_cpu_mask; } - if (cpu >= nr_cpu_ids) + if (cpu >= nr_cpu_ids) { + put_online_cpus_atomic(); goto err; + } fps = &per_cpu(fcoe_percpu, cpu); spin_lock(&fps->fcoe_rx_list.lock); @@ -1514,6 +1517,7 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, spin_lock(&fps->fcoe_rx_list.lock); if (!fps->thread) { spin_unlock(&fps->fcoe_rx_list.lock); + put_online_cpus_atomic(); goto err; } } @@ -1535,6 +1539,7 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, if (fps->thread->state == TASK_INTERRUPTIBLE) wake_up_process(fps->thread); spin_unlock(&fps->fcoe_rx_list.lock); + put_online_cpus_atomic(); return 0; err: -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists