]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
um: Remove locking in deactivate_all_fds()
authorJohannes Berg <johannes.berg@intel.com>
Fri, 24 May 2019 19:37:00 +0000 (21:37 +0200)
committerRichard Weinberger <richard@nod.at>
Tue, 2 Jul 2019 21:27:05 +0000 (23:27 +0200)
Not only does the locking contradict the comment, and as
the comment says is pointless and actually harmful (all
the actual OS threads have exited already), but it also
causes crashes when lockdep is enabled, because calling
into the spinlock calls into lockdep, which then tries
to determine the current task, which no longer exists.

Remove the locking to let UML shut down cleanly in case
lockdep is enabled.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/kernel/irq.c

index b40dac71e25babb1f84e74fc4a29bdf690978b76..d532377f58080d27148fcb298bfbaadba8494186 100644 (file)
@@ -384,10 +384,8 @@ EXPORT_SYMBOL(deactivate_fd);
  */
 int deactivate_all_fds(void)
 {
-       unsigned long flags;
        struct irq_entry *to_free;
 
-       spin_lock_irqsave(&irq_lock, flags);
        /* Stop IO. The IRQ loop has no lock so this is our
         * only way of making sure we are safe to dispose
         * of all IRQ handlers
@@ -404,7 +402,6 @@ int deactivate_all_fds(void)
                to_free = to_free->next;
        }
        garbage_collect_irq_entries();
-       spin_unlock_irqrestore(&irq_lock, flags);
        os_close_epoll_fd();
        return 0;
 }