History

[PATCH] Change synchronize_kernel to _rcu and _sched

This patch changes calls to synchronize_kernel(), deprecated in the earlier "Deprecate synchronize_kernel, GPL replacement" patch to instead call the new synchronize_rcu() and synchronize_sched() APIs.

Paul E. McKenney committed 21 years ago

Commit fbd568a1 parent 9b06e8116 files · +18 −18Browse files

Unified · Split

16 files
  1. arch/i386/oprofile/nmi_timer_int.c +1 −1
  2. arch/ppc64/kernel/HvLpEvent.c +1 −1
  3. drivers/acpi/processor_idle.c +1 −1
  4. drivers/char/ipmi/ipmi_si_intf.c +2 −2
  5. drivers/input/keyboard/atkbd.c +1 −1
  6. drivers/md/multipath.c +1 −1
  7. drivers/md/raid1.c +1 −1
  8. drivers/md/raid10.c +1 −1
  9. drivers/md/raid5.c +1 −1
  10. drivers/md/raid6main.c +1 −1
  11. drivers/net/r8169.c +1 −1
  12. drivers/s390/cio/airq.c +2 −2
  13. kernel/module.c +1 −1
  14. kernel/profile.c +1 −1
  15. mm/slab.c +1 −1
  16. net/core/dev.c +1 −1
arch/i386/oprofile/nmi_timer_int.c+1−1
@@ -36,7 +36,7 @@ static void timer_stop(void) · 35 unmodified lines
36{36{
37 enable_timer_nmi_watchdog();37 enable_timer_nmi_watchdog();
38 unset_nmi_callback();38 unset_nmi_callback();
39 synchronize_kernel();39 synchronize_sched(); /* Allow already-started NMIs to complete. */
40}40}
41 41
42 42
arch/ppc64/kernel/HvLpEvent.c+1−1
@@ -45,7 +45,7 @@ int HvLpEvent_unregisterHandler( HvLpEvent_Type eventType ) · 44 unmodified lines
45 /* We now sleep until all other CPUs have scheduled. This ensures that45 /* We now sleep until all other CPUs have scheduled. This ensures that
46 * the deletion is seen by all other CPUs, and that the deleted handler46 * the deletion is seen by all other CPUs, and that the deleted handler
47 * isn't still running on another CPU when we return. */47 * isn't still running on another CPU when we return. */
48 synchronize_kernel();48 synchronize_rcu();
49 }49 }
50 }50 }
51 return rc;51 return rc;
drivers/acpi/processor_idle.c+1−1
@@ -838,7 +838,7 @@ int acpi_processor_cst_has_changed (struct acpi_processor *pr) · 837 unmodified lines
838 838
839 /* Fall back to the default idle loop */839 /* Fall back to the default idle loop */
840 pm_idle = pm_idle_save;840 pm_idle = pm_idle_save;
841 synchronize_kernel();841 synchronize_sched(); /* Relies on interrupts forcing exit from idle. */
842 842
843 pr->flags.power = 0;843 pr->flags.power = 0;
844 result = acpi_processor_get_power_info(pr);844 result = acpi_processor_get_power_info(pr);
drivers/char/ipmi/ipmi_si_intf.c+2−2
@@ -2199,7 +2199,7 @@ static int init_one_smi(int intf_num, struct smi_info **smi) · 2198 unmodified lines
2199 /* Wait until we know that we are out of any interrupt2199 /* Wait until we know that we are out of any interrupt
2200 handlers might have been running before we freed the2200 handlers might have been running before we freed the
2201 interrupt. */2201 interrupt. */
2202 synchronize_kernel();2202 synchronize_sched();
2203 2203
2204 if (new_smi->si_sm) {2204 if (new_smi->si_sm) {
2205 if (new_smi->handlers)2205 if (new_smi->handlers)
@@ -2312,7 +2312,7 @@ static void __exit cleanup_one_si(struct smi_info *to_clean) · 106 unmodified lines
2312 /* Wait until we know that we are out of any interrupt2312 /* Wait until we know that we are out of any interrupt
2313 handlers might have been running before we freed the2313 handlers might have been running before we freed the
2314 interrupt. */2314 interrupt. */
2315 synchronize_kernel();2315 synchronize_sched();
2316 2316
2317 /* Wait for the timer to stop. This avoids problems with race2317 /* Wait for the timer to stop. This avoids problems with race
2318 conditions removing the timer here. */2318 conditions removing the timer here. */
drivers/input/keyboard/atkbd.c+1−1
@@ -678,7 +678,7 @@ static void atkbd_disconnect(struct serio *serio) · 677 unmodified lines
678 atkbd_disable(atkbd);678 atkbd_disable(atkbd);
679 679
680 /* make sure we don't have a command in flight */680 /* make sure we don't have a command in flight */
681 synchronize_kernel();681 synchronize_sched(); /* Allow atkbd_interrupt()s to complete. */
682 flush_scheduled_work();682 flush_scheduled_work();
683 683
684 device_remove_file(&serio->dev, &atkbd_attr_extra);684 device_remove_file(&serio->dev, &atkbd_attr_extra);
drivers/md/multipath.c+1−1
@@ -355,7 +355,7 @@ static int multipath_remove_disk(mddev_t *mddev, int number) · 354 unmodified lines
355 goto abort;355 goto abort;
356 }356 }
357 p->rdev = NULL;357 p->rdev = NULL;
358 synchronize_kernel();358 synchronize_rcu();
359 if (atomic_read(&rdev->nr_pending)) {359 if (atomic_read(&rdev->nr_pending)) {
360 /* lost the race, try later */360 /* lost the race, try later */
361 err = -EBUSY;361 err = -EBUSY;
drivers/md/raid1.c+1−1
@@ -797,7 +797,7 @@ static int raid1_remove_disk(mddev_t *mddev, int number) · 796 unmodified lines
797 goto abort;797 goto abort;
798 }798 }
799 p->rdev = NULL;799 p->rdev = NULL;
800 synchronize_kernel();800 synchronize_rcu();
801 if (atomic_read(&rdev->nr_pending)) {801 if (atomic_read(&rdev->nr_pending)) {
802 /* lost the race, try later */802 /* lost the race, try later */
803 err = -EBUSY;803 err = -EBUSY;
drivers/md/raid10.c+1−1
@@ -977,7 +977,7 @@ static int raid10_remove_disk(mddev_t *mddev, int number) · 976 unmodified lines
977 goto abort;977 goto abort;
978 }978 }
979 p->rdev = NULL;979 p->rdev = NULL;
980 synchronize_kernel();980 synchronize_rcu();
981 if (atomic_read(&rdev->nr_pending)) {981 if (atomic_read(&rdev->nr_pending)) {
982 /* lost the race, try later */982 /* lost the race, try later */
983 err = -EBUSY;983 err = -EBUSY;
drivers/md/raid5.c+1−1
@@ -1873,7 +1873,7 @@ static int raid5_remove_disk(mddev_t *mddev, int number) · 1872 unmodified lines
1873 goto abort;1873 goto abort;
1874 }1874 }
1875 p->rdev = NULL;1875 p->rdev = NULL;
1876 synchronize_kernel();1876 synchronize_rcu();
1877 if (atomic_read(&rdev->nr_pending)) {1877 if (atomic_read(&rdev->nr_pending)) {
1878 /* lost the race, try later */1878 /* lost the race, try later */
1879 err = -EBUSY;1879 err = -EBUSY;
drivers/md/raid6main.c+1−1
@@ -2038,7 +2038,7 @@ static int raid6_remove_disk(mddev_t *mddev, int number) · 2037 unmodified lines
2038 goto abort;2038 goto abort;
2039 }2039 }
2040 p->rdev = NULL;2040 p->rdev = NULL;
2041 synchronize_kernel();2041 synchronize_rcu();
2042 if (atomic_read(&rdev->nr_pending)) {2042 if (atomic_read(&rdev->nr_pending)) {
2043 /* lost the race, try later */2043 /* lost the race, try later */
2044 err = -EBUSY;2044 err = -EBUSY;
drivers/net/r8169.c+1−1
@@ -2385,7 +2385,7 @@ core_down: · 2384 unmodified lines
2385 }2385 }
2386 2386
2387 /* Give a racing hard_start_xmit a few cycles to complete. */2387 /* Give a racing hard_start_xmit a few cycles to complete. */
2388 synchronize_kernel();2388 synchronize_sched(); /* FIXME: should this be synchronize_irq()? */
2389 2389
2390 /*2390 /*
2391 * And now for the 50k$ question: are IRQ disabled or not ?2391 * And now for the 50k$ question: are IRQ disabled or not ?
drivers/s390/cio/airq.c+2−2
@@ -45,7 +45,7 @@ s390_register_adapter_interrupt (adapter_int_handler_t handler) · 44 unmodified lines
45 else45 else
46 ret = (cmpxchg(&adapter_handler, NULL, handler) ? -EBUSY : 0);46 ret = (cmpxchg(&adapter_handler, NULL, handler) ? -EBUSY : 0);
47 if (!ret)47 if (!ret)
48 synchronize_kernel();48 synchronize_sched(); /* Allow interrupts to complete. */
49 49
50 sprintf (dbf_txt, "ret:%d", ret);50 sprintf (dbf_txt, "ret:%d", ret);
51 CIO_TRACE_EVENT (4, dbf_txt);51 CIO_TRACE_EVENT (4, dbf_txt);
@@ -65,7 +65,7 @@ s390_unregister_adapter_interrupt (adapter_int_handler_t handler) · 13 unmodified lines
65 ret = -EINVAL;65 ret = -EINVAL;
66 else {66 else {
67 adapter_handler = NULL;67 adapter_handler = NULL;
68 synchronize_kernel();68 synchronize_sched(); /* Allow interrupts to complete. */
69 ret = 0;69 ret = 0;
70 }70 }
71 sprintf (dbf_txt, "ret:%d", ret);71 sprintf (dbf_txt, "ret:%d", ret);
kernel/module.c+1−1
@@ -1801,7 +1801,7 @@ sys_init_module(void __user *umod, · 1800 unmodified lines
1801 /* Init routine failed: abort. Try to protect us from1801 /* Init routine failed: abort. Try to protect us from
1802 buggy refcounters. */1802 buggy refcounters. */
1803 mod->state = MODULE_STATE_GOING;1803 mod->state = MODULE_STATE_GOING;
1804 synchronize_kernel();1804 synchronize_sched();
1805 if (mod->unsafe)1805 if (mod->unsafe)
1806 printk(KERN_ERR "%s: module is now stuck!\n",1806 printk(KERN_ERR "%s: module is now stuck!\n",
1807 mod->name);1807 mod->name);
kernel/profile.c+1−1
@@ -184,7 +184,7 @@ void unregister_timer_hook(int (*hook)(struct pt_regs *)) · 183 unmodified lines
184 WARN_ON(hook != timer_hook);184 WARN_ON(hook != timer_hook);
185 timer_hook = NULL;185 timer_hook = NULL;
186 /* make sure all CPUs see the NULL hook */186 /* make sure all CPUs see the NULL hook */
187 synchronize_kernel();187 synchronize_sched(); /* Allow ongoing interrupts to complete. */
188}188}
189 189
190EXPORT_SYMBOL_GPL(register_timer_hook);190EXPORT_SYMBOL_GPL(register_timer_hook);
mm/slab.c+1−1
@@ -1666,7 +1666,7 @@ int kmem_cache_destroy(kmem_cache_t * cachep) · 1665 unmodified lines
1666 }1666 }
1667 1667
1668 if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU))1668 if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU))
1669 synchronize_kernel();1669 synchronize_rcu();
1670 1670
1671 /* no cpu_online check required here since we clear the percpu1671 /* no cpu_online check required here since we clear the percpu
1672 * array on cpu offline and set this to NULL.1672 * array on cpu offline and set this to NULL.
net/core/dev.c+1−1
@@ -3091,7 +3091,7 @@ void free_netdev(struct net_device *dev) · 3090 unmodified lines
3091void synchronize_net(void) 3091void synchronize_net(void)
3092{3092{
3093 might_sleep();3093 might_sleep();
3094 synchronize_kernel();3094 synchronize_rcu();
3095}3095}
3096 3096
3097/**3097/**