Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm...
[pandora-kernel.git] / kernel / timer.c
index 67316cb..6ec7e7e 100644 (file)
@@ -861,7 +861,13 @@ EXPORT_SYMBOL(mod_timer);
  *
  * mod_timer_pinned() is a way to update the expire field of an
  * active timer (if the timer is inactive it will be activated)
- * and not allow the timer to be migrated to a different CPU.
+ * and to ensure that the timer is scheduled on the current CPU.
+ *
+ * Note that this does not prevent the timer from being migrated
+ * when the current CPU goes offline.  If this is a problem for
+ * you, use CPU-hotplug notifiers to handle it correctly, for
+ * example, cancelling the timer when the corresponding CPU goes
+ * offline.
  *
  * mod_timer_pinned(timer, expires) is equivalent to:
  *
@@ -1102,7 +1108,9 @@ static void call_timer_fn(struct timer_list *timer, void (*fn)(unsigned long),
         * warnings as well as problems when looking into
         * timer->lockdep_map, make a copy and use that here.
         */
-       struct lockdep_map lockdep_map = timer->lockdep_map;
+       struct lockdep_map lockdep_map;
+
+       lockdep_copy_map(&lockdep_map, &timer->lockdep_map);
 #endif
        /*
         * Couple the lock chain with the lock chain at