On Fri, Jul 07, 2017 at 10:31:28AM +0200, Ingo Molnar wrote: > Here's a quick list of all the use cases: > > net/netfilter/nf_conntrack_core.c: > > - This is I believe the 'original', historic spin_unlock_wait() usecase > that > still exists in the kernel. spin_unlock_wait() is only used in a rare > case, > when the netfilter hash is resized via nf_conntrack_hash_resize() - > which is > a very heavy operation to begin with. It will no doubt get slower with > the > proposed changes, but it probably does not matter. A networking person > Acked-by would be nice though. > > drivers/ata/libata-eh.c: > > - Locking of the ATA port in ata_scsi_cmd_error_handler(), presumably this > can > race with IRQs and ioctls() on other CPUs. Very likely not performance > sensitive in any fashion, on IO errors things stop for many seconds > anyway. > > ipc/sem.c: > > - A rare race condition branch in the SysV IPC semaphore freeing code in > exit_sem() - where even the main code flow is not performance sensitive, > because typical database workloads get their semaphore arrays during > startup > and don't ever do heavy runtime allocation/freeing of them. > > kernel/sched/completion.c: > > - completion_done(). This is actually a (comparatively) rarely used > completion > API call - almost all the upstream usecases are in drivers, plus two in > filesystems - neither usecase seems in a performance critical hot path. > Completions typically involve scheduling and context switching, so in > the > worst case the proposed change adds overhead to a scheduling slow path. >
You missed the one in do_exit(), which I thought was the original one.