Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1700422
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [patch 3/5] scsi/bnx2i: Prevent recursive cpuhotplug locking |
| Date | 2017-08-01 00:10 +0200 |
| Message-ID | <u9r2V-3nY-3@gated-at.bofh.it> (permalink) |
| References | <u6JfH-3F7-3@gated-at.bofh.it> <u6JfI-3F7-23@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Mon, 24 Jul 2017 12:52:58 +0200 Thomas Gleixner <tglx@linutronix.de> wrote: > The BNX2I module init/exit code installs/removes the hotplug callbacks with > the cpu hotplug lock held. This worked with the old CPU locking > implementation which allowed recursive locking, but with the new percpu > rwsem based mechanism this is not longer allowed. > > Use the _cpuslocked() variants to fix this. > > Reported-by: Steven Rostedt <rostedt@goodmis.org> Tested-by: Steven Rostedt (VMware) <rostedt@goodmis.org> (makes the lockdep splat go away) -- Steve > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > --- > drivers/scsi/bnx2i/bnx2i_init.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > --- a/drivers/scsi/bnx2i/bnx2i_init.c > +++ b/drivers/scsi/bnx2i/bnx2i_init.c > @@ -516,15 +516,16 @@ static int __init bnx2i_mod_init(void) > for_each_online_cpu(cpu) > bnx2i_percpu_thread_create(cpu); > > - err = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, > - "scsi/bnx2i:online", > - bnx2i_cpu_online, NULL); > + err = cpuhp_setup_state_nocalls_cpuslocked(CPUHP_AP_ONLINE_DYN, > + "scsi/bnx2i:online", > + bnx2i_cpu_online, NULL); > if (err < 0) > goto remove_threads; > bnx2i_online_state = err; > > - cpuhp_setup_state_nocalls(CPUHP_SCSI_BNX2I_DEAD, "scsi/bnx2i:dead", > - NULL, bnx2i_cpu_dead); > + cpuhp_setup_state_nocalls_cpuslocked(CPUHP_SCSI_BNX2I_DEAD, > + "scsi/bnx2i:dead", > + NULL, bnx2i_cpu_dead); > put_online_cpus(); > return 0; > > @@ -574,8 +575,8 @@ static void __exit bnx2i_mod_exit(void) > for_each_online_cpu(cpu) > bnx2i_percpu_thread_destroy(cpu); > > - cpuhp_remove_state_nocalls(bnx2i_online_state); > - cpuhp_remove_state_nocalls(CPUHP_SCSI_BNX2I_DEAD); > + cpuhp_remove_state_nocalls_cpuslocked(bnx2i_online_state); > + cpuhp_remove_state_nocalls_cpuslocked(CPUHP_SCSI_BNX2I_DEAD); > put_online_cpus(); > > iscsi_unregister_transport(&bnx2i_iscsi_transport); >
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[patch 0/5] scsi/bnx2*: Plug hotplug race, correct locking and simplify hotplug code Thomas Gleixner <tglx@linutronix.de> - 2017-07-24 13:00 +0200
[patch 3/5] scsi/bnx2i: Prevent recursive cpuhotplug locking Thomas Gleixner <tglx@linutronix.de> - 2017-07-24 13:00 +0200
Re: [patch 3/5] scsi/bnx2i: Prevent recursive cpuhotplug locking Steven Rostedt <rostedt@goodmis.org> - 2017-08-01 00:10 +0200
[patch 5/5] scsi/bnx2i: Simplify cpu hotplug code Thomas Gleixner <tglx@linutronix.de> - 2017-07-24 13:00 +0200
Re: [patch 0/5] scsi/bnx2*: Plug hotplug race, correct locking and simplify hotplug code "Martin K. Petersen" <martin.petersen@oracle.com> - 2017-07-27 04:00 +0200
csiph-web